我应该在纯粹的空中飞行中进行网站价格比较,然后是:产品,组合产品(与某些主板相关的CPU)和商店。 ù 产品应与商店相关,例如产品与三家商店相关,每家商店的价格不同。
Aerospike可以帮助我吗?
我以为我可能会建立关系箱,但我不知道解决问题的建议是否是一个好主意?
答案 0 :(得分:1)
您可以建模多对一关系,否则这些关系将使用复杂类型列表和地图在单个空中符号集中的两个表上展开。因此,组合产品可以具有“组件”箱,其是地图对象的列表,每个都是产品。或者,您可以将“组件”作为产品ID列表,然后根据列表中的ID批量读取这些产品。
但是,您也可以使用交集表以类似于RDBMS的方式对多对多关系建模。您没有JOIN,但您可以执行单独的查询,并依赖于aerospike键值和批处理操作比RDBMS快得多的事实。
例如,您可以拥有store_products交集表,您可以在其中保留商店和产品的ID。您可以在商店标识和产品标识上构建二级索引,这样您就可以进行查询。如果您要查找所有带有特定产品的商店,请执行查询,然后从商店表中获取商店对象。如果您要查找商店中的所有产品,请查询store_id = x的位置,然后对这些产品进行批量读取。
我希望这能回答你的问题。