Репликация базы данных по сети Raspberry Pi
Есть ли у кого-нибудь хорошее предложение о том, какую базу данных я должен использовать, чтобы добиться репликации по переменному числу целей?
У меня есть сетчатая сеть серверов Raspberry Pi, каждая из которых может содержать базу данных. Я хочу, чтобы содержимое каждой базы данных было реплицировано по сети, но я не могу гарантировать, какие узлы доступны в любой момент времени.
Большинство баз данных nosql (например, CouchDB, Cassandra) поддерживают только определенные цели в конфигурации.
Итак (предполагая, что nosql является лучшим вариантом базы данных); существует ли база данных nosql, которая может реплицироваться в переменное число целей?
Ответы
Ответ 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 может позаботиться о репликации в кластере в памяти и имеет большую гибкость.
Ответ 5