服务器端 sort/filter 用于规范化数据

Server side sort/filter for normalized data

我的问题是 table 结构、代码和 UI 服务器端处理的最佳设计是什么。

按照我的理解,如果我选择客户端处理,数据应该少一些,可能几千条记录就可以了。

但是当数据很大时,我们需要做服务器端处理,然后问题就来了,大部分数据我们应该保持规范化形式以获得更好的存储结构但是UI需要非规范化形式更好过滤和排序。 如果我保持数据规范化,我可以更改值,但为了读取,我需要连接和这些连接上的 sort/filter。

保存数据以支持服务器端处理的最佳方法是什么。 想考虑我们有一个 table code_table( code, value) 并且对于另一个 table data_table 中的每个数据记录的场景,经过一些编辑后,我们将它与这样的代码来自 code_table.

现在我们需要在 UI 和 sort/filter 上显示代码值。我们有 10–15 个这样的 tables.

以下是我想提出的一些建议,它们可能会帮助您做出决定:

  • 联接:通常有几个联接来获得最终结果并不是什么大问题,只要行数是 运行 到数百万。您可以通过拥有正确的索引来优化它们。除非有特定原因您绝对不想使用连接,否则我强烈建议您使用规范化结构和连接。这将为您提供最大的灵活性。做一些基准测试,看看你能扩展到什么程度。
  • De-Normalization:如果您认为您的 Join 查询无法随您的负载扩展,这应该是一个选项。对数据进行去规范化意味着您可能会有 Insert/Update/Delete 不一致。但这并不意味着它不能(或不应该)完成。您将不得不在服务器端代码中付出一些额外的努力,以确保不会出现这些不一致,但除此之外您应该没问题。