Chúng tôi vẫn đang đánh giá Cassandra cho kho dữ liệu của chúng tôi. Là rất thử nghiệm đơn giản, tôi đã chèn giá trị cho 4 cột vào nhóm Keyspace1/Standard1 trên máy cục bộ của tôi với khoảng 100 byte dữ liệu. Sau đó tôi đọc lại nhanh nhất có thể bằng phím hàng. Tôi có thể đọc lại ở mức 160.000/giây. Tuyệt quá.Cassandra tốc độ đọc ngẫu nhiên
Sau đó, tôi đưa vào một triệu bản ghi tương tự tất cả với các khóa dưới dạng X.Y trong đó X trong (1..10) và Y trong (1..100.000) và tôi truy vấn cho một bản ghi ngẫu nhiên. Hiệu suất giảm xuống còn 26.000 truy vấn mỗi giây. Số liệu này vẫn cao hơn số lượng truy vấn chúng tôi cần hỗ trợ (khoảng 1.500/giây)
Cuối cùng tôi đặt mười triệu bản ghi từ 1,1 lên 10.1000000 và được truy vấn ngẫu nhiên cho một trong 10 triệu bản ghi. Hiệu suất là quá nóng tại 60 truy vấn mỗi giây và đĩa của tôi bị đập xung quanh như điên. Tôi cũng xác minh rằng nếu tôi yêu cầu một tập hợp con dữ liệu, hãy nói 1.000 bản ghi trong khoảng từ 3.000.000 đến 3,001,000, nó sẽ trả về từ từ lúc đầu và sau đó là bộ nhớ cache, tốc độ lên tới 20.000 truy vấn mỗi giây và đĩa của tôi ngừng phát điên.
Tôi đã đọc tất cả mọi người đang lưu trữ hàng tỷ hồ sơ ở Cassandra và lấy chúng ở mức 5-6k mỗi giây, nhưng tôi không thể đạt được bất kỳ nơi nào gần đó chỉ với hồ sơ 10mil. Bất kỳ ý tưởng những gì tôi đang làm sai? Có một số cài đặt tôi cần thay đổi từ các cài đặt mặc định không? Tôi đang trên một hộp Core i7 ép xung với 6gigs ram vì vậy tôi không nghĩ đó là máy.
Dưới đây là mã của tôi để lấy hồ sơ mà tôi đẻ trứng vào 8 chủ đề để hỏi cho một giá trị từ một cột qua hàng chính:
ColumnPath cp = new ColumnPath(); cp.Column_family = "Standard1"; cp.Column = utf8Encoding.GetBytes ("trang web"); phím chuỗi = (1 + sRand.Next (9)) + "." + (1 + sRand.Next (1000000)); CộtOrSuperColumn logline = client.get ("Keyspace1", khóa, cp, ConsistencyLevel.ONE);
Cảm ơn bạn vì bất kỳ thông tin chi tiết nào
Chúng tôi chắc chắn không thể phù hợp với tất cả chúng trong bộ nhớ, nhưng hồ sơ 10mil không có vẻ như rất nhiều. Mọi người đối phó với hàng tỷ hồ sơ như thế nào ?? –
Điều quan trọng là giữ càng nhiều càng tốt trong RAM, không phải trên đĩa. Để xử lý hàng tỷ bản ghi bạn sẽ phân phối chúng trên nhiều máy và sử dụng chúng như một toàn thể. Đây là một bài viết rất hay [1] về cách thức này đạt được ở Riak, một giải pháp NoSQL phổ biến khác. Nhiều khía cạnh được thảo luận trong bài viết cũng áp dụng cho Cassandra, vì chúng được xây dựng trên cùng một ý tưởng cơ bản. [1]: https://wiki.basho.com/display/RIAK/An+Introduction+to+Riak –