我们正在构建一个汽车及其属性的数据库,应该存储在DynamoDB中。
创建一个cars
表并用具有brand
、model
、year
等属性的对象填充它很容易。
但我们也希望在管理界面上有一些其他功能:
键入时的建议
当创建一辆汽车时,它应该在字段中输入现有汽车的品牌和型号。
然后,我们是否应该在另一个表中维护一个品牌和型号的列表,并在用户键入时对该表进行查询?
或者,查询"丰富"的汽车定义表,并获得brand
的所有值,以及brand
具有特定值的所有model
值,等等,是否足够好?我的第一个想法是,这将是一项繁重的工作,我们希望对汽车和模型进行单独的索引。但我不是NoSQL专家。。。
最佳匹配
在我们的系统中注册新车时,如果可能的话,我们希望使用现有的定义汽车作为参考。
因此,当用户输入品牌、型号、年份等时,我们想显示一些最佳匹配的选项——我们可以接受它们的年份等不同,但首先想要最佳匹配。
对NoSQL数据库中的数据进行这样的匹配的最佳方法是什么?任何工具、概念等的链接都将受到赞赏:(
提前感谢
在dynamodb(所有nosql(中,创建的表越少,架构就越好(这是我们使用nosql的主要原因之一(,因此不需要新表,只需添加一个新属性并用您想要的可搜索数据填充即可,请记住,通过dynamodb进行查询是区分大小写的,您只能使用begins_with或contains函数来查询数据
缺点是:
- 您将使用大量的读取容量单位
- 你必须管理大写字母
- 你必须在每次创建时构造可搜索的属性
我建议的解决方案是使用aws cloudsearch,它提供了一个开箱即用的建议,你会有更好的结果,并提供更好的用户体验,每次你有新项目时,cloudsearch中的索引都是自动的,但要注意价格,但他们会给你30天的免费