Yanıtlar:
Sorunuza basit bir cevap yok, ama burada düşünülmesi gereken birkaç şey var.
İlk olarak, ölçek endişelenecek tek şey değil. Verilerinizle yaptığınız şey. 500 tablonuz 30 TB veriniz varsa ve çok az raporlama ile basit OLTP yapıyorsanız, çok fazla sorun yaşayacağınızı sanmıyorum. PostgreSQL'de 32TB veri tabanı var. Bununla birlikte, aynı zamanda performans biraz düşecektir çünkü her şeyde diske vurmak zorundadır. Benzer şekilde, eğer veride 50TB varsa, ancak yaklaşık 100 GB'lık sık rastlanan bir isabet setine sahipseniz, o zaman db'nin bu kısmını bellekte tutmak için yeterli RAM'e sahip bir sunucu oluşturabilirsiniz ve altınsınız.
Öte yandan, 1TB veriden modu (en yaygın değer) almaya çalışıyorsanız, hangi sistemi kullandığınızın bir önemi yoktur, bu ağrılı veya keskin olmayan acı verici olacaktır. (Düzenleme: Sharding, aslında, bu sorunu daha da kötüleştirebilir. )
MySQL ve PostgreSQL'de dev db'lerin karşılaştığı en büyük problemler, ikisinin de interquery paralelliğini desteklememesidir. Başka bir deyişle, bir sorgu, tek bir iş parçacığı tarafından tek bir blok olarak çalıştırılır ve parçalara bölünemez ve ayrı olarak çalıştırılamaz. Bu, büyük miktarda veri üzerinde büyük analitik sorgular çalıştırırken genellikle bir sorundur. Postgres-XC ve Green Plum’ın kurtarmaya geldiği yer burasıdır çünkü depolamayı yürütmeden ayırırlar ve bunu koordinatör düzeyinde yapabilirler. Postgres-XC ve Green Plum'ın temelde dahili olarak sharding kullandığını, ancak koordinatörlerin tüm tutarlılığı global olarak uyguladığına dikkat edin.
Sorgu içi paralellik ile sorguyu bozabilir, farklı işlemciler / disk I / O kanallarının parçalarını çalıştırabilir ve bir araya getirilen ve uygulamaya geri döndürülen sonucun parçalarını rapor edebilirsiniz. Yine, bu genellikle işlem işleme yüklerinden ziyade analitik olarak daha faydalıdır.
İkincisi, Vertica veya Greenplum gibi bazı sistemlerin birlikte bilgi sütunlarını depolamasıdır. Bu, sistemi bir OLTP perspektifinden kullanmayı zorlaştırır ve orada performansı azaltır, ancak büyük analitik iş yükleri için performansı büyük ölçüde artırır. Yani bu bir iş yüküne özgü tradeoff.
Cevap Eğer boyutunda 1-2 TB yukarıda aldıktan sonra bunun ne Yani olabilir bulmak Kendinizi sistemleri ve iş yükleri arasındaki dengeleyici bir dizi ile karşı karşıya. Yine bu, veritabanlarına, çalışma setlerinin boyutuna, vb. Özgüdür. Ancak, bu noktada gerçekten kar tanesi sistemlerine, yani iş yükünüze göre benzersiz ve özel olanlar gerekir.
Elbette bu, limitlerin genellikle ölçülebilir olmadığı anlamına gelir.
Düzenleme : Şimdi PostgreSQL'de karar destek ve işlemsel işleme iş yüklerinin bir karışımını ele alan 9TB bir veritabanıyla çalıştım. En büyük zorluk, veri setinin büyük bölümünü vuran sorularınız varsa, cevap için bir süre beklemeniz gerekmesidir.
Bununla birlikte, temellere (indeksler, oto-vakum, bunların düşük seviyede nasıl çalıştıkları, vb. Dahil) ve yeterli bilgi işlem kaynaklarına dikkatle bakıldığında, bunlar tamamen yönetilebilirdir (ve tahmin ediyorum ki, Pg'deki 30TB aralığında iyi yönetilebileceğini tahmin ediyorum).
Düzen2 : Bir kere 100TB'ye yönel. PostgreSQL'de ilk olarak tablo başına 32 TB'a vuracağı için şu anda bu aralığa ölçeklenmeyecek bir tane üzerinde çalışıyorum.