Tôi đã có kinh nghiệm với MongoDB, CouchDB, Redis, Tokyo Nội các và Cơ sở dữ liệu NoSQL khác. Gần đây tôi tình cờ gặp Riak và nó trông rất thú vị với tôi. Để bắt đầu với nó, tôi quyết định viết một bản sao twitter nhỏ, "hello world" trong NoSQL World. Để có được bản sao làm việc đầy đủ, cần phải đặt hàng các tweet theo thứ tự thời gian. Sau khi đọc các tài liệu của Riak tôi phát hiện ra rằng Map-Reduce là công cụ thích hợp cho công việc này. Trong môi trường phát triển của tôi, nó hoạt động khá tốt, nhưng hiệu suất trong sản xuất như thế nào, với hàng trăm truy vấn song song? Có cách nào khác, có thể nhanh hơn, các phương pháp phân loại dữ liệu, hoặc có thể lưu trữ dữ liệu theo dạng được đặt hàng (như Cassandra) không?Cách sắp xếp/sắp xếp dữ liệu trong Riak?
Cập nhật: Tôi nghĩ rằng tôi đã tìm thấy một giải pháp khác cho vấn đề này - một danh sách được liên kết đơn giản. Vì vậy, một triển khai có thể có thể là mỗi người dùng nhận "nhóm thời gian" của riêng mình, nơi liên kết đến chính dữ liệu tweets được lưu trữ (các tweet được lưu trữ riêng trong nhóm "tweets"). Như bạn biết, dòng thời gian này phải chứa khóa có tên "đầu tiên", liên kết đến đối tượng dòng thời gian mới nhất và là điểm bắt đầu của danh sách. Để chèn một tweet mới vào dòng thời gian, chỉ cần chèn một mục mới vào nhóm thời gian, hãy đặt liên kết "tiếp theo" của mục mới này thành mục "đầu tiên", sau đó, đặt mục mới thành "đầu tiên".
Nói tóm lại: Chèn một mục như bạn sẽ làm trong một danh sách liên kết ...
Như với twitter, timeline cá nhân chỉ nắm giữ 20 tweets hiển thị cho người dùng. Để nhận được 20 tweet cuối cùng, chỉ có 2 truy vấn cần thiết. Để tăng tốc mọi thứ, truy vấn đầu tiên sử dụng khả năng liên kết-đi bộ của Riak để có được 20 đối tượng mới nhất, được gắn thẻ "tiếp theo". Cuối cùng, truy vấn thứ hai và cuối cùng sử dụng các khóa được tính toán bởi truy vấn đầu tiên để nhận bản thân các tweet (sử dụng ánh xạ/giảm).
Để xóa các tweet của người dùng bạn vừa hủy theo dõi, tôi sẽ sử dụng khả năng chỉ mục phụ của Riak 1.0 để nhận các đối tượng dòng thời gian/tweet liên quan.
Vì Riak 1.4 sắp xếp và phân trang có sẵn với Chỉ mục phụ: http://basho.com/basho-announces-availability-of-riak-1-4/ – nacmartin