9

Xuất phát từ nền cơ sở dữ liệu quan hệ, vì tôi chắc chắn nhiều người khác đang tìm kiếm một số nguyên tắc vững chắc để thiết lập/thiết kế kho dữ liệu của tôi trên Google Ứng dụng động cơ. Có bất kỳ quy tắc tốt nào về ngón tay cái mà mọi người có để thiết lập các loại kho lưu trữ dữ liệu ít lược đồ này không? Tôi hiểu một số vấn đề cơ bản như không chuẩn hóa vì bạn không thể tham gia, nhưng tôi đã tự hỏi những người khác có đề xuất gì.Hướng dẫn thiết kế ít giản đồ cho kho dữ liệu Google App Engine và các NoSQL DB khác

Ví dụ đơn giản cụ thể tôi đang làm việc với các mối quan tâm lưu trữ tìm kiếm và kết quả của chúng. Ví dụ tôi đã sau hai mô hình được xác định trong ứng dụng Google App Engine của tôi sử dụng Python:

class Search(db.Model): 
    who = db.StringProperty() 
    what = db.StringProperty() 
    where = db.StringProperty() 

    createDate = db.DateTimeProperty(auto_now_add=True) 

class SearchResult(db.Model): 
    title = db.StringProperty() 
    content = db.StringProperty() 

    who = db.StringProperty() 
    what = db.StringProperty() 
    where = db.StringProperty() 

    createDate = db.DateTimeProperty(auto_now_add=True) 

Tôi đang sao chép một loạt các thuộc tính giữa các mô hình vì lợi ích của denormalization kể từ khi tôi không thể tham gia SearchSearchResult cùng với nhau. Điều này có nghĩa không? Hoặc tôi nên lưu trữ một ID tìm kiếm trong mô hình SearchResult và có hiệu quả "nối" hai mô hình trong mã khi tôi lấy chúng từ kho dữ liệu không? Xin lưu ý rằng đây là một ví dụ đơn giản. Cả hai mô hình sẽ có nhiều thuộc tính hơn và cách tôi tiếp cận điều này ngay bây giờ, tôi sẽ đặt bất kỳ thuộc tính nào tôi đưa vào mô hình Tìm kiếm trong mô hình SearchResult.

Trả lời

6

Không sao chép các thuộc tính nếu chúng sẽ luôn giống nhau giữa các số SearchResultSearch. Nếu số SearchResult phải có tham chiếu đến số Search, hãy giữ một số ReferenceProperty trỏ đến Tìm kiếm. Về cơ bản, cửa hàng này có liên quan đến Search 's Key trong mô hình.

class SearchResult(db.Model): 
    search = db.ReferenceProperty(Search, required=True) 
    # other stuff... 

Tôi cũng khuyên bạn xem một số các App Engine videos from last year's Google I/O (và từ 2008), đặc biệt this one bởi Brett Slatkin, và this one bởi Ryan Barrett. Tất cả chúng đều là những video khá hữu ích nếu bạn có thời gian, nhưng tôi thấy hai video này đặc biệt tuyệt vời.

+0

Tuyệt vời, cảm ơn người đàn ông. – jamesaharvey

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