gpt4 book ai didi

sql - MongoDB/Redis/SQL 并发模式 : read-modify-write by multiple processes

转载 作者:可可西里 更新时间:2023-11-01 11:27:05 25 4
gpt4 key购买 nike

这里相对DB新手。

因此,我面临一个反复出现的问题,即多个进程尝试对同一个数据库实例(无论是 MongoDB、Redis 还是 SQL)执行读取-修改-写入操作。

在 Redis 中,一种解决方案是利用 Redis Lua 脚本的原子性来保证原子性,但可能会导致将大量应用程序逻辑移至 Redis。 (是好是坏?)

在 SQL 中,似乎有实现类似结果的原子存储过程,但也冒着将太多应用程序逻辑移入数据库本身的风险(无论是好是坏?)

MongoDB 甚至没有内部脚本的概念(javascript 解决方案似乎已被弃用)

然后在一般意义上,如上所述,将应用程序逻辑保持在数据存储的外部可能是好的(?),以实现跨多个服务节点的最大应用程序逻辑分布和可扩展性.

但是使应用程序逻辑分布在多个进程(节点)上并让它们同时访问共享数据存储可以保证读取-修改-写入周期免受可能的竞争条件的影响。

所以我的问题是:

  1. 对于 Redis 或 SQL,我是否应该滥用提供的原子脚本支持来完全避免任何可能的竞争,而是将越来越多的应用程序逻辑放入数据存储中,或者
  2. 对于大多数数据库并发访问来说,读-修改-写模型是否更常见?如果是,是否有一些关于如何从多个进程同步并发读-修改-写的“标准”指南?<

谢谢!

最佳答案

Nosql 数据库不符合 ACID。这些是分布式 nosql 数据库。示例 - mongodb、redis、cassandra 等这些 nosql 数据库满足 CAP 定理的 CP 或 AP 部分。像 RDBMS 这样的 ACID 兼容数据库满足 CAP 定理的 AC 部分。

nosql 数据库的用例要么是重读,要么是重写。它主要与性能有关,即速度、高可用性。

希望我清楚

关于sql - MongoDB/Redis/SQL 并发模式 : read-modify-write by multiple processes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44710538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com