Birkaç düğüm arasında veri parçalanmadan PostgreSQL üzerinde 100 TB veritabanı (aslında yaklaşık 90 TB) kurmak gerçekçi midir? Benzer kurulumlarla ilgili başarı öyküleri / örnekleri var mı?
Birkaç düğüm arasında veri parçalanmadan PostgreSQL üzerinde 100 TB veritabanı (aslında yaklaşık 90 TB) kurmak gerçekçi midir? Benzer kurulumlarla ilgili başarı öyküleri / örnekleri var mı?
Yanıtlar:
Emilmesi gereken saniyede 50K yazım genellikle zor bir iştir. Oldukça basit kesici uçlara sahip sentetik kıyaslamalarda bile, PostgreSQL'in sınırları yaklaşık 10 K / s civarında maks.
Ayrıca, bu tek PostgreSQL düğümü için G / Ç sistemi RAID 10 ile bile ilginç olacak ve 50K eklerin sadece 50K IOPS'ye eşit olacağı varsayılarak (muhtemelen yanlıştır, ancak veritabanı şemanıza ve dizinlerinize bağlıdır) ), bu yazma işlemlerine zamanında hizmet vermek için birkaç yüz disk satın almanızı engelleyen çok iyi bir dizi ile eşleştirilmiş yaklaşık yüz diske ihtiyacınız olacak.
Parçalama kolaysa ve böyle büyük bir yazma yükü bekliyorsanız parçalama için gidin. Yazmaların ölçeklendirilmesi çok zor olabilir.
Gerçekçi ve çalışacak. Performans, ne kadar RAM'e sahip olduğunuza bağlıdır. RAM ne kadar büyük olursa, önbellek o kadar büyük olur ve PostgreSQL daha uzun süre diske yüklenmeden önce verileri önbelleğe alabilir.
PostgreSQL, verileri önbelleğe yazar ve zaman zaman önbelleği boşaltır. Yani saniyede 50 bin INSERT, 50 bin IOPS'a çevrilmeyecek. Çok daha az olacaktır, çünkü kayıtları bir araya getirip hepsini aynı anda yazacaktır.
Eğer işin büyük kısmı INSERT ise, büyük bir veritabanı sorun değildir. PostgreSQL'in burada ve orada dizinleri değiştirmek zorunda kalacak, ancak bu gerçekten kolay bir iş. Bu boyutta bir veritabanında çok sayıda SELECT varsa, gerçekten parçalamanız gerekir.
Bir keresinde 16 GB'lık bir sunucuda 400 TB'lık bir Oracle DB (Oracle 10g) üzerinde çalıştım. Veritabanı iş yükü de birincil INSERT'lerdi, bu yüzden günde birkaç SELECT ve her gün milyonlarca INSERT idi. Performans sorun olmaktan çok uzaktı.
100 TB'da bazı önemli zorluklarınız var. Bunun sizin için işe yarayıp yaramayacağı, bunları nasıl ele almak istediğinize bağlıdır.
Yazma yükünü absorbe etmek için yeterli yollara ihtiyacınız vardır. Bu yazma yüküne bağlıdır. Ancak yeterince harika bir depolama ile çözülebilir. Hız burada büyük bir sorundur. Benzer şekilde okuma erişimine de dikkatle bakılmalıdır.
Çoğu veritabanı bir grup ufacık tablodan oluşmaz, ancak genellikle db boyutunun yarısına kadar olabilen bir veya iki gerçekten büyük olanlardan oluşur. PostgreSQL'in tablo başına 32 TB sabit sınırı vardır. Bundan sonra tid türü sayfa sayaçları bitiyor. Bu, özel bir PostgreSQL derlemesi veya tablo bölümleme ile yapılabilir, ancak ilk olarak ele alınması gereken ciddi bir sorundur.
PostgreSQL'in çeşitli görevler için ne kadar RAM kullanabileceği konusunda gerçek sınırları vardır. Bu nedenle, daha fazla RAM'e sahip olmak, belirli bir noktanın ötesinde size yardımcı olabilir veya olmayabilir.
Yedeklemeler .... Bu ölçekte yedeklemeler ilginçtir. Bildiğim 60 TB ds fs enstantane yedekleri kullanmak ve daha sonra wal arşivleme için barmen için yedekleri sahte vardı. Bu sahte yedekler, fs anlık görüntü yedeklerinin proxy'leriydi. Dediğim gibi "Onlar sahte yedek değildir. Alternatif yedeklerdir!"
Bu aralığa yaklaşan veritabanları olan insanlar var. Hollanda'da 60 TB PostgreSQL veri tabanına sahip bir bankada çalışan en az bir kişiyle tanıştım. Ancak gerçekten, gerçekten iş yükünüze bağlıdır ve kendi başına büyüklük sorun değildir.