同是内存操作mongo 逊了点吗

50 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

  • mongodb 是什么,之前我们了解了redis , 今天来介绍一个和他同类型的内存型数据库,一句话介绍它就是一个高效型的非关系型内存数据库。

既然他是非关系性了,那么它自然就没有了关系,没了关系就没了 mysql 中我们苦恼的表连接问题了,它的高效也是得抑郁次,内部就是存储一个JSON型数据库,数据与数据之间并不存在关联关系或者说不存在我们认为操作的关系。这样我们就可以每次获取数据出去,然后给予数据在内存里进行分析,某种程度来说比m y s q l 快很多。

  • 它的另外一个特点就是文件存储服务器,没错你没听错它可以当作的文件存储服务器。因为底层是C的缘故所以存储起来性能绝对没问题而且还安全。至少没人能轻易的破解的安全机制。上面我们提到他是一个没有关系的数据库,那只是认为的,比如我们将数据全部去除,认为的区分之间数据关系这样就是关系性数据,所以确切的说他们是在关系性数据库和非关系性数据库之间的一个数据库。因为是json存储数据所以它的数据要求没有那么多,表现的就很随意,只要你能够存储那么它就能存储,只要你认为满足业务就行。
  • 当然了 mo n go d b 还是支持索引的。
  • 单字段索引 MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引,称为单字段索引(Single Field Index)。 对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为MongoDB可以在任何方向上遍历索引。
  • 复合索引 联合索引这里没啥好说的,其实就是一个组合唯一键,用来当作索引。
  • 比如地理位置就是一种特殊的数据结构,oracle中就专门生成一个数据结构,而mong o中也可以并且可以用它来当作索引。
  • 还有就是失效数据,这点和re di s 很想的。利用 TTL 集合对存储的数据进行失效时间设置:经过指定的时间段后或在指定的时间点过期,MongoDB 独立线程去清除数据。类似于设置定时自动删除任务,可以清除历史记录或日志等前提条件,设置 Index 的关键字段为日期类型 new Date()。

对比

database(数据库)database(数据库)
table(数据表)database(数据库)
database(数据库)collection(集合)
row(数据行)document(文档)
colunm(字段)field(字段)
index(索引)index(索引)