database - SaaS 应用程序的无架构/灵活的 ACID 数据库?

标签 database web-applications nosql saas acid

我正在考虑将基于预置(本地安装)应用程序(发票+库存)的 VB 重写为面向小型企业客户的基于 Web 的 Clojure 应用程序。我打算将其作为 SaaS 应用程序提供给类似行业的客户。

我正在查看数据库选项:我的选择是 RDBMS:Postgresql/MySQL。我可能会在第一年扩大到 400 个用户,通常每个用户每天有 20-40 个页面浏览量——主要用于事务而不是静态 View 。每个 View 都将涉及获取数据和更新数据。 ACID 合规性是必要的(或者我认为如此)。所以交易量不大。

根据我的偏好选择其中任何一个都是很容易的,但对于这个要求,我认为这是 SaaS 应用程序的典型要求:随着我添加更多的客户/用户和针对每个客户不断变化的业务需求(我将提供一些有限的灵 active ,只是作为开始)。由于我不是数据库专家,根据我能想到和阅读的内容,我可以通过多种方式处理:

  1. 在 MySQl/Postgresql 中采用传统的 RDBMS 架构设计,单个数据库托管多个租户。并在每个表中添加足够多的“自由 float ”列,以便在我添加更多客户或对现有客户进行更改时进行更改。每次对架构进行小的更改时,这可能会把更改传播到数据库。我记得读过 Postgresql 模式更新可以实时完成而无需锁定。但不确定,在这个用例中它有多痛苦或有多实用。而且,由于模式更改也可能会引入新的/较小的 SQL 更改。
  2. 拥有 RDBMS,但以灵活的方式设计数据库模式:使用接近实体-属性-值或仅作为键值存储。 (例如工作日、FriendFeed)
  3. 将整个内存中的事物作为对象并定期将它们存储在日志文件中。(例如,edval、lmax)
  4. 选择 MongoDB 或 Redis 等 NoSQL 数据库。但根据我收集到的信息,它们不适合这个用例,也不完全符合 ACID。
  5. 选择一些 NewSQL 数据库,例如 VoltDb 或 JustoneDb(基于云),它们保留了 SQL 和 ACID 兼容行为并且是“新一代”RDBMS。
  6. 我查看了 neo4j(graphdb),但不确定它是否适合这个用例

在我的用例中,除了可伸缩性或分布式计算之外,我正在寻找一种更好的方法来实现“模式的灵 active + ACID + 一些合理的性能”。我在网上找到的大多数文章都谈到模式的灵 active 是导致性能(在 NoSQL 数据库的情况下)和可伸缩性的原因,同时忽略了 ACID/Transactions 方面。

这是“架构灵 active 与 ACID”事务的“非此即彼”案例,还是有更好的出路?

最佳答案

我认为tarantool可以帮你。该解决方案有交易、lua、msgpack 等。还可以看到 video

关于database - SaaS 应用程序的无架构/灵活的 ACID 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728252/

相关文章:

HTML/CSS YES/NO slider 在选择"is"时显示更多字段

mysql - 复杂数据结构的Sql表或Mongo文档结构设计

ruby-on-rails - 意外的 ',' 在 update_attributes 中期待 ')' - Rails

mysql - 从 --all-databases 转储导入单个数据库

java - 选择这些 : django + smartGWT seems like the good way to go? 吗

haskell - 在没有 "IO"的情况下在 WAI 中使用请求参数会导致问题

database - Riak 的事件提要

java - Java应用程序中的Neo4j查询:No result is displaying[Still fail to solve it]

database - 存储大量写入和高聚合的时间序列数据的最佳方式。 (约 10 亿点)

database - 是否值得索引 day_of_week 列?