我有一个在 MySQL 数据库上运行的 Web 应用程序(正在开发中)。我正在考虑将我的应用程序迁移到 Google App Engine,并希望更好地了解如何将我的简单关系数据库模型转换为非关系方法。
我是一个长期的关系数据库人员,我没有使用 BigTable 等基于列的数据库的经验。万一谷歌也支持关系数据库的小型部署,我想说明我的问题是一般性的,而不是谷歌特有的——我想了解如何在非关系数据库中表示简单的关系模型。
我的数据库(简化)如下:
Items Table
------------
ItemID ItemName ItemPriority
1 "Car" 7
2 "Table" 2
3 "Desk" 7
ItemProperties Table
---------------------
ItemID Property Importance
1 "Blue" 1
1 "Four Wheels" 2
1 "Sedan" 0
2 "Rectangular" 1
2 "One Leg" 1
我有很多项目,每个项目都有一个名称和 ID。每一项都有多个属性,每个属性都有几个参数(我只说了每个属性的名称和“重要性”,但还有更多)。我有数千万个项目,每个项目都有数百个属性。
使用场景:我收到一个 ItemName 作为输入,在 items 表中查找它的 ID,并通过该 id 获取所有属性。然后我对属性列表(在内存中)进行一些分析,并返回一个结果。
90% 的工作是基于参数的查找,这(如果我理解正确的话)是非关系数据库的痛点。
推荐的方法是什么?