这两天简单学习了一下MongoDB数据库,属于NoSQL类型数据库的一种,先简单宏观的看一下NoSQL的相关知识和MongoDB的基础知识。

NoSQL是Not Only SQL的缩写,它指的是非关系型数据库,即有别于Oracle,mysql,sqlserver等经常使用的关系型数据库。它是以key-value形式存在,即我们熟悉的JSON数据形式。

发展:NoSQL是随着互联网Web2.0站点的兴起,传统的关系数据库在应付web2.0站点,特别是超大规模数据量和高并发的SNS类型的web2.0纯动态网站已经显得力不从心。暴露了很多难以克服的问题。而NoSQL也就是为了应付这些问题而出现,并不断发展着。

最開始是google公司的Bigtable,淘宝数据平台的Tair,视觉中国站点的MongoDB等都代表NoSQL的不断发展。

NoSQL发展迅速的原因:随着互联网的不断发展,各种类型的应用层出不穷。所以导致在这个云计算的时代。对技术提出了很多其它的需求。尽管关系型数据库已经在业界的数据存储方面占领不可动摇的地位,可是由于其天生的几个限制,使其难以满足以上的几个需求:扩展困难,读写慢,成本高,有限的支撑容量。

可是NoSQL关注的对数据高并发读写和对海量数据的存储等,与关系型数据库相比,它们在架构和数据模型方面做了削弱,而在扩展和并发等方面做了增强突出。

特点:非关系型的,分布式的。开源的,水平可扩展的。

长处:扩展简单。读写更加高速,成本更加低廉。灵活的数据模型。

不足:不提供的对SQL的支持,支持的特性不够丰富,如今的产品相比关系型数据库不够成熟。

总而言之NoSQL的出现是紧随时代的步伐——大数据。云计算而诞生,并不断发展的,是处在一个成长中的。

下边简单看一下它的比較成熟的一个产品MongoDB的简介。

MongoDB 的名称取自“humongous” (巨大的) 的中间部分。足见mongodb 的宗旨在处理大量数据上面。是一个可扩展、高性能的下一代数据库,由 C++语言编写,旨在为web 应用提供可扩展的高性能数据存储解决方式。

Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中每一条记录都是一个Document对象。MongoDB最大的优势在于全部的数据持久操作都无需开发者手动编写SQL语句,直接调用方法就能够轻松的实现CRUD操作。

好,看一下它有什么特性,依据这些特性我们能够选择什么时候用它:高性能、易部署、易使用,存储数据很方便是它的主要特点:

²模式自由,支持动态查询、全然索引。可轻易查询文档中内嵌的对象及数组

²面向文档存储,易存储对象类型的数据, 包括文档内嵌对象及数组

²高效的数据存储,支持二进制数据及大型对象(如照片和视频)

²支持复制和故障恢复;提供了主-从、主-主模式的数据复制及server之间的数据复制

²自己主动分片以支持云级别的伸缩性。支持水平的数据库集群,可动态加入额外的server

适用场景:

²适合作为信息基础设施的持久化缓存层

²适合实时的插入,更新与查询。并具备应用程序实时数据存储所需的复制及高度伸缩性

²Mongo 的 BSON 数据格式很适合文档化格式的存储及查询

²适合由数十或数百台server组成的数据库。由于 Mongo 已经包括了对 MapReduce 引擎的内置支持

不适用场景:

²要求高度事务性的系统

²传统的商业智能应用

²  复杂的跨文档(表)级联查询

综上,我们对NoSQL,MongoDB有了个宏观的理解,知道NoSQL出现并不断发展状态的原因,MongoDB的使用范围。好处短处等,这对于我们对此款软件的认识很重要,关系到我们技术选择的一关。就是认识人一样。我们是从总体容貌開始。然后随着不断的深入,在观察他们细节外貌。行为方式,生活习惯等等。学习一门技术也是这样。先了解他了。然后在開始一点点的学习技术,并随着使用次数的增多。不断的加深理解。不断的升华。

最新文章

  1. 自定义委托类型 - .Net自带委托类型
  2. 详解Java中ArrayList、Vector、LinkedList三者的异同点(转)
  3. Constructing Roads In JGShining's Kingdom(HDU 1025 LIS nlogn方法)
  4. Android Studio 修改主题
  5. [转]pymongo常用操作函数
  6. Android Studio 插件开发详解四:填坑
  7. 题解 P4705 【玩游戏】
  8. Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度(六)
  9. 练习七 Procedure中使用DDL
  10. [Java初探外篇]__关于正则表达式
  11. scala-jdbc-scalike操作jdbc数据库
  12. Python pip源处理
  13. GRYZ 模 拟 赛 系 列 Xxy 的车厢调度
  14. vue-resource 上传图片
  15. 【mysql】mac上基于tar.gz包安装mysql服务
  16. Linux wget安装详解
  17. (轉)Equal height boxes with CSS
  18. iOS中UITabelView
  19. Python递归 — — 二分查找、斐波那契数列、三级菜单
  20. 2705: [SDOI2012]Longge的问题

热门文章

  1. 初次使用Android Studio时的配置
  2. codeforces Towers 题解
  3. 【scikit-learn】交叉验证及其用于參数选择、模型选择、特征选择的样例
  4. c6----函数的声明和实现
  5. js中的三种函数写法
  6. gemm() 与 gesvd() 到矩阵求逆(inverse)(根据 SVD 分解和矩阵乘法求矩阵的逆)
  7. Ubuntu开机报错:could not update ICEauthority file /home/user/.ICEauthority(转载)
  8. 动态连通性问题:union-find算法
  9. Python笔记(八)
  10. 微信小程序 input使用letter-spacing失效问题