我应该为每个数据库表使用单独的通量存储吗?
Posted
技术标签:
【中文标题】我应该为每个数据库表使用单独的通量存储吗?【英文标题】:Should I use separate Flux store for each DB table? 【发布时间】:2015-12-10 21:05:42 【问题描述】:我正在创建一个将用户数据存储在多个数据库表中的应用程序 - 信息、付款和预订(这是一个预订系统)。 在“信息”表中,我存储用户信息,例如电子邮件、姓名、电话等......, 在“付款”表中,我存储了他的付款详细信息,在“预订”中,我存储了他的预订历史记录。
我的问题是 - 在 Flux 架构中表示这些数据的最佳方式是什么?我需要 3 个不同的存储(每个表)还是单个存储(比如说“UserStore”)来保存所有用户的数据?
基本上,我有一个仪表板组件应该显示所有用户的数据。
如果我应该使用 3 个不同的存储解决方案,是否有可能知道它们何时都完成了数据加载(因为每个存储都从数据库异步加载数据)?...
谢谢!
【问题讨论】:
借助 Reflux,您可以将多个商店合并为一个。这样组件就只有一个商店要处理。如果数据获取速度足够快,您可以串行获取。否则,您必须在商店中创建关于获取状态的状态。 【参考方案1】:一般来说,商店越少越好(更容易维护)。 我使用的经验法则:如果一家商店的代码行数超过 300 行,那么您应该考虑分拆到不同的商店。 在这两种解决方案(一个商店或 3 个商店)中,您都需要代码来管理表之间的依赖关系。代码只是存在于不同的文件/存储中。
关于您提到的用户仪表板:避免在您的商店中存储冗余数据。所以如果你有例如用户的预订总数,创建一个实时计算的 getter 函数。
最好不要让存储直接从数据库或服务器端加载数据,而是创建一个 WebAPIUtil,当新数据进入时触发更新操作。参见“官方”通量图。 商店可以有一个 waitFor 函数,等待另一个商店更新。
【讨论】:
以上是关于我应该为每个数据库表使用单独的通量存储吗?的主要内容,如果未能解决你的问题,请参考以下文章