随笔 - 361,  文章 - 0,  评论 - 62,  阅读 - 160万

mongo的由来
  截取自英文俚语humongous,意为”巨大的”,是否表明mongodb在设计之初就是为大数据量处理而生呢?

mongodb是个啥
  mongodb是个可扩展、高性能、开源、面向文档(document-oriented)的数据库,由c++实现。
  http://www.mongodb.org/ 官网首页最显著的位置用了”agile”和”scalable”这两个词来形容它:
  (1)agile:轻快的,敏捷的;
  (2)scalable:可扩展;

mongodb的特点
  (1)面向文档的存储:类JSON文档作为存储,不固定表模式(schema-free);
  (2)全文索引支持(full index support);
  (3)多副本与高可用性(replication & availability);
  (4)自动分片(auto-sharding);
  (5)支持多种类型的查询;
  (6)快速原地更新(fast in-place updates):大部分更新操作无需申请新的空间;
  (7)map/reduce支持;
  (8)gridfs:各种size大小的集群文件支持;

wikipedia对mongodb的特性描述
  (1)面向文档,以一种类JSON的格式管理记录,且能支持丰富的查询,支持索引;
  (2)跨平台,支持windows,linux,solaris,OS X等;
  (3)查询结果支持游标操作;
  (4)点对点查询(Ad hoc queries):
    任何字段(field)都能被查询到,支持范围查询(range queries),正则表达式查询(regular expression),
    用户自定义js函数查询,内嵌字段查询(nestad field);
  (5)索引支持:
    支持单key索引,复合索引,唯一索引,内嵌字段索引
    查询执行时,mongodb的查询优化器会尝试多种查询计划,并挑选最优的计划执行;
  (6)集函数支持(aggregation function):即使在map/reduce上,也有类似SQL的group by支持;
  (7)文件存储支持,实现了一套GridFS的协议,用来存储和检索文件;
  (8)主从、副本的支持:
    mongodb支持主从结构,主db能执行读操作与写操作,从db从主db拷贝数据,从db只能执行读操作;
  (9)sharding:
    mongodb用sharding技术来支持水平扩展,它与Google的BigTable扩展方式十分类似;

一些与mysql的相似点与不同
  (1)一个服务可以支持多个数据库;
  (2)一个数据库可以支持多个表,在mongodb中,以集合(collection)代替了表(table)的概念;
  (3)mysql是关系型的数据库,即RDBMS,而mongodb是schema-free的,它更像一个键值存储系统(kv),但与kv不同的是,它又能像mysql的模式一样,能修改文档内的数据,并对内部数据进行索引;
mongodb文档以BSON格式存储,即Binary JSON,BSON是一种二进制交换格式,类似Google Protocol Buffer;

posted on   kosamino  阅读(921)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示