我在 SaaS 工作,任何租户都可以有多个联系人列表,每个列表可以有任意数量的自定义字段,此列表的联系人可以存储,并且列表的联系人可以包含任意数量的组(使用组用于分割列表的联系人)。每个联系人都有一个必填字段:email_address 和为我提到的列表定义的任意数量的用户定义字段。我们必须能够根据他们所在的组和用户定义值的值来找到列表中的联系人。我们必须提供多达 30 个用户定义的字段。我现在看到解决这个问题的三种方法:
使用某种 EAV(我们尝试这样做),但它看起来相当复杂。我们有一个表列表(租户列表),一个相关表 custom_fields,一个相关表订阅者存储列表订阅者的电子邮件地址,与订阅者和 custom_fields 表相关的表订阅者_自定义_数据(订阅者的自定义字段的存储值) .
字段表模式。它的描述在这里http://blog.springsource.com/arjen/archives/2008/01/24/storing-custom-fields-in-the-database/。在这种情况下,我们将使用与自定义字段相关的字段,它将在列中存储所有自定义字段,例如,有 30 个列来存储每个可能的自定义字段的值,以及一个存储列名称和用户定义名称映射的表场地。看起来也很复杂。我们必须至少有 30 个索引才能按自定义字段的值进行搜索,还有其他问题,
至少要使用某种 NoSQL 数据库来存储用户定义的字段和列表组。你认为这样的数据库在这里可以提供帮助吗?如果可以,如何设计存储自定义字段和组。我尝试查看不同类型的 NoSQL,例如,像 MongoDb 这样的面向文档的,但马上我看不出它如何帮助解决这个问题。我们可以在此处存储任意属性,但要搜索自定义字段的值,我们需要提前对其进行索引,因此我们必须知道我们将拥有哪些自定义字段。
感谢您提供有关它的任何信息。