Який сучасний спосіб розділити PostgreSQL на машинах, коли дані є "природним чином розподіленими"


22

Після кількох років проживання в просторі "NoSQL", тепер у мене є проблема, яка є досить "реляційною" за своєю суттю. Сьогодні я бачу сховища даних зовсім іншими очима, ніж раніше. Такі речі, як Riak, зіпсували мене таким чином, що я більше не можу терпіти поодинокі пункти відмови, «вниз на технічне обслуговування» і т. Д. Звичайно, (або, сподіваюся), я не втратив розуму повністю. Це особистий проект, який не зовсім (або поки що) не має надзвичайно високих вимог.

Більшість ріжучих рішень не дають мені того, чого я хочу (принаймні, на перший погляд), ймовірно, тому, що мою проблему досить "легко" вирішити. Принаймні на концептуальному рівні (ігнорування обмежень, які самі RDBM вносять до таблиці).

  1. У мене є невелика кількість "спільних" даних, які можна вільно дублювати. Він не вимагає жорсткої консистенції. Це може бути збережено в динамоподібній базі даних і буде масштабуватися нескінченно. Але я все-таки хотів би, якщо можливо, перейти з єдиною базою даних.

  2. У мене дуже багато даних "на кожного користувача". Тобто - безліч користувачів, кожен користувач яких має дані абсолютно розумного розміру, дійсно підходить для зберігання в одному вузлі PostgreSQL. Ми максимум про 10 тисяч тисяч записів.

  3. Мені ніколи не потрібно запитувати перехресного користувача, і мені не потрібна атомність між користувачами.

Це звучить надзвичайно просто. Принаймні, коли я дивлюся на це своїми "очима NoSQL".

Ось мої наївні ідеї для початківців:

  1. На самому крайньому рахунку я міг просто серіалізувати цілого користувача як єдиний ключ / значення в Riak. Звичайно, постійна де / серіалізація декількох мегабайт даних буде повільною, і саме тому я розглядаю можливість використання PostgreSQL. Багато Riak K / Vs заборонено, оскільки мені потрібні атомарність / транзакції в межах даних кожного користувача.

  2. Я міг би використовувати базу даних SQLite на користувача та використовувати щось на зразок GlusterFS для надмірності / доступності. Це, мабуть, рішення, яке я виберу, якщо я не можу знайти щось настільки ж добре за допомогою PostgreSQL. Плюси: дійсно добре знижувати / збільшувати масштаб; Мінуси: я вважаю за краще типи та суворість PostgreSQL над SQLite

Отже, що я б в ідеалі вимагав від рішення для загострення PostgreSQL:

  1. Автоматично зберігайте кілька копій даних кожного користувача навколо (на різних машинах). Вміти динамічно перемикати головний вузол на користувача / фрагмента (якщо попередній майстер знижується).
  2. Вміти динамічно збільшувати / зменшувати масштаб, додаючи / видаляючи вузли сервера. Здебільшого, як це вміє робити Riak.
  3. Не вимагайте від моєї програми, щоб знати, з якими вузлами поговорити і коли.

Привіт локс, як ти врешті вирішив цю проблему?
Дікла

Розбиття рівня додатків з кількома сховищами даних. Насправді безладдя :(. Дуже сумно, що щось подібне не існує ...
loxs

Відповіді:



4

Думаю, найкращий варіант - pgpool-II . Ви можете мати до 128 вузлів і

  1. Можливе налаштування складних правил розподілу та розподілу даних
  2. Підтримка "Інтернет-надання". Не пише масштаб, але він читається масштабованим
  3. Не впевнений, якщо можливо, поза коробкою. Можливо, вам потрібно використовувати LVS

Інший варіант може бути Stado

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.