mysql - 基于文档的数据库为何如此之快?

标签 mysql mongodb couchdb nosql

我只是想更好地理解,根据我多年的经验,基于文档的解决方案很慢并且需要大量 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/

相关文章:

security - PouchDB/CouchDB 的每个文档用户访问控制

python - 'Can\'t connect to MySQL server on\' db\' Django-Restframework with Mysql in docker

MySQL按每行数量返回结果

php - 无法登录 - Laravel 5.3 - Cloudways 应用程序

node.js - 如何在node.js、mongoose 中使用填充数据?

java - 如何在couchdb中的两个文档之间创建 "has many"?

mysql - 在 MYSQL 中使用 match 子句进行搜索

java - MongoDB 3,java驱动,全文检索,如何?

mongodb - 文档数据库中的多对多

sql - 如何在 Cloudant/CouchDB 中使用我的 sql 知识?