首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rethinkdb实现仓储系统:我是否需要严格的ACID要求?

使用rethinkdb实现仓储系统:我是否需要严格的ACID要求?
EN

Stack Overflow用户
提问于 2016-04-14 05:54:31
回答 1查看 93关注 0票数 0

情况

我试图用传统的数据库来实现一个仓库系统。

这些表格是:

  1. 产品(每一行代表1个sku)
  2. warehouse_locations (每行表示特定仓库中的特定货架)
  3. 托盘(每行代表一个特定的托盘)
  4. user_defined_categories (每行代表特定用户定义的类别:例如保留、可用、total_physical等)
  5. products_in_pallets_by_categories (每行都有托盘、产品和user_defined_categories表的外键。将在特定类别的特定托盘中指定产品数量。)
  6. products_in_warehouse_locations_by_categories (每行都有warehouse_locations、products表和user_defined_categories的外键。将在特定类别的特定托盘中指定产品数量。)

最终用户希望看到/做什么?

终端用户将更新系统中哪些产品放置/删除在什么托盘上。

最终用户还想知道仓库中有多少预定的或可用的产品(最好是实时的)。

我最初的计划是什么?

希望使用传统的关系数据库管理系统(如PostgresQL )和消息队列(如RabbitMQ )来提供实时更新。通过实时更新,我的意思是使用单个页面应用程序或移动电话的最终用户可以实时观察库存的变化。

那么是什么改变了?

我偶然发现了rethinkdb常见问题和它说

如果需要完全的ACID支持或强大的模式执行,那么RethinkDB不是一个好的选择--在这种情况下,最好使用关系数据库(如MySQL或PostgreSQL )。

你为什么要考虑重新思考?

因为如果我能使用它,并允许实时更新,它将极大地帮助我们的客户的销售团队在世界各地的预订在我们的系统。

最频繁的更新/插入是什么?

产品从一个地方到另一个地方的移动。我期望对关系表进行大量更新/插入/删除。偶尔,我会道歉,我不知道如何在rethinkdb范式中解释这一点。我是一个传统的RDBMS的人。

系统建立好了吗?

还没。这就是为什么我想在实际进行之前先寻求一个关于rethinkdb的答案。

你希望使用任何交易吗?

嗯,我不确定。

我可以想到一个真实的案例,仓库工人将产品(部分或全部)从一个托盘转移到另一个托盘。

另一个现实情况是仓库工人将产品从托盘转移到warehouse_location (反之亦然)。

我真的需要使用交易吗?再说一次,我不确定。

因为我希望工人们在完成移动后更新系统。

我会提供一个屏幕让他们选择

  • <some dropdown>移动到<another dropdown>

那么问题是什么?

我现在是否需要基于我的用户需求为我的仓库系统提供完全的ACID支持或强大的模式执行?它是否可以使用rethinkdb实现?

我还期望在系统实现后实现一个活性流,这将显示事件,例如A工人将产品A的100个单元从仓库货架1A转移到托盘25。

EN

回答 1

Stack Overflow用户

发布于 2016-04-14 11:21:43

当你处理信息必须始终准确和一致的事情时,关键是。从你的话看,这听起来很重要。

在我看来,你只想允许实时更新,关键问题是将兔子-mq视为非实时组件,对吗?你为什么要考虑RabbitMQ?(如果要允许数据库运行以进行维护,可以使用sqlite实现备份专用缓存存储?)

通常,您应该假设您需要遵循ACID,直到您有了最终一致性良好的模型。此外,实时准确的报告排除了最终的一致性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36614804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档