我正在设计一个应用程序,用户可以通过笔记本电脑参数搜索历史销售数据。
让我们使用笔记本电脑,例如,笔记本电脑具有“' RAM',' CPU'' MANUFACTURER'' MODEL' ,' DISKTYPE' ..等等。
请参阅下面的图片,了解前端应该是什么样子,所以我在这里有两个问题:
我打算使用HBase,所以我有一个可以很好地扩展的平台。但是,我很难为我拥有的数据设计合适的模式。这是我想象的架构:
rowkey: transaction_id
column_family1: parametrics:
qualifier1: brand
qualifier2: memory
qualifier3: disk_type
qualifier4: transation_date
....
下拉列表应该只包含数据库中存在的所有不同值,即,如果我们在数据库中只有2GB和4GB笔记本电脑,则用户不应该选择除2以外的其他值或者4,其他过滤器应以相同的方式工作。这是否意味着每当用户打开页面时,我必须遍历整个数据库以获取不同的值?
这是一个模拟:
答案 0 :(得分:0)
如果你只依赖于hbase表来获取两个字段的参考数据,要在网页上显示,那么可能更多的是与整体设计有关,而不仅仅是hbase设计。 hbase中没有链接,比如外键,但就像任何其他rdbms一样,你可以运行一次distinct并将其存储在缓存中,以检索并显示在前端。 HBase适用于低延迟,但我仍然会再次考虑依赖于Hbase,为您提供下拉值。即使我会等待这个问题的答案。快乐的设计。
答案 1 :(得分:0)
每次渲染搜索表单时,是否会使用关系数据库运行SELECT DISTINCT(category) FROM transactions
?可能不是。您可以通过使用类别表,通道表等来规范化架构。我建议使用与HBase相同的方法,除非您必须在应用程序级别或使用像Phoenix这样的东西实现参照完整性和JOIN。