5

Có những lợi thế để lưu trữ Khóa trên chuỗi trong kho dữ liệu của Google App Engine.Khóa lưu trữ GAE và StringID

Ví dụ:

class Model(ndb.Model): 
    user_key = ndb.KeyProperty() 

VS

class Model(ndb.Model): 
    user_id = ndb.StringProperty() 
  • Tại sao bạn muốn để lưu trữ một khóa thay vì StringID? Nó chỉ thuận tiện?
  • Sử dụng dung lượng lưu trữ ít hơn?
  • Truy vấn nào nhanh hơn?

Trả lời

5

Nếu bạn đang sử dụng entity groups (tổ tiên), KeyProperty sẽ hỗ trợ điều đó. Khi lưu trữ id, trừ khi mô hình của id bạn đang lưu trữ là gốc nhóm thực thể, bạn sẽ cần lưu trữ đủ thông tin để tái tạo lại khóa đầy đủ.

KeyProperty sẽ chiếm nhiều không gian hơn vì nó lưu trữ dữ liệu bổ sung nhưng có thể thuận tiện hơn khi sử dụng khi truy xuất thực thể kia. Tốc độ truy vấn phải được so sánh.

+0

Điểm tốt, với các nhóm thực thể, lưu trữ khóa có ý nghĩa hơn. Với một cái gì đó đơn giản như một User_id bạn sẽ khuyên bạn nên lưu trữ các khóa hoặc một chuỗi/int id? –

+0

Cá nhân tôi muốn nói đó là sở thích của bạn. Tôi thích lưu trữ khóa nếu có bất kỳ cơ hội nào mà bạn * có thể * muốn sử dụng các nhóm tổ chức _or_ không gian tên. Với một cái gì đó giống như người dùng mà không bao giờ thay đổi, tên/id chính cũng có thể là đủ. –

+0

Cảm ơn Robert, tôi đã quên mất không gian tên. Ngoài ra, lưu trữ khóa của appid sẽ làm cho mọi việc đơn giản hơn một khi Google cho phép chia sẻ dữ liệu giữa các ứng dụng. –

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