我需要为在线零售店建立一个联属系统。它的数据库(MySQL)应该为他们的附属公司提供:
所以我基本上有两个选择:
有人可以解释我该怎么做,以及这两种变体的缺点和好处是什么?我知道有一些性能方面的考虑,但我没有任何数据支持它。
答案 0 :(得分:0)
如果您希望您的关联企业数据具有历史性,那么他们可以看到它随时间的变化情况,那么单独的表会更好。
如果您决定不想提供,并且只是及时给他们快照,那么将其添加到表中会更好。
就个人而言,我会使用会员ID引用的单独表格,这样他们就可以查看他们的信息随时间变化的图表。
现在,如果您存储数据,例如,每周存储一个新行,那么您将无法查看当天的更改,或者某个其他时间间隔小于您存储的时间间隔,以及它如果他们改变了他们的营销方法并希望看到效果,就很难根据产品进行过滤。
所以,我会使用选项3,即按需提取数据,因此用户可以根据需要对其进行过滤,但是,您也可以使用标准方法执行并运行一次/周,如果这是一个合理的时间片。
我会将这些结果缓存在NoSQL数据库中,主要是因为它可以更快地检索,因为你可以直接获取javascript并将其发送给用户。
如果你必须按需提取数据,那么也要在NoSQL数据库中缓存它,因为在你去实际的数据库之前,你首先要看那里是否能满足请求。
您还可以允许联盟会员设置他们自己的选择标准,并且每天只执行这些自定义条件,这样他们就不会只是为了获取他们的信息而访问真实数据库。
这是关键,限制关联公司需要访问真实数据库,将其信息放在其他地方,除非您必须访问该数据库,以减少可能影响客户的关联公司的任何影响。
答案 1 :(得分:0)
将所有内容存储在一个表中(按键值对)
此方法使用MySQL作为键值存储。在这种情况下,您没有明确定义的架构。这是一个优点,因为它很容易更改数据模式。这也是一个缺点,因为您没有注意到数据何时缺失或不一致。
在所有内容上制作表格
这会迫使您考虑您的数据结构,但将所有数据放入表中可能会很麻烦。
我建议你尝试制作表格。在项目开始时考虑数据结构是一件好事,并且使表强制您正确地构造数据。如果这对你来说真的不合适,你总是可以使用一个表或一些NoSQL解决方案。