7

Với thông báo về mô hình đặt giá mới của Google App Engine, tôi đã nhận ra rằng ứng dụng của tôi sẽ không thể duy trì bản thân do giá tương tác cao của Google Datastore. Bởi vì nó là một trò chơi xã hội dựa trên đầu vào người dùng nhất quán và nhanh chóng, ứng dụng này đơn giản yêu cầu quá nhiều tương tác của kho dữ liệu trên cơ sở mỗi người dùng để khả thi (ngay cả với memcache làm trung gian các truy vấn và hoạt động phổ biến).API ứng dụng khách Cassandra Tương tự nhất với API Appast Datastore?

Từ nghiên cứu tôi đã thực hiện, có vẻ như giải pháp tốt nhất là để nhóm của tôi di chuyển sang giải pháp cơ sở dữ liệu dựa trên Cassandra. Tôi đã xem xét các API phổ biến khác nhau như Hector và Pelops, nhưng từ lần kiểm tra ban đầu của tôi, có vẻ như đây là một mức quá thấp đối với những gì tôi đang tìm kiếm. Có một API ứng dụng khách Cassandra trong Java mô phỏng API Datstore cấp thấp của App Engine và sử dụng cùng một mô hình "Entity Group"/property không? Ít nhất tôi muốn API có cùng khái niệm "Tổ tiên" thực thể và duy trì các giao dịch nhóm chéo theo cách tương tự.

EDIT: Để làm rõ, điều tôi thực sự tìm kiếm là API Cassandra hỗ trợ Giao dịch. Theo như tôi có thể hiểu, các giao dịch trong môi trường NoSQL rất khó, nếu không thể thực hiện mà không có một số nhóm phân cấp của "đối tượng" (gọi chúng là những gì bạn sẽ, thực thể, bảng, vv). Điều này có vẻ là lý do tại sao Hector không thực hiện chúng. Vì vậy, câu hỏi của tôi là, API Cassandra phổ biến nhất thực hiện một số dạng hệ thống giao dịch nào, tốt nhất là một trong số đó sử dụng cấu trúc Entity giống như Entity thì sao?

+0

Đây không phải là câu trả lời cho câu hỏi của bạn, nhưng có vẻ như một cách tiếp cận có lợi trừu tượng hóa nhu cầu lưu trữ dữ liệu của ứng dụng của bạn. Hãy suy nghĩ về nó như là một API nội bộ, được thiết kế để che giấu sự khác biệt của GAE và Cassandra (và có thể một cái gì đó khác như AWS). Bạn có thể thấy rằng sau đó thực hiện một phiên bản Cassandra không phải là quá xấu, và/hoặc nó mang lại cho bạn sự linh hoạt để thay đổi các kho dữ liệu trong tương lai. – RichW

+0

@RichW Vâng đó chính xác là cách tiếp cận chúng tôi đang thực hiện ngay bây giờ. Chúng tôi đang tạo một bộ các giao diện độc lập với các cuộc gọi Datastore cụ thể của GAE và di chuyển tất cả tương tác với Datastore vào một triển khai của giao diện đó. Đó là một nhiệm vụ to lớn mà chúng tôi thực sự không muốn làm ở giai đoạn này, vì vậy tôi muốn biết Cassandra API nào là tương tự nhất nên tôi có thể nghiên cứu và đảm bảo kiến ​​trúc mà chúng tôi đang thiết kế lại hiện tại sẽ không cần nhiều sửa đổi khi chúng tôi thực hiện chuyển đổi không thể tránh khỏi. – depthfirstdesigner

+0

Tôi đã nghiên cứu API kênh GAE nếu tôi có loại ứng dụng đó. Ứng dụng của tôi có kích thước nhỏ đến trung bình và chắc chắn tôi sẽ trả thêm 20 lần với mức giá mới nhưng nó vẫn chỉ là một phần nhỏ của máy chủ chuyên dụng hoặc chi phí lưu trữ vật lý vì tôi chỉ sử dụng HTTP và/hoặc đăng bài rất chuẩn. Tôi đã nghe nói về API kênh và tôi nghĩ rằng nó có thể làm những loại tương tác này, xin lỗi nếu tôi nhầm lẫn nhưng tôi đoán dựa trên những gì tôi đọc. –

Trả lời

1

Bạn có thấy hector-object-mapper không? https://github.com/rantav/hector/tree/master/object-mapper

Trọng lượng nhẹ, chú thích theo hướng chú thích cho Apache Cassandra qua Hector. Để biết thêm tài liệu về cách sử dụng Hector, xem: http://hector-client.org

+0

Hector chắc chắn có vẻ là API Cassandra phổ biến nhất cho Java, nhưng từ những gì tôi đã đọc nó không có hỗ trợ/kế hoạch để nhóm ánh xạ đối tượng của nó thành "Entity Groups". Theo tôi hiểu, rất khó (nếu không thể) để thực hiện một hệ thống giao dịch trong một cơ sở dữ liệu NoSQL mà không cần nhóm các đối tượng. Có lẽ tôi nên làm rõ câu hỏi của tôi một chút để giải thích rằng những gì tôi đang thực sự tìm kiếm là một API Cassandra hỗ trợ các giao dịch. – depthfirstdesigner

+3

https://issues.apache.org/jira/browse/CASSANDRA-1684 - Chúng tôi sẽ hỗ trợ họ ngay khi có sẵn :-) – zznate

+1

Ngoài ra, đối với một số nghiên cứu ban đầu về "nhóm tổ chức" và giao dịch trong hệ thống phân phối, xem: http://research.google.com/pubs/archive/36971.pdf (giấy "megastore" và Cuộc sống của Pat Helland ngoài các giao dịch được phân phối: www.ics.uci.edu/~cs223/papers/cidr07p15 .pdf – zznate

0

Điều tốt nhất tôi có thể tìm thấy là AppScale trong đó sử dụng Cassandra mặc dù nó không rõ ràng với tôi làm thế nào để thiết lập và chạy Datastore như một mình phục vụ đứng mà không có dịch vụ GAE khác. Tôi đã tạo một issue cho điều đó. Về mặt kỹ thuật, bạn có thể sử dụng cùng một thư viện máy khách với các chỉnh sửa nhỏ (ví dụ thay thế URL/điểm cuối của kho dữ liệu bằng chính URL của bạn)

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