情况
我试图用传统的数据库来实现一个仓库系统。
这些表格是:
最终用户希望看到/做什么?
终端用户将更新系统中哪些产品放置/删除在什么托盘上。
最终用户还想知道仓库中有多少预定的或可用的产品(最好是实时的)。
我最初的计划是什么?
希望使用传统的关系数据库管理系统(如PostgresQL )和消息队列(如RabbitMQ )来提供实时更新。通过实时更新,我的意思是使用单个页面应用程序或移动电话的最终用户可以实时观察库存的变化。
那么是什么改变了?
如果需要完全的ACID支持或强大的模式执行,那么RethinkDB不是一个好的选择--在这种情况下,最好使用关系数据库(如MySQL或PostgreSQL )。
你为什么要考虑重新思考?
因为如果我能使用它,并允许实时更新,它将极大地帮助我们的客户的销售团队在世界各地的预订在我们的系统。
最频繁的更新/插入是什么?
产品从一个地方到另一个地方的移动。我期望对关系表进行大量更新/插入/删除。偶尔,我会道歉,我不知道如何在rethinkdb范式中解释这一点。我是一个传统的RDBMS的人。
系统建立好了吗?
还没。这就是为什么我想在实际进行之前先寻求一个关于rethinkdb的答案。
你希望使用任何交易吗?
嗯,我不确定。
我可以想到一个真实的案例,仓库工人将产品(部分或全部)从一个托盘转移到另一个托盘。
另一个现实情况是仓库工人将产品从托盘转移到warehouse_location (反之亦然)。
我真的需要使用交易吗?再说一次,我不确定。
因为我希望工人们在完成移动后更新系统。
我会提供一个屏幕让他们选择
<some dropdown>移动到<another dropdown>那么问题是什么?
我现在是否需要基于我的用户需求为我的仓库系统提供完全的ACID支持或强大的模式执行?它是否可以使用rethinkdb实现?
我还期望在系统实现后实现一个活性流,这将显示事件,例如A工人将产品A的100个单元从仓库货架1A转移到托盘25。
发布于 2016-04-14 11:21:43
当你处理信息必须始终准确和一致的事情时,关键是。从你的话看,这听起来很重要。
在我看来,你只想允许实时更新,关键问题是将兔子-mq视为非实时组件,对吗?你为什么要考虑RabbitMQ?(如果要允许数据库运行以进行维护,可以使用sqlite实现备份专用缓存存储?)
通常,您应该假设您需要遵循ACID,直到您有了最终一致性良好的模型。此外,实时准确的报告排除了最终的一致性。
https://stackoverflow.com/questions/36614804
复制相似问题