PostgreSQL üzerinde kırılmadan 100 terabayt veritabanı


9

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ı?


4
Bunun iş yükünüze bağlı olduğunu düşünüyorum. Veriler nasıl dağıtılır ve nasıl sorgulanır? Ne tür bir yanıt süresine ihtiyacınız var?
Frank Farmer

Yük profili, sık ekler (zirvede saniyede yaklaşık 50K), nispeten nadiren seçer (kullanıcı ve zaman damgasına göre satır aralığı) olarak tanımlanabilir. Veriler, kullanıcı ve tarih / zaman damgası tarafından kolayca parçalanabilir / bölümlenebilir

Yanıtlar:


9

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.


Katılıyorum. Bu bir ExaData türü sistemin etki alanıdır. Bu üzücü, SSD ile bu günlerde 50 bin IOPS almak oldukça önemsiz - otoh bunlar pahalı olacak. Burada, orta sınıftan üst seviye SAN'a kadar donanım için 7 haneli daha büyük bir bütçe bekliyorum.
TomTom

Evet, "dikey olarak entegre edilmiş çözüm yığını" na gitmek istiyorsanız ExaData bir seçenektir.
pfo

Evet. Böyle bir şey için ciddi avantajlar vardır, hem 100 tb hem de 50.000 iops gerçekten "ucuz" sc çığlık atmaz. Exadata ne yapar - SSD ile tamamen yüklendiğinde 1 milyon IOPS?
TomTom

2
Bu yorumlara eklemek için, bu eklenti hacmine sahip veri hacmini elde etmek için gereken bütçe göz önüne alındığında, ücretli bir SQL motoru kullanmak için cazip olacağımı düşünüyorum, genel bütçenin küçük bir yüzdesi olacak ve siz Çok daha iyi destek alacağım.
Chopper3

Tamamen katılıyorum. Bir SAN için bütçeniz birkaç yüz bine ulaştığında çok fazla değer değişimi olur.
TomTom

1

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ı.


1

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.

  1. 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.

  2. Ç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.

  3. 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.

  4. 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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.