2015-09-11 39 views
19

Czy ktoś ma dobrą sugestię, do jakiej bazy danych powinienem użyć, aby uzyskać replikację w zmiennej liczbie celów? Mam sieć kratową serwerów Raspberry Pi, z których każdy może zawierać bazę danych. Chcę, aby zawartość każdej bazy danych była replikowana w sieci, ale nie mogę zagwarantować, które węzły są dostępne w dowolnym momencie.Replikacja bazy danych na sieci ocznej Raspberry Pi

Większość baz danych nosql (np. CouchDB, Cassandra) obsługuje tylko określone cele w konfiguracji.

Tak (zakładając, że nosql jest najlepszą opcją bazy danych); czy istnieje baza danych nosql, która może replikować do zmiennej liczby celów?

+1

Byłoby dobrze mieć jakieś informacje na temat ilość danych, częstotliwość aktualizacji i usuwanie dodatków oraz dopuszczalne opóźnienie propagacji. Także szybkość, z jaką węzły na stałe dołączają lub opuszczają sieć. – cliffordheath

Odpowiedz

4

W tym scenariuszu polecam Hadoop Distributed File System (HDFS).

funkcje, które sprawiają, HDFS atrakcyjny do scenariusza:

  • Jest to Distributed File System ze zmiennym współczynnikiem replikacji (domyślnie jest 3 co jest prawie niemożliwe, aby utracić dane z).
  • można skalować do tysięcy różnych maszyn
  • nie zależy na wysokiej dostępności poszczególnych węzłów - automatycznie wykrywa awarię węzła i powiela żadnych danych z zatopionych węzłów

Co do rzeczywistej bazy danych ... HBase, Mongo lub Cassandra to dobra opcja, wybierz wszystko, co ci najbardziej odpowiada - HDFS zajmie się całą replikacją.

3

Z mojego doświadczenia wynika, że ​​Elasticsearch ma świetne i łatwe w obsłudze zarządzanie klastrami, obsługuje gotowe funkcje, takie jak automatyczne wykrywanie węzłów, replikacja danych, automatyczne równoważenie itp., Patrz docs. Zwykle używa się go do replikowania danych z innej bazy danych, aby można było je przeszukiwać, ale nie widzę powodu, dla którego nie można byłoby ich użyć również w tym kontekście.

Zasadniczo po utworzeniu "tabeli" (zwanej "indeksem" w ES) można zdecydować, że w ilu "partycjach" (zwanych "odłamkami") dane powinny zostać podzielone na partycje, a ad-hoc ustawić, jak wiele replik tego stołu, które chcesz mieć (to nie 100% pasuje do poprawnej terminologii, ponieważ "indeks" może składać się z wielu "typów", ale uważam, że jest to najlepsza analogia).

Przykładowy projekt z trzema Pisami to here.

Czytałem trochę o Cassandrze i wyobrażam sobie, że miałoby to podobne funkcje, na przykład partycje i repliki są wymienione here.

+1

Inne bazy danych mogą mieć niższe wymagania RAM i CPU, ponieważ Elasticsearch jest zoptymalizowany dla czasów kwerend 10 - 100 ms dla milionów dokumentów. To nie jest zwykły magazyn kluczy i wartości. – NikoNyrh

2

Zalecam przyjrzenie się Hazelcast. Działają całkiem dobrze w replikacji pamięci w klastrze, który może ulec zmianie. Trzeba by napisać klienta niestandardowego do przechowywania danych do lokalnej bazy danych, jeśli chcesz zachować trwałość dysku, ale Hazelcast może zająć się replikacją w klastrze w pamięci i ma dużą elastyczność.

+1

Kilka lat temu mieliśmy Hazelcast działający na grupie urządzeń Raspberry Pi: http://i0.wp.com/venturebeat.com/wp-content/uploads/2013/09/img_20130920_113757.jpg?fit= 800% 2C600 – pveentjer