我知道GAE Datastore不是SQL,並且複合主鍵的概念不是與SQL的1:1映射。但我想我想創造一個像這樣的東西,並且正在尋找關於如何工作的共識。這裏是我的數據模型:Bigtable和複合主鍵
- 汽車公司
- 主鍵:公司名稱
- 型號
- 主鍵:公司名稱,型號名稱
- 汽車
- 主鍵:公司名稱,型號,VIN
在SQL中,對模型「公司名稱」和「型號名」將是我的主鍵(「公司名稱」,這也將是一個外國鍵)。然後Car將有一個複合外鍵Car(company name, model name) -> Model(Company name, model name)
。
在ndb
庫中,一個Key實際上是一組鍵/值對,但看起來與用於事務的祖先有關。我不需要交易(事實上,由於祖先將整個實體組限制爲每秒大約一次交易,所以我根本不想在這裏使用祖先)。所以我的問題是:
的事實是,一個關鍵是一組鍵值對來使用它作爲一個複合主鍵,相當於一個方法,或者它自動創建一個祖先的關係?是否有可能擁有一個帶有多個組件的密鑰而不使用祖先並限制我的事務處理速度?這些是無情地綁在一起,還是不相關,大多隻是一起使用?
人們通常如何在Google Datastore/Bigtable中處理這個概念?我可以通過將密鑰加入到一個字符串中(而不是像
[Ford, Focus]
這樣的列表,我可以像"Ford/Focus"
那樣創建一個字符串)來僞造一個複合密鑰,那是大多數人做的事情嗎?
「要記住的重要一點是,通過密鑰提取比查詢要好」這正是我提出問題的動力,是的。謝謝! – 2014-10-07 09:26:02