Подтвердить что ты не робот

Репликация базы данных по сети Raspberry Pi

Есть ли у кого-нибудь хорошее предложение о том, какую базу данных я должен использовать, чтобы добиться репликации по переменному числу целей? У меня есть сетчатая сеть серверов Raspberry Pi, каждая из которых может содержать базу данных. Я хочу, чтобы содержимое каждой базы данных было реплицировано по сети, но я не могу гарантировать, какие узлы доступны в любой момент времени.

Большинство баз данных nosql (например, CouchDB, Cassandra) поддерживают только определенные цели в конфигурации.

Итак (предполагая, что nosql является лучшим вариантом базы данных); существует ли база данных nosql, которая может реплицироваться в переменное число целей?

4b9b3361

Ответ 1

Для этого сценария я бы рекомендовал распределенную файловую систему Hadoop (HDFS).

Особенности, которые делают HDFS привлекательным для вашего сценария:

  • Это распределенная файловая система с переменным коэффициентом репликации (по умолчанию 3, с которой практически невозможно потерять данные).
  • Может масштабироваться до тысяч различных машин.
  • Не зависит от высокой доступности отдельных узлов - автоматически обрабатывает сбой node и реплицирует любые данные из сбитых узлов

Что касается реальной базы данных... HBase, Mongo или Cassandra - вот все хорошие варианты, выберите то, что вам больше всего нравится - HDFS позаботится обо всех репликах для вас.

Ответ 2

В соответствии с этим ответом SO:

fooobar.com/questions/258406/...

И, отметив свой сайт, возможно, вы должны проверить Elliptics: http://www.ioremap.net/projects/elliptics/

Сеть не использует выделенные серверы для поддержки метаданных информации, он поддерживает резервное хранение объектов. От малого до среднего размерные тесты записи можно найти на странице eblob.

Ответ 3

По моему опыту Elasticsearch имеет отличное и удобное в использовании управление кластерами, оно поддерживает изящные функции, такие как node автообнаружение, репликация данных, автоматическое перебалансирование и т.д., посмотрите docs. Обычно он используется для репликации данных из другой базы данных, чтобы сделать его доступным для поиска, но я не понимаю, почему его также нельзя было использовать в этом контексте.

В основном, когда вы создаете "таблицу" (называемую "индексом" в ES), вы можете решить, что во сколько "разделов" (называемых "осколками" ) данные должны быть разделены, а ad-hoc установить, сколько (это не соответствует 100% правильной терминологии, поскольку "индекс" может состоять из нескольких "типов", но я думаю, что это лучшая аналогия).

Пример проекта с тремя Pis здесь.

Я тоже немного почитал о Cassandra, и я предполагаю, что у него будут подобные функции, например, разделы и реплики упоминаются здесь.

Ответ 4

Я бы рекомендовал взглянуть на Hazelcast. Они довольно хорошо справляются с репликацией памяти в кластере, который может измениться. Вам нужно будет написать собственный клиент для хранения данных в локальную базу данных по вашему выбору, если вы хотите сохранить постоянную память на диске, но Hazelcast может позаботиться о репликации в кластере в памяти и имеет большую гибкость.