我只是想更好地理解,根据我多年的经验,基于文档的解决方案很慢并且需要大量 I/O。例如在 PHP 项目中,通常认为使用像 Redis、Memecache 或 APC 这样的内存缓存要好得多,因为它们是基于内存的,而不是将数据缓存到实际的文件中。
现在所有这些 NoSQL 数据库都已经到来,我读到它们如何比 MySQl 和其他数据库快得多,而且它们是基于文档的。有人可以帮助我理解这个理论吗?如果每条记录都是一个Document(FILE),那性能上怎么这么好呢?我最近读到一个人在一个项目中使用 Redis 并说他切换到 MongoDB 并且比他使用 Redis 有更好的结果(我意识到我正在将缓存与数据库进行比较,但这不是真正的问题,我想知道基于文档的解决方案如何比基于非文档的解决方案更快?)
最佳答案
基于文档并不一定意味着它们完全存储在文件系统中。有些部分仍然可以像索引一样保存在内存中。
仅基于文档意味着数据库将数据存储在包中(就像一张纸,每张纸都是一个数据集,您可以在上面自由书写)而不是像表格这样非常具体的结构。
http://en.wikipedia.org/wiki/Document-oriented_database
啊,为什么它们可以比 Redis 更快:
假设您需要在一组中存储一些非线性信息(即,并非每个数据集看起来都相同,并且您在一组中有不同的数据类型。在 Redis 上,您只能存储键值对,因此您需要将它们链接在一起到您自己的代码/实现中的集合。在 NoSQL 数据库中,数据库以(可能)更优化的方式为您处理 :)
关于mysql - 基于文档的数据库为何如此之快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8816824/