Я сбит с толку хранилищем данных - особенно мне сложно решить, где хранить информацию о моих объектах.
Например, у меня есть машина, которая принадлежит компании. В JSON это может выглядеть так:
{
"car_id": "car001", # only unique among a particular owner
"company": "company001",
"value": 5200 # dollars
"Type": "Truck"
}
company и Type ограничены несколькими десятками значений. Я буду часто запрашивать по ID, компании и типу. Особенно это иерархически, в компании есть автомобили нескольких типов, а в каждом типе есть несколько реальных автомобилей.
Я вижу по крайней мере три способа моделирования:
- Кодировать это в Идентификаторе:
key = client.key("Car", "{company}_{type}_{car_id}")
entity = datastore.Entity(key=key)
entity.update({
"car_id": "car001", # only unique among a particular owner
"company": "company001",
"value": 5200 # dollars
"Type": "Truck"
})
Кодировать его в родительских ключах:
company_key = client.key("Company", "Company001")
type_key = client.key("Type", "Truck", parent=company_key)
key = client.key("Car", car_id", parent=type_key)
entity = datastore.Entity(key=key)
entity.update({
"car_id": "car001", # only unique among a particular owner
"company": "company001",
"value": 5200 # dollars
"Type": "Truck"
})
Запросите это:
key = client.key("Car") # identifier is automatically assigned, kind should be Car
entity = datastore.Entity(key=key)
entity.update({
"car_id": "car001", # only unique among a particular owner
"company": "company001",
"value": 5200 # dollars
"Type": "Truck"
})
в запросе приложения на свойства.
Но что лучше? Для других No Sql dbs, которые я знаю, обычно есть какое-то руководство, как ожидается его использование (RavenDb, Cassandra et c.), Но я не смог найти такую вещь для хранилища данных.