什么是MongoDB? 为什么要使用类似mongodb的nosql数据库? MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等。 它与我们平常所使用的那种关系型数据库有很大的不同,MongoDB是基于文档(Documents)存储的,Document相当于关系型数据中的每一行的条目,而MongoDB的每个集合(Collection)相当于关系型数据库中的表。MongoDB中Collection之间没有关系型数据库那种很强的关联,所以MongoDB存储相对独立,并且它是一种数据冗余的存储方式,用以加快数据的查询。 Mongo数据主要特性有: 1 面向文档存储:(类JSON数据模式简单而强大)。 不适用场景: MongoDB 与 CAP理论
MongoDB的核心理论就是Document,它是由一个键值对集合构成的,就像是一个HashMap,或是字典。它的存储格式类似一个json, {“username”: “Peter”, “age”: 10 } MongoDB中的Collection表示一组documents。并且Collection是schema-free的,也就是说没有严格的格式限制,可以随意插入各种不同格式和类型的document。 例如一个Collection中可以包含 {“username”: “Peter”} {“username”: “Peter”, “age”: 10 } {“password”: 11111} {“scorelist”: [{“math”:90 } , {“english”:100 }]} 复杂的包含数组类型的数据 MongoDB中的DataBase用于聚集Collection ,一个MongoDB实例可以host多个Database,而每个database可以认为是完全独立的,类似于SqlServer数据库可以通过host多个数据库一样。 关于MongoDB的其他内容,都可以在一本叫做《MongoDB权威指南》的书中找到。而且Mongo的官网,就提供了MongoDB的快速入门 等资料,通俗易懂,很容易学习。 关于Nosql的个人理解: Nosql并不是No sql ,而应该更合理地解释为not only sql 或是非关系型数据库。传统的关系型数据库,强化了关系的概念。随着目前互联网应用规模的迅速膨胀,传统的存储模型出现了很多性能瓶颈,很多跨表、跨库、跨物理机器的查询导致数据查询的效率降低。 而nosql数据库,则淡化了关系的概念,通过可能造成数据冗余的代价使得数据存储相对独立,无需交叉查询 ,这也使得Nosql数据库具有了很好的扩展性,因为数据存储相对独立,扩展着实十分方便。并且Nosql数据库普遍具有非常高的读写能力,尤其是大数据量下,这都得益于无关系性和数据库存储结构简单的特性。但是不存在nosql和传统关系型数据库谁好谁差的概念,它们各自存在优缺点,不同场景进行不同的应用,让关系数据库关注在关系上,nosql关注在存储上。 |
|