1

我应该在纯aerospike做一个站点价格比较,然后:产品,组合产品(与某些主板相关的cpu)和商店。ù 产品应与店铺相关,例如一个产品与三个店铺相关,每家店铺的价格不同。

Aerospike 可以帮助我吗?

我想我可能会制作关系箱,但我不知道解决问题的建议是否是个好主意?

4

1 回答 1

1

您可以使用复杂类型列表和映射对多对一关系进行建模,否则这些关系会分布在单个 aerospike 集中的两个表上。因此,组合产品可以有一个“组件”箱,它是地图对象的列表,每个对象都是一个产品。或者您可以将“组件”作为产品 ID 列表,然后根据列表中的 ID 批量读取这些产品。

但是,您也可以使用与 RDBMS 类似的方式使用交集表对多对多关系进行建模。您没有 JOIN,但您可以执行单独的查询并依靠 aerospike 键值和批处理操作比 RDBMS 快得多的事实。

因此,例如,您可以有一个 store_products 交集表,您可以在其中保留商店和产品的 ID。您在商店 ID 和产品 ID 上都建立了二级索引,这允许您进行查询。如果您正在寻找携带某种产品的所有商店,请执行查询,然后从商店表中获取商店对象。如果您要查找商店中的所有产品,请使用 where store_id=x 进行查询,然后对这些产品进行批量读取。

我希望这回答了你的问题。

于 2015-03-22T00:49:57.013 回答