Veriler “doğal olarak bölümlenebilir” olduğunda PostgreSQL'i makineler arasında bölümlemenin modern yolu nedir?


22

Birkaç yıl "NoSQL" alanına girdikten sonra, şimdi doğasında oldukça "ilişkisel" olan bir sorunum var. Bugün veri depolarını öncekinden çok farklı gözlerle görüyorum. Riak gibi şeyler beni tek bir başarısızlık noktasına, "bakım için aşağıya" vb. Daha fazla tahammül etmeyecek şekilde mahvetti. Bu, tamamen (ya da henüz) son derece yüksek gereksinimleri olmayan kişisel bir projedir.

Keskinleştirme çözümlerinin çoğu bana istediğimi vermiyor (en azından bir bakışta), muhtemelen sorunum çözülmesi oldukça "kolay". En azından kavramsal düzeyde (RDBM'lerin kendilerinin masaya getirdiği kısıtlamaları göz ardı ederek).

  1. Serbestçe kopyalanabilen az miktarda "paylaşılan" veri var. Sert tutarlılık şartlarına sahip değildir. Bu bir dinamo benzeri veritabanında saklanabilir ve sonsuz ölçeklenir. Ancak mümkünse yine de tek bir veritabanı ile gitmek istiyorum.

  2. Çok sayıda "kullanıcı başına" veri var. Yani - her kullanıcı kesinlikle makul boyutta veriye sahip, gerçekten tek bir PostgreSQL düğümünde depolanmaya uygun olan birçok kullanıcı. Maksimum 10 binden fazla kayıttan bahsediyoruz.

  3. Asla çapraz kullanıcı sorgulamam gerekmiyor ve çapraz kullanıcı atomikliğine ihtiyacım yok.

Bu elde etmek için son derece kolay geliyor. En azından "NoSQL gözlerimle" baktığımda.

İşte benim saf başlangıç ​​fikirlerim:

  1. En uç noktada, tüm kullanıcıyı Riak'ta tek bir Anahtar / Değer olarak seri hale getirebilirdim. Tabii ki, birkaç megabayt verinin sürekli olarak seri hale getirilmesi / seri hale getirilmesi yavaş olacaktır ve bu yüzden PostgreSQL kullanmayı düşünüyorum. Her kullanıcının verileri içinde atomikliğe / işlemlere ihtiyaç duyduğum için çok sayıda Riak K / V kullanılamaz.

  2. Kullanıcı başına bir SQLite veritabanı kullanabilir ve yedeklilik / kullanılabilirlik için GlusterFS gibi bir şey kullanabilirim. Bu muhtemelen PostgreSQL kullanarak eşit derecede iyi bir şey bulamıyorsam seçeceğim çözüm. Artıları: Gerçekten iyi aşağı / yukarı ölçeklenebilir; Eksileri: PostgreSQL'in türlerini ve SQLite üzerinden katılığını tercih ederim

Öyleyse, bir PostgreSQL paylaşım çözümünden ideal olarak isteyeceğim şey:

  1. Her kullanıcının verisinin birkaç kopyasını otomatik olarak (farklı makinelerde) saklayın. Ana düğümü kullanıcı / parça başına dinamik olarak değiştirebilme (önceki master düşerse).
  2. Sunucu düğümlerini ekleyerek / kaldırarak dinamik olarak yukarı / aşağı ölçeklendirme yapabilme. Çoğunlukla Riak gibi yapabiliyor.
  3. Uygulamamın hangi düğümlerin ne zaman konuşacağını bilmesini istemem.

Selam loxs, sonunda bu problemi nasıl çözdün?
Dikla

Birden fazla veri deposuyla uygulama düzeyinde bölümleme. Oldukça bir karmaşa aslında :(. Gerçekten böyle bir şey olmadığı için üzgünüm ...
loxs 20:14

Yanıtlar:



4

Bence en iyi seçenek pgpool-II . 128 düğüme sahip olabilir ve

  1. Karmaşık bölümleme ve veri dağıtım kurallarını ayarlamak mümkündür
  2. "Çevrimiçi Provizyon" desteği. Ölçeklendirme yazma değil ölçeklenebilir ancak ölçeklenebilir
  3. Emin değilim, mümkünse kullanıma hazır. Belki LVS kullanmalısın

Başka bir seçenek Stado olabilir

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.