2015-09-11 23 views
19

Có ai có đề xuất tốt về cơ sở dữ liệu tôi nên sử dụng không, để đạt được nhân rộng trên một số mục tiêu khác nhau? Tôi có một mạng lưới các máy chủ Raspberry Pi, mỗi máy chủ có thể chứa một cơ sở dữ liệu. Tôi muốn nội dung của mỗi cơ sở dữ liệu được nhân rộng trên mạng, nhưng tôi không thể đảm bảo những nút nào có sẵn tại bất kỳ thời điểm nào.Nhân rộng cơ sở dữ liệu trên mạng lưới Raspberry Pi

Hầu hết các cơ sở dữ liệu nosql (CouchDB, Cassandra chẳng hạn) dường như chỉ hỗ trợ các mục tiêu đã xác định trong cấu hình.

Vì vậy, (giả sử nosql là tùy chọn cơ sở dữ liệu tốt nhất); có một cơ sở dữ liệu nosql có thể nhân rộng với số lượng mục tiêu không?

+1

Nó sẽ là tốt để có một số thông tin về lượng dữ liệu, tần suất cập nhật bổ sung và xóa và độ trễ lan truyền có thể chấp nhận được. Ngoài ra tốc độ các nút vĩnh viễn tham gia hoặc rời khỏi mạng. – cliffordheath

Trả lời

3

Theo này SO câu trả lời:

https://stackoverflow.com/a/8787999/2020565

Và khi cheking trang web của họ, có lẽ bạn nên kiểm tra Elliptics: http://www.ioremap.net/projects/elliptics/

Các mạng không sử dụng các máy chủ chuyên dụng để duy trì các siêu dữ liệu thông tin, nó hỗ trợ lưu trữ các đối tượng thừa. Nhỏ đến trung bình điểm chuẩn ghi có thể được tìm thấy trên trang eblob.

4

Đối với trường hợp này, tôi muốn giới thiệu Hadoop Distributed File System (HDFS).

Các tính năng mà làm cho HDFS hấp dẫn đối với kịch bản của bạn:

  • Nó là một hệ thống tập tin phân phối với yếu tố sao chép biến (mặc định là 3 đó là gần như không thể bị mất dữ liệu với).
  • có thể mở rộng lên đến hàng ngàn máy khác nhau
  • Không phụ thuộc vào tính sẵn sàng cao của các nút cá nhân - tự động xử lý thất bại nút và sao chép bất kỳ dữ liệu từ các nút bắn rơi

Đối với các cơ sở dữ liệu thực tế ... HBase, Mongo, hoặc Cassandra là tất cả các lựa chọn tốt ở đây, chọn bất cứ điều gì bạn cảm thấy thoải mái nhất - HDFS sẽ chăm sóc tất cả các bản sao cho bạn.

3

Trong kinh nghiệm của tôi Elasticsearch có quản lý cụm tuyệt vời và dễ sử dụng, nó hỗ trợ các tính năng hộp đẹp như tự động phát hiện nút, sao chép dữ liệu, tự động cân bằng lại, xem docs. Thông thường nó được sử dụng để tái tạo dữ liệu từ một cơ sở dữ liệu khác để làm cho nó có thể tìm kiếm được nhưng tôi không thấy lý do tại sao nó không thể được sử dụng trong ngữ cảnh này. Về cơ bản khi bạn tạo một "bảng" (gọi là "chỉ mục" trong ES), bạn có thể quyết định rằng có bao nhiêu "phân vùng" (gọi là "mảnh vỡ") dữ liệu nên được phân đoạn, và ad-hoc thiết lập như thế nào nhiều bản sao của bảng mà bạn muốn có (điều này không 100% phù hợp với thuật ngữ chính xác vì "chỉ mục" có thể bao gồm nhiều "loại" nhưng tôi nghĩ đây là sự tương tự tốt nhất).

Dự án ví dụ với ba Pis là here.

Tôi đã đọc một chút về Cassandra và tôi tưởng tượng nó sẽ có các tính năng tương tự, ví dụ như phân vùng và bản sao được đề cập here.

+1

Các cơ sở dữ liệu khác có thể có yêu cầu RAM và CPU thấp hơn vì Elasticsearch được tối ưu hóa cho 10 - 100 ms lần truy vấn trên hàng triệu tài liệu. Nó không chỉ là một kho khóa-giá trị đơn giản. – NikoNyrh

2

Tôi khuyên bạn nên xem Hazelcast. Chúng hoạt động khá tốt trong việc nhân bản bộ nhớ trên một cụm có thể thay đổi. Bạn sẽ phải viết một máy khách tùy chỉnh để lưu trữ dữ liệu vào một cơ sở dữ liệu cục bộ mà bạn muốn nếu bạn muốn sự bền vững của đĩa được sao lưu, nhưng Hazelcast có thể quản lý nhân rộng trên một cụm trong bộ nhớ và có nhiều tính linh hoạt.

+1

Một vài năm trước, chúng tôi đã có Hazelcast chạy trên một cụm máy Raspberry Pi: http://i0.wp.com/venturebeat.com/wp-content/uploads/2013/09/img_20130920_113757.jpg?fit= 800% 2C600 – pveentjer

0
  1. Bạn nên cân nhắc Erlang OTP nền tảng và Mnesia cơ sở dữ liệu

  2. Nếu bạn thích ngôn ngữ C bạn có thể xem xét SQlite in memory cơ sở dữ liệu cùng với nanomsg khuôn khổ

Các vấn đề liên quan