这里相对DB新手。
所以我面临一个反复出现的问题,即多个进程尝试对同一个数据库实例进行读 - 修改 - 写操作,无论是MongoDB,Redis还是SQL。
在Redis中,一种解决方案是利用Redis Lua脚本的原子性来保证原子性,但可能会导致将大量应用程序逻辑移到Redis上。 (无论好坏?)
在SQL中,似乎有原子存储过程可以实现类似的结果,但也有可能将过多的应用程序逻辑移入数据库本身(无论好坏?)
MongoDB甚至没有内部脚本的概念(javascript解决方案似乎已被弃用)
然后在一般意义上,如上所述,将数据存储的应用程序逻辑保持在以实现跨多个服务节点的最大应用程序逻辑分布和可伸缩性可能是好的(?)
但是,将应用程序逻辑分布在多个进程(节点)中并让它们同时访问共享数据存储,可以保证读取 - 修改 - 写入周期免受可能的竞争条件的影响。
所以我的问题是:
感谢!
答案 0 :(得分:0)
Nosql数据库不符合ACID。这些是分布式的nosql数据库。示例 - mongodb,redis,cassandra等这些nosql数据库满足CAP定理的CP或AP部分。符合ACID标准的数据库如RDBMS满足CAP定理的AC部分。
nosql数据库的用例要么重读,要么重写。它主要与性能有关,即速度,高可用性。
希望我很清楚