【问题标题】:Reverse index implementation with spring-data and postgres使用 spring-data 和 postgres 实现反向索引
【发布时间】:2015-07-31 19:25:08
【问题描述】:

我有一张表,比如orders,它有一个列,比如一个长度为 15 个字符的字母数字 itemId 和一堆其他列。对于非常受欢迎的项目,相同的itemId 最多可以重复 900 次,这意味着数据将重复大约 900 次。显然,我们需要将其分开。但是,我们需要快速高效地查找项目列表。我读了一点,认为反向索引是实现这一目标的好方法。但是,我对实际的实现有点困惑。除了 http://blog.frankel.ch/tag/spring-data 之外,我在网上也找不到任何示例,但它使用了 solr。我正在考虑创建一个 items-orders 表,添加一个存储库类,该类将具有 .但是,由于商品和订单之间存在多对多关系,因此需要一个连接表。这让我觉得我走错了路,因为我打算将 items-orders 表本身作为一种连接表,因为它仅作为 itemIdorderId 在其中。

我很确定我做错了什么。非常感谢任何指针。很抱歉问了一个基本问题,但我在网上找不到太多有关示例的信息。

谢谢,

爱丽丝

【问题讨论】:

    标签: database postgresql search spring-data-jpa


    【解决方案1】:

    您的项目订单链接表走在了正确的轨道上。您可能会发现您最终将表格用于您尚未考虑的其他列(数量、价格等)

    首先要做的主要事情是确保您的数据库设计正确,查找基本规范化规则以确保您不重复信息。此外,当您创建表时,请确保使用 FOREIGN KEY 和 PRIMARY KEY 约束明确告诉数据库表之间的关系。

    一旦你有了正确的逻辑结构,你就可以查看是否有任何性能问题需要你做任何聪明的事情。

    关系数据库的设计完全符合您的设想,因此性能可能比您担心的要好得多。过早的优化将是一个巨大的错误。

    你提到了 solr,这是一个通用的文本搜索引擎(有点像 google)。对于您的要求,您希望坚持使用纯关系数据库。您需要一个基于确切标准提供准确结果的基础,确切地说是订单中包含哪些产品等。您不希望任何模糊匹配或人工智能猜测已订购的内容。

    您还可以将产品目录存储在 solr 中,以便用户可以选择查找描述中提到粉色、蓝色或紫色并且尺寸为 4 等的产品,然后在选择产品后使用 itemId关系型数据库。

    【讨论】:

      猜你喜欢
      • 2021-09-05
      • 1970-01-01
      • 2014-05-30
      • 2017-03-19
      • 2013-03-12
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多