为什么我应该使用基于文档的数据库,如CouchDB,而不是使用关系数据库。 在哪些典型的应用程序或领域中,基于文档的数据库比关系数据库更适合?
当前回答
我想到了快速应用程序开发。
当我不断地改进我的模式时,我总是因为必须在MySQL/SQLite中维护模式而感到沮丧。虽然我还没有过多地使用CouchDB,但我确实喜欢在RAD过程中演进模式的简单性。
当你有很多多对多关系时,你可能不想使用非关系数据库;我还没有弄清楚如何围绕这类关系创建良好的MapReduce函数,特别是当您需要在连接关系中使用元数据时。我不确定,但我不认为CouchDB Map函数可以在数据库上调用它们自己的查询,因为这可能会导致无限循环。
其他回答
来自CouchDB文档(https://web.archive.org/web/20090122111651/http://couchdb.apache.org/docs/overview.html):
"A document database server, accessible via a RESTful JSON API." Generally, relational databases aren't simply accessed via REST services, but require a much more complex SQL API. Often these API's (JDBC, ODBC, etc.) are quite complex. REST is quite simple. Ad-hoc and schema-free with a flat address space. Relational databases have complex, fixed schema. You define tables, columns, indexes, sequences, views and other stuff. Couch doesn't require this level of complex, expensive, fragile advanced planning. Distributed, featuring robust, incremental replication with bi-directional conflict detection and management. Some SQL commercial products offer this. Because of the SQL API and the fixed schemas, this is complex, difficult and expensive. For Couch, it appears simple and inexpensive. Query-able and index-able, featuring a table oriented reporting engine that uses Javascript as a query language. So does SQL and relational databases. Nothing new here.
所以。为什么CouchDB ?
REST比JDBC或ODBC更简单。 没有图式比图式更简单。 以一种看起来简单而廉价的方式分布。
愚蠢地存储和提供其他服务器的数据。
在过去的几周里,我一直在玩一个生活流应用程序,它可以调查我的feeds (delicious, flickr, github, twitter…),并将它们存储在couchdb中。couchdb的美妙之处在于,它让我可以在没有开销的情况下将原始数据保留在原始结构中。我为每个文档添加了一个“class”字段,存储源服务器,并为每个源编写了一个javascript渲染类。
一般来说,当您的服务器与另一个服务器通信时,无模式存储是最好的,因为您无法控制模式。作为奖励,couchdb使用服务器和客户端的本机协议——JSON用于表示,HTTP REST用于传输。
一个原因是对不一定具有相同结构/模式的JSON(或其他自描述格式)文档提供快速全文搜索。
基于文档的数据库比关系数据库有一个很大的优势,因为它们不需要预先定义模式——在能够输入任何数据之前。
此外,如果您的数据不是关系型的,不能存储在表中,而是一组图像,或例如报纸文章,则应该使用文档数据库。
另一个优点是易于在web开发中使用基于文档的数据库。 要了解更多深入的NoSQL数据库模型比较,请查看这个来源:https://arxiv.org/ftp/arxiv/papers/1509/1509.08035.pdf
详细说明smdelfin:灵活性。您可以以任何结构(非结构化和全部)存储数据,并且每个文档都可以完全不同。CouchDB特别有用,因为通过它们的“视图”索引,您可以过滤掉特定的文档,并在需要数据库的那些子集时只查询该视图。
对于以JSON格式存储数据的文档数据库,我最大的优势在于:这是JavaScript的原生格式。因此,JavaScript web应用程序与CouchDB一起工作得非常好。我最近开发了一个利用CouchDB的web应用程序,它的速度非常快,同时还能够处理不断变化的数据结构。
推荐文章
- 数据库和模式的区别
- 如何从命令行在windows中找到mysql数据目录
- 如何找到MySQL的根密码
- 将表从一个数据库复制到另一个数据库的最简单方法?
- 什么是分片,为什么它很重要?
- 数据库触发器是必要的吗?
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?
- 关于数据库,每个开发人员应该知道些什么?
- "where 1=1"语句
- 是使用各有一个模式的多个数据库更好,还是使用一个数据库有多个模式更好?
- 如何从Oracle的表中获取列名?
- 如何检查表上持有哪些锁