问题标签 [acid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 在酸性状态下,$(deriveSafeCopy 0 'base ''T) 到底是什么意思
要让 Acid 存储类型 T 的值,必须写
在 T 的定义之后。但是这个命令到底是做什么的呢?
database - SaaS 应用程序的无模式/灵活的 ACID 数据库?
我正在考虑将基于 VB 的本地(本地安装)应用程序(发票+库存)重写为面向小型企业客户的基于 Web 的 Clojure 应用程序。我打算将其作为 SaaS 应用程序提供给类似行业的客户。
我正在查看数据库选项:我的选择是 RDBMS:Postgresql/MySQL。我可能会在第一年扩大到 400 个用户,通常每个用户每天有 20-40 次页面浏览量 - 主要用于交易而不是静态浏览量。每个视图都将涉及获取数据和更新数据。ACID 合规性是必要的(或者我认为是这样)。所以交易量并不大。
根据我的偏好选择其中任何一个是不费吹灰之力的,但是对于这一要求,我认为这是 SaaS 应用程序的典型要求:随着我添加更多客户/用户以及每个客户的不断变化的业务需求(我将只提供一些有限的灵活性)。由于我不是数据库专家,根据我能想到和读过的内容,我可以通过多种方式处理它:
- 在 MySQl/Postgresql 中使用传统的 RDBMS 模式设计,单个数据库托管多个租户。并在每个表中添加足够的“自由浮动”列,以便在我添加更多客户或对现有客户进行更改时进行更改。每次对 Schema 进行小的更改时,这可能具有将更改传播到 DB 的缺点。我记得读过 Postgresql 架构更新可以实时完成而无需锁定。但不确定在这个用例中它有多痛苦或有多实用。而且,由于架构更改也可能引入新的/次要的 SQL 更改。
- 拥有 RDBMS,但以灵活的方式设计数据库模式:接近实体属性值或仅作为键值存储。(例如工作日,FriendFeed)
- 将整个事物作为对象保存在内存中,并定期将它们存储在日志文件中。(例如,edval、lmax)
- 选择像 MongoDB 或 Redis 这样的 NoSQL 数据库。但根据我收集到的信息,它们不适合这个用例,也不完全符合 ACID。
- 选择一些 NewSQL Db,例如 VoltDb 或 JustoneDb(基于云),它们保留了 SQL 和 ACID 兼容行为并且是“新一代”RDBMS。
- 我查看了 neo4j(graphdb),但不确定它是否适合这个用例
在我的用例中,不仅仅是可扩展性或分布式计算,我正在寻找一种更好的方法来实现“架构中的灵活性 + ACID + 一些合理的性能”。我可以在网上找到的大多数文章都将架构的灵活性作为导致性能(在 NoSQL DB 的情况下)和可伸缩性的原因,同时忽略了 ACID/Transactions 方面。
这是“架构灵活性与 ACID”事务的“非此即彼”的情况,还是有更好的出路?
mysql - 在 MyISAM 表中执行 START TRANSACTION 时会抛出任何错误吗?
我在 MyISAM 表上尝试了启动事务,它回答“查询正常,0 行受影响(0.00 秒)”。
但我不确定在所有版本的 MySQL 上是否会发生同样的事情。
是否有关于那些涉及事务的查询在非事务模式下的行为的规范?
database - 为什么 NoSQL 数据库不符合 ACID?
可能重复:
是否有任何符合 ACID 的 NoSQL?
所以,我听说 NoSQL 数据库不符合 ACID,这是为什么呢?
c++ - ftruncate() 是异步的吗?
我正在尝试用 C++ 编写一个类,它提供了一种以原子方式附加到文件的方法,即使在写入过程中出现电源故障的情况下也是如此。
首先,我将我当前的文件位置(从文件开头偏移 64 字节,以字节为单位)写入一个单独的日志文件。然后,我将请求的数据写入日期文件的末尾。最后,我在日志文件上调用 ftruncate()(将截断大小设置为 0)。
主要思想是,如果曾经要求此类打开具有非空日志文件的文件,那么您知道写入被中断,您可以从日志文件中读取最后写入的位置并 fseek 到该位置。您丢失了最后的部分写入,但文件不应损坏。
不幸的是,似乎 ftruncate() 是异步的。在实践中,即使我在 ftruncate 之后调用 fflush() 和 fsync(),我也会看到日志在进行大量写入时增长到数百字节。它最终总是以 0 结束,但我希望始终看到它的大小为 0 或大小为 8。
是否可以使 ftruncate 完全同步?或者有没有更好的方法来使用期刊?
database-design - 数据库如何执行原子 I/O?
Oracle、SQL Server 等数据库非常擅长数据完整性。如果我想编写一个我知道要么存储一些数据要么失败(即 ACID)的数据存储,那么我会在它下面使用像 MySQL 这样的数据库作为实际存储,因为这些问题已经解决了。
但是,作为一名非计算机专业的毕业生,我想知道 ACID是如何在非常低的水平上实际工作的。例如,我知道 Oracle 一直将数据写入“在线重做日志”,然后在应用程序发出应提交事务的信号时执行“提交”。
我想放大并理解正是这个“提交”阶段。是只是将“多一个字节”写入磁盘,还是将 a 翻转0
为 a1
以表示给定行已成功存储?
mysql - 如何改进试图在大型数据库中查找重复条目的 MySql 查询?
我必须对大型数据库(Snort 警报)进行查询以查找重复条目。但是,我想出了下面的查询,但是执行起来需要很多时间!
上面的查询试图查找具有相同的警报 ip_dst timestamp
以及layer4_dport
它们是否出现了不止一次。我希望它清楚!
有什么提示或技巧可以提高效率吗?
oracle - 在 Oracle 中使用 NOLOGGING 会破坏 ACID 吗?特别是在停电期间
在 Oracle 中使用 NOLOGGING 时,比如说插入新记录。我的数据库能否从停电中正常恢复?如果它在插入过程中随机下降。
我是否正确地说 UNDO 日志将用于此类恢复......而不是 REDO 日志使用情况,如果主要数据文件物理损坏,则用于恢复。
haskell - Haskell:Yesod 和状态
我正在阅读Toy URL Shortener的代码。但是,有些重要的部分我无法理解。
它有以下代码:
出于测试目的,我在自己的应用程序中写了这样的内容:
然后我可以通过改变来编译
到
然后我可以通过执行来读取处理程序中的状态
灵感来自acid <- fmap state getYesod
于文章。但是,我不知道怎么写。
我也尝试过这样做:
但我并没有走得太远。
AcidState
我试图通过做一些简单的类似示例来弄清楚它是如何工作的,我想既然AcidState
将所有内容都保存在内存中,我应该也可以这样做吗?
对这里发生的事情的任何一般解释,以及我如何遗漏这一点,将不胜感激。
java - 带有 Hibernate Search + Infinispan 目录的事务 ACID 属性
我有以下设置:
- JPA (2.0) 到 Hibernate (4.1)
- Infinispan 作为二级缓存 (5.1)
- Hibernate Search 连接到 Hibernate (4.1)
- Infinispan 作为 Hibernate Search (Lucene) 的目录
- 为 Infinispan 目录连接了一个 JDBC CacheStore
- PostgreSQL (9.1) 数据库来存储实体和 Lucene 目录。
- Bitronix (2.1.2) 作为事务管理器
- 我没有使用 Java EE,而是使用 Spring (3.1)
Infinispan 作为二级缓存很好,不需要恢复,并且由于缓存的性质,您可以在自己的事务中读取更改。
在阅读源代码数小时后,当我更新实体时,Hibernate Search 不会更新 Lucene 目录,而是在事务结束时(如果它提交),所以我想搜索我刚刚更新的文本,在同一笔交易中,我不能吗?
但此外,在事务完成后,Hibernate Search 在不同的线程中对目录进行更新。因此,如果其中一个目录更新失败,那么 Lucene 会与我的实体不一致吗?如果在更新被发送到目录之前发生了一些事情并且需要恢复,这些更新会丢失吗?
假设这个“第一个”事务成功提交,更新被发送到 Infinispan 目录。一个新的事务将在这里开始。通过谁?Lucene 可以选择使用 JMS 发送更新。假设该选项已激活,因此 JMS 消息初始化新事务。
Infinispan 将使用它接收到的更新来修改其内存目录,但持久性 CacheStore 将在此事务完成时再次更新,在提交之后。因此,如果在更新 jdbc CacheStore 时发生某些事情,它可能不会更新,但 Infinispan 内存目录将应用它们。
我的问题是,考虑到我使用的所有模块都支持事务,并且它们甚至支持加入全局事务 (XA),有没有办法实现真正的事务性?也许我只是没有看到它。