首先,一致性问题和是否采用文档型存储是没有关系的。一致性问题是由于系统既要保证分布式又要求高性能导致的。说白了就是数据不同步,目前文档型数据库如MongoDB并没有说在一致性上有多大问题。
当前的文档型数据库以MongoDB和CouchDB发展最好,而二者除了在存储结构上都是文档型外(一个BSON,一个JSON),其它方面几乎没有什么相同的。
下面再说几个点:
ACID:MongoDB确实不提供跨Collection的事务保证,但其对每一个Document的操作都是原子性的,而CouchDB更是提供完整的ACID保证的。
关联查询:MongoDB确实不能进行跨集合的JOIN操作,CouchDB由于只提供预先建立View的查询,其查询最终是通过MapReduce任务来做的。也是不支持关联查询的。
稳定性:相对于发展了几十年的关系型数据库,其稳定性和成熟程度当然不能比,用之前还请三思。
经验和工具:相对于成熟的关系型数据库,新兴的文档型数据库可能真正了解的人并不多,成熟的工具也不多,这也是个问题。可能导致你招不到合适的DBA。
①.现在的文档数据库对于一致性不能做到很好,或者说在保证性能的情况下一致性不能做到很多,所以说,一些对一致性要求高的还是要慎重一点。
②.现阶段的文档数据库没有一个稳定的或者说是非常成功的应用,大家都还在摸索的时期(4sq就是最经典的例子),而一般的关系型数据库已经有很多成功的例子,有规律可循,不会发生严重的问题。