2014-09-13 32 views
10

Kịch bản là khoảng 1 tỷ bản ghi. Mỗi bản ghi có kích thước dữ liệu 1kb và được lưu trữ trong SSD. Cửa hàng kv nào có thể cung cấp hiệu suất đọc ngẫu nhiên tốt nhất? Nó cần phải giảm quyền truy cập đĩa chỉ 1 lần cho mỗi truy vấn và tất cả chỉ mục dữ liệu sẽ được lưu trữ trong bộ nhớ.Lưu trữ giá trị khóa liên tục hiệu năng cao với số lượng bản ghi lớn

Làm lại nhanh nhưng quá đắt để lưu trữ dữ liệu 1 TB trong bộ nhớ. LevelDB đọc đĩa nhiều lần cho mỗi truy vấn. Loại gần nhất tôi tìm thấy là fatcache nhưng nó không liên tục. Đó là một memcached SSD-backed.

Mọi đề xuất?

Trả lời

8

RocksDB có thể là lựa chọn cho bạn, được tối ưu hóa để lưu trữ nhanh như bộ nhớ và flash-disk và tùy biến cao của nó. Nếu ứng dụng của bạn chỉ đọc sau khi tải hàng loạt lần đầu, thì bạn có thể cấu hình RocksDB để nén mọi thứ trong một tệp lớn duy nhất. Theo cách đó, số lần đọc được đảm bảo có tối đa I/O đơn lẻ. Tuy nhiên, nếu ứng dụng của bạn xử lý cả hai lần đọc và ghi, thì để có tối đa một I/O cho mỗi lần đọc, bạn sẽ cần phải hi sinh hiệu suất ghi khi bạn cần cấu hình rocksdb để nén rất thường xuyên, và làm giảm hiệu suất ghi.

Hướng dẫn điều chỉnh cho RocksDB cũng có thể được tìm thấy here.

0

Bạn đã từng xem không gian vũ trụ chưa? Tôi đã không sử dụng nó, nhưng họ tuyên bố có màn trình diễn tốt trên SSD.

2

Bạn có thể muốn thử RocksDB, đó là thư viện facebook được tối ưu hóa để lưu trữ SSD. Bạn cũng có thể thử Ardb, đó là giao thức redis tương thích NoSQL DB được xây dựng trên RockDB/LevelDB/LMDB.

1

LMDB nhanh hơn RocksDB và sử dụng 1/3 bộ nhớ. Ngoài ra LMDb không yêu cầu điều chỉnh; RocksDB yêu cầu điều chỉnh cẩn thận hơn 40 tham số để có được hiệu năng tiếp cận LMDB.

http://www.lmdb.tech/bench/inmem/scaling.html

Cũng LMDB là hoàn toàn giao dịch và 100% chống tai nạn, RocksDB không phải là.

+0

Tôi đã so sánh RocksDB và LMDB. Trong môi trường thử nghiệm của tôi, RocksDB thắng. – avhacker

+2

Tôi đoán rằng LMDB sẽ giành chiến thắng khi tất cả dữ liệu có thể được tải trong bộ nhớ. Đây là môi trường thử nghiệm của tôi: RAM RAM 4GB, bản ghi 10 triệu, mỗi bản ghi có khóa có kích thước 16 byte và giá trị kích thước 1024 byte. Bạn có thể thấy rằng kích thước dữ liệu đó ít nhất là 10GB. Tôi đã thử đọc ngẫu nhiên nhiều lần trong tập kiểm tra nhiều lần và RocksDB luôn thắng. – avhacker

+0

Chắc chắn nó phụ thuộc vào kích thước của giá trị. Xem báo cáo điểm chuẩn trên đĩa mới này: http://symas.com/mdb/ondisk/ – hyc

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