如何在Google的数据存储区中对实体进行建模

Ton*_*ony 9 google-app-engine database-design data-modeling google-cloud-datastore

与关系数据库引擎不同,Google App Engine使用的数据存储区不强制执行模式 - 而不是行和列,它存储具有各种属性的实体.不过,还应该使用传统的数据库设计吗?

例如,假设我有一个跟踪各种租赁车辆的应用程序.在传统的数据库中,我可能有一个Buses表格,它跟踪车队中每辆公交车的座位长度和数量,并且每列车Trucks的负载能力和马力都有一列.每辆公共汽车和卡车也有颜色和车牌号码.(如果我想规范化数据库,我可以在Vehicle表中分解这些属性).

在Google的数据存储区中,我很想将公交车和卡车存储为Vehicle实体,因为它们共享共同的属性,并添加特定于车辆类型的任何属性.

使用传统数据库模型有哪些优点/缺点,其中每个数据存储区实体代表一个数据库表?

将大型实体分解为更小的实体会更有效吗?

编辑:

此外,有关使用哪种API的任何建议:JDO,JPA或数据存储区低级API?

谢谢!

Rob*_*uin 1

如果您使用的是 Python,请查看PolyModel类。它提供了一种方便的方法来对数据进行非规范化,同时仍然保持不同类型之间的一些逻辑分离。如果您有多种类型,您可以使用 Expando 获得与 PolyModel 相同的结果

一般来说,实体的大小对性能的影响很小。实体的数量对性能的影响要大得多。换句话说,支持更少的实体。

正如 klausbyskov 指出的那样,不要用关系数据库来思考。最终,您的应用程序的性能可能会受到影响,因为您需要进行许多额外的查询和获取。要了解一些关键差异,请查看“掌握数据存储”文章。