问题标签 [durability]
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.
postgresql - PostgreSQL 关闭持久性
我想制作一个脚本,它将在内存中运行 postgres 而没有持久性。我读了这个页面:http ://www.postgresql.org/docs/9.1/static/non-durability.html 但我不明白如何在脚本中设置这个参数。请你帮助我好吗?
感谢帮助!
linux - 在 Linux 上保持持久性需要什么?
我正在编写一些软件来处理非常关键的数据,并且需要知道我需要做什么才能实现持久性。
我到处都是矛盾的信息,所以我很感激任何见解。
我有三种方式写入磁盘。
使用 O_DIRECT | O_DSYNC,先读后写 512 字节 - 16 MB 块。
使用 O_DIRECT,先读取然后写入 512 字节块,并根据需要定期调用 fdatasync。
使用内存映射文件,我根据需要定期调用 msync(..., MS_SYNC | MS_INVALIDATE)。
这一切都在带有默认标志的 ext4 上。
对于所有这些,数据是否可能丢失(在写入或同步返回后)或因电源故障、恐慌、崩溃或其他任何原因而损坏?
如果我的服务器在 pwrite 中间死机,或者在 pwrite 开始和 fdatasync 结束之间,或者在被更改的映射内存和 msync 之间,我会有新旧数据的混合,或者它会是一个还是其他?我希望我的个人 pwrite 调用是原子的和有序的。是这样吗?如果它们跨越多个文件,情况是否如此?所以如果我用 O_DIRECT | 写 O_DSYNC 到 A,然后是 O_DIRECT | O_DSYNC 到 B,我是否保证,无论发生什么,如果数据在 B 中,它也在 A 中?
fsync 是否甚至可以保证数据已写入?这说没有,但我不知道从那以后情况是否发生了变化。
ext4 的日志记录是否完全解决了这个 SO 答案所说的存在损坏块的问题?
我目前正在通过调用 posix_fallocate 然后 ftruncate 来增长文件。这两者都是必要的吗,它们是否足够?我认为 ftruncate 实际上会初始化分配的块以避免这些问题。
为了增加混乱,我在 EC2 上运行它,我不知道这是否会影响任何东西。尽管它使测试变得非常困难,因为我无法控制它被关闭的积极程度。
mongodb - 单服务器持久性是什么意思?
有人可以详细解释单服务器耐久性吗?我在浏览 MongoDB 概念时遇到了它。
mongodb - Journal + Majority 100% 安全吗?
我一直在阅读一些关于 MongoDB 容错的文章,有些人抱怨它永远无法用 MongoDB 真正实现(比如这篇文章:http ://hackingdistributed.com/2013/01/29/mongo-ft/ ),这让我感到困惑。
有人可以确认(如果可能的话,向我展示适当的文档)使用 Write Concern“Journal + Majority”足以确保 100% 的驱动程序报告为成功的写入是持久写入的并且不会即使任何副本在写入后失败,也会丢失?
我说的是 3 副本设置。我对系统在发生故障时不再接受写入感到满意,但是当驱动程序报告写入成功时,我需要将其持久提交(无论之后失败的副本数量如何)。
couchdb - CouchDB 的仅崩溃设计是为了耐用性,为什么?
在研究couchDB的durability时,我发现couchDB使用crash-only设计来获得durability。但我不知道couch-only和durability有什么关系。
algorithm - 持久地重新排序磁盘上的值
我有大量(数百万)固定大小的值以随机顺序存储在磁盘上。我将相同的一组值以不同的顺序存储在内存中。我需要将这些值按照它们在内存中的顺序存储在磁盘上。挑战在于:我需要在任何时候在磁盘上至少保留每个值的一个副本——即它需要是持久的。
我有相当多的 RAM 可以使用(这些值仅占 60% 左右),大量的临时存储空间,但持久磁盘上只有非常少量的空间,足以容纳不到一百万个值。
给定磁盘上的值,我可以非常非常快速地在内存中找到它。但反之则不然,给定内存中的值,在磁盘上查找它的速度非常慢。
鉴于这些限制,将值的顺序尽可能快地从内存传输到磁盘的最佳算法是什么?
azure - Azure Blob 存储或 Amazon S3(平面文件存储)的本地替代品?
对于与公共 Internet 断开连接的本地安装,什么是适合 Azure Blob 存储(和 Amazon S3)的持久存储替代品?开发环境是 C# - 如果重要的话。
丢失实时异地复制很好(离线异地复制备份工作),但希望保留 Azure Blob 存储所展示的高可用性功能 - 这意味着如果一台文件服务器出现故障,另一台可以继续提供服务(或可预测的) ) 位置/URI 直到第一个被恢复。
.net - REDIS 耐用性?如何自动过期数据?
我使用 REDIS 来存储数据(字符串)。例如:键“s1”存储值“hello world”。键“s2”存储值“再见”。我希望 s1 在 5 分钟后自动过期(可用内存),但 s2 永不过期。我使用 C#,.net 4.0 >> 如何编码?谢谢
mongodb - Pymongo 默认日志
使用 pymongo(自 2.4 起)时,执行此操作时:
我们指定我们想要确认(在 2 个副本上)和日志写入。
如果我们在写问题中没有提及,根据这篇文章,默认情况下它听起来像 w = 1 。但是,当我们什么都不指定时,日志的默认模式是什么,它是 j= True 还是 False ?
networking - 持久的网络通信困境
假设我们有一家银行和一台 ATM。他们通过网络进行通信,这可能会失败。是否可以创建一个场景,它们之间的通信是 100% 持久的。在这种情况下,这意味着:
让我们检查几个场景:
- ATM 发送请求,银行发送确认。确认丢失,银行更新帐户但客户没有收到钱。
- (如果银行等待 ATM 的确认以更新余额) ATM 发送请求,银行发送确认,ATM 发送 ack 接收。阿克迷路了。ATM 发钱,但银行从未更新帐户。
所以我永远无法创建一个解决方案,其中失败的网络不会阻止资金在任何一方丢失。
请指教。