在我的客户关系管理系统中,我计划现在能够支持100家企业的规模,但理想情况下这可以扩展到任何规模。MongoDB客户关系管理数据库设计效率
它的成立,现在的方式:
每个企业都有数据 的3个部分,每部分都有1000“项” 的每个项目都有30 - 50“数据块” - 每个数据块都有一个id,它对应的条目,指示它是哪种类型的数据的值以及它所持有的值。
100 * 3 * 1000 * 30 = 9000000条数据。
我通常只会在任何给定的时间拉动100个条目,所以只有3000-5000左右的数据块被拉出,但偶尔一次可能多达1000个条目或更多。
我有收藏业务,部分,条目和数据块。
我以这种方式设置它,因为有些业务将保存不同类型的数据而不是其他数据,而SQL数据库实际上并不适用于此。
样本数据的产生可能是这样的:
- 通过名称找到一个部分(即业务1有一节叫SECTION1)
- 找到那款100项
- 找到30个数据块对于每个条目
这会导致101找到呼叫。我也可以对这些条目执行查找调用,然后使用具有100或键/值对的where数组查找调用数据,这会在其条目ID是100或键/值之一时抽取100个数据条目对。
这是一个可扩展的数据库设计吗?有更好的方法我应该这样做吗?
查看我的编辑更清晰一点。我认为这将有效地和你的建议一样高效。 – maxhud 2015-04-01 17:34:21
大概你会想要返回一些部分的所有数据,是吗?所以它不会是101找到电话,它会是1找到调用来获取该部分,1找到调用获得100个条目,然后1找到获得30 * 100的数据片。但为什么你想要为数据库中的中央查询执行3个表连接?如果你想这样做,不要使用mongodb,使用SQL数据库连接,因为你在这里模拟连接 – jtmarmon 2015-04-01 17:50:45
连接看起来效率很高,特别是如果我只是做一对夫妇而不是100.由于这个原因,我没有使用SQL数据库:每个数据块都有一个“值”字段。该值可以存储任何类型的数据,并且该数据可以在mongodb中排序。如果是sql,我无法做到这一点。 – maxhud 2015-04-01 17:54:16