基于文档的DB如何如此之快?

Cod*_*opr 9 mysql couchdb mongodb nosql

我只是想更好地理解,多年来我学到的是基于文档的解决方案很慢并且需要大量的I/O. 在PHP项目中的例子中,通常认为使用像Redis,Memecache或APC这样的内存缓存要好得多,因为它们是基于内存而不是将数据缓存到实际的FILE.

现在所有这些NoSQL DB都已经到了,我读到它们是如何比MySQl和其他人快得多,它们是基于文档的.有人能帮我理解这个理论吗?如果每个记录都是文档(FILE),那么它在性能上有多好?我最近读到一个人正在一个项目中使用Redis,他说他切换到MongoDB,并且他用Redis做了更好的结果(我意识到我正在将Cache与DB进行比较,但这不是真正的问题,我想知道基于文档的解决方案如何比非基于文档的解决方案更快?)

bar*_*iir 5

基于文档并不一定意味着它们完全存储在文件系统中。某些部分仍可以像索引一样保留在内存中。

仅基于文档的意思是数据库将数据存储在包中(例如,每张纸都是数据集,您可以在上面自由书写)的数据包,而不是表等非常具体的结构。

http://zh.wikipedia.org/wiki/面向文档的数据库

嗯,为什么它们会比Redis更快:
假设您需要在一组中存储一些非线性信息(即,并非每个数据集看起来都一样,并且一组中的数据类型不同。在Redis上,您只能存储键值对,因此您需要将它们链接回自己的代码/实现中的集合。在NoSQL数据库上,数据库将以(可能)更为优化的方式为您处理: