Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Công cụ cơ sở dữ liệu hướng tài liệu hiệu quả nhất để lưu trữ hàng nghìn tài liệu cỡ vừa là gì?

Nó phụ thuộc rất nhiều vào từng trường hợp sử dụng cụ thể. Nếu bạn muốn có thể truy vấn tài liệu của mình trên thứ gì đó khác với ID của chúng thì bạn không nên chọn Redis. Với Redis, bạn sẽ phải triển khai lược đồ lập chỉ mục của riêng mình và điều đó chỉ là không cần thiết.

Thực sự có rất ít trường hợp mà Redis sẽ là lựa chọn tốt hơn cho những gì tôi nghĩ trường hợp sử dụng của bạn (không phải là có gì sai với Redis, tôi thường sử dụng cả Redis và Mongo, nhưng cho những thứ khác nhau). Đối với tôi, có vẻ như bạn có các đối tượng có thể được biểu diễn dưới dạng hàm băm. Cả Mongo và Redis đều có thể lưu trữ hàm băm, nhưng Mongo có thể làm được nhiều hơn thế. Với Mongo, bạn có thể tìm kiếm tài liệu trên bất kỳ trường nào của nó, bạn có thể thêm chỉ mục để tăng tốc độ và trường thậm chí không cần phải là một chuỗi, nó có thể là một số, ngày tháng, danh sách, thậm chí là một tài liệu. (hoặc danh sách tài liệu) và tất cả tài liệu không cần phải vừa với RAM (mặc dù điều đó sẽ thay đổi khi tính năng lưu trữ đĩa của Redis kết thúc). Redis không có bất kỳ điều đó. Bạn sẽ phải tự triển khai các chỉ mục để có thể tìm kiếm, bạn không thể lưu trữ bất cứ thứ gì ngoài các chuỗi (đôi khi thực sự bất tiện) và bạn không thể lưu trữ bất cứ thứ gì ngoài các băm phẳng (mà không cần sử dụng đến triển khai hoặc sử dụng một số loại ánh xạ lớp như Ohm).

Bạn cũng đề cập đến tốc độ. Redis rất nhanh và Mongo cũng không tệ, tuy nhiên, đối với trường hợp sử dụng của bạn, việc sử dụng Mongo có thể nhanh hơn. Lưu ý rằng tôi nói sử dụng Mongo, không phải bản thân Mongo sẽ nhanh hơn. Vấn đề là, nếu bạn sử dụng Redis và vẫn muốn có thể tìm kiếm tài liệu bằng cách sử dụng trường không phải là khóa chính, như tôi đã đề cập ở trên, bạn phải tự thực hiện điều này. Sau đó, một tìm kiếm sẽ phải thực hiện ít nhất hai yêu cầu đối với Redis, một yêu cầu tìm kiếm trong chỉ mục và một yêu cầu lấy tài liệu. Nếu kết quả tìm kiếm trong nhiều tài liệu, bạn sẽ phải đưa ra yêu cầu cho từng tài liệu riêng lẻ. Việc thực hiện tất cả các yêu cầu này có thể sẽ khiến việc sử dụng Redis trở nên tồi tệ hơn so với việc sử dụng Mongo. Theo kinh nghiệm của tôi, bất kỳ thứ gì khác ngoài bộ nhớ cache, hàng đợi hoặc các thứ tương tự đơn giản nhất cần thực hiện nhiều hơn một yêu cầu tới Redis để có được mọi thứ mà nó cần.

Vì vậy, với thông tin hạn chế theo ý của tôi, tôi khuyên bạn nên sử dụng MongoDB.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Độ trễ lớn khi sử dụng Celery + Redis

  2. Truy vấn đa trường trên Redis bằng Redis Spring

  3. Cách nhanh nhất để lưu trữ một mảng numpy trong redis

  4. ConnectionMultiplexer.Connect ngắt khi kết nối với máy chủ redis

  5. RedisTemplate tự động như thế nào <String, Long>