2010-03-19 28 views
10

Tôi hy vọng có một người có thể giúp tôi đề xuất một mô hình dữ liệu phù hợp được triển khai bằng cơ sở dữ liệu Apache Cassandra. Nhiều hơn tôi cần nó để làm việc dưới tải trọng cao và số lượng lớn dữ liệu.Đề nghị mô hình dữ liệu Cassandra cho một lược đồ hiện có

Giản Tôi có 3 loại đối tượng:

  • sản phẩm
  • Tag
  • ProductTag

sản phẩm:

key - string key 
name - string 
.... - some other fields 

Tag:

key - string key 
name - unique tag words 

ProductTag:

product_key - foreign key referring to product 
tag_key - foreign key referring to tag 
rating - this is rating of tag for this product 

Mỗi sản phẩm có thể có 0 hoặc nhiều thẻ. Thẻ có thể được gán cho 1 hoặc nhiều sản phẩm. Có nghĩa là mối quan hệ giữa các sản phẩm và thẻ là nhiều - nhiều trong điều khoản của cơ sở dữ liệu quan hệ.

Giá trị "xếp hạng" được cập nhật "rất" thường xuyên.

tôi cần phải được chạy các truy vấn sau

  • Chọn đối tượng bằng phím
  • Chọn thẻ cho sản phẩm đặt hàng theo thứ hạng
  • Chọn sản phẩm theo đơn đặt thẻ theo thứ hạng
  • Cập nhật giá bởi product_key và tag_key

Điều quan trọng nhất là làm cho các truy vấn này thực sự nhanh chóng trên lượng lớn dữ liệu, xem xét xếp hạng đó được cập nhật liên tục.

Trả lời

2

Something như thế này:

Products : { // Column Family 
    productA : { //Row key 
     name: 'The name of the product' // column 
     price: 33.55 // column 
     tags : 'fun, toy' // column 
    } 
} 

ProductTag : { // Column Family 
    fun : { //Row key 
     timeuuid_1 : productA // column 
     timeuuid_2 : productB // column 
    }, 
    toy : { //Row key 
     timeuuid_3 : productA // column 
    } 
} 

CẬP NHẬT
Kiểm tra này Model to store biggest score

+0

gì về việc niêm yết tags sản phẩm đặt hàng theo thứ hạng? Hoặc liệt kê các sản phẩm theo thẻ được sắp xếp theo xếp hạng? Truy vấn như vậy sẽ yêu cầu sử dụng 2 chỉ mục cùng một lúc để có hiệu lực –

+0

Điều đó có ý nghĩa. Cảm ơn các liên kết! Một ý tưởng khác tôi đang xem xét là sử dụng các công cụ bên ngoài như tìm kiếm nhân sư hoặc có thể lucandra để chọn các đối tượng được sắp xếp theo xếp hạng. Tìm kiếm toàn văn Sphinx hoạt động tốt cho các tác vụ như vậy, nhưng nó không hỗ trợ cập nhật chỉ mục "thời gian thực". –

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