zoukankan      html  css  js  c++  java
  • MongoDB学习系列(1)--入门介绍

    MongoDB是一款为Web应用程序设计的面向文档结构的数据库系统。

    MongoDB贡献者是10gen公司。地址:http://www.10gen.com

    1.MongoDB主要特性:

    1.1文档数据模型

    不需要和关系数据库一样,显示一个示例文档数据时,需要多张表,并且需要这些表之间通过主外键关联起来。同时数据库不需要schema。所以对那些schema经常变化,或者web应用程序开发初期来说,MongoDB有很大的优势。所有的数据都可以存在一条记录中,不需要为每个“列”设置数据类型。

    1.2 支持即时查询,保留的关系型数据的即时查询的能力,不同于k-v数据库,只能查询键。

    1.3 二级索引

    MongoDB中的二级索引是通过B树实现的。通过允许使用多个二级索引,MongoDB让用户能对大量不同的查询进行优化。并且效果非常明显。

    在MongoDB中,每个集合最多可以创建64个索引。支持索引有:升序、降序、唯一性、复合键索引、地理空间索引。

    1.4 复制

    MongoDB通过副本集(replica set)的拓扑结构提供复制功能。副本集将数据分布在多台机器上实现冗余。在服务器和网路故障时能提供自动故障转移。另外复制功能还能用于扩展数据库的读能力。

    clip_image001

    后面可以看到MongoDB在副本集和主从复制技术上的差异。

    1.5 速度和持久性

    写速度:在给定时间内数据库可以处理的插入、更新和删除操作的量。

    持久性:数据库保持这些写操作结果不变的时间长短。

    高容量、低价值的数据局(比如点击数和日志)使用fire-and-get模式写操作

    对于重要的数据,更倾向于安全模式写操作。该模式强制要求数据库作出应答,确保数据库正确无误的接收到写操作。

    1.6 数据库扩展

    磁盘的IOPS(Input/output per second)

    垂直扩展:提升单一节点的硬件配置

    水平扩展:不是提升单一节点的硬件性能,而是将数据库分布到多态机器上。因为水平扩展可以使用普通x86+Linux机器,所以托管整个数据库集群的成本会显著提高。同时将数据库分布到多台机器上可以降低故障带来的影响。

    最后,我查询了51cto上投票结果。显示MongoDB吸引开发者和dba最大的原因是:MongoDB的模式自由。不需要schema。个人觉得DBA最开心的是,MongoDB在复制、分片上容易部署和配置,同时有良好的故障迁移机制。

    clip_image002

    (图片来自51CTO)

    作为开发者,技术日新月异,各种相关技术发展迅猛。开发者能学习和掌握以下三种数据库是最好的了:

    1.MySQL--关系型数据库

    2.MongoDB--面向文档结构的数据库(介于关系型数据和key-value数据库之间的一种数据库)

    3.memcached--分布式的高速缓存系统。

  • 相关阅读:
    AppWidget应用(四)---PendingIntent 之 getService
    AppWidget应用(三)---PendingIntent 之 getBroadcast
    AppWidget应用(二)---PendingIntent 之 getActivity
    JZOJ 3231. 海明距离
    JZOJ 1422. 猴子摘桃
    JZOJ 1421. 二叉树
    SSLOJ 1318.地铁重组
    SSLOJ 1319.埃雷萨拉斯寻宝
    SSLOJ 1317.灵魂分流药剂
    SSLOJ 1316.血色先锋军
  • 原文地址:https://www.cnblogs.com/liminjun88/p/3234502.html
Copyright © 2011-2022 走看看