介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。
Redis.conf中文配置详解,其实redis.conf文件中,对每一个配置项都有非常详细的注释,本文只是将其进行翻译,同时加了点小料。本文档所对应的redis版本为2.0.4。
丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解使用场景。 下面举一些常见适合kv数据库的例子来谈谈键值的设计,并与关系型数据库做一个对比,发现关系型的不足之处。
MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理。本文是一个MongoDB的入门级教程,手把手的教会读者使用MongoDB,并将学习过程中可能遇到的问题一一列举。本文不是用长篇的文字来理论性描述MongoDB的各方面知识,而是用图文并茂的方法来讨论MongoDB,希望用最短的时间使开发人员熟悉MongoDB。
BSON: Encode/decode 快,在PHP中, 比json速度快30%, 比serialize速度快100%。 JSON: 易于学习, 一次性读取一组信息, 容易集成到其他系统中, 使用嵌套对象减少集合数量。
Scale Up不可接受、 满足海量数据存储需求、 海量数据,主要是用户的信息与用户消息(类似于我们的反馈)、 大量随机的读写、 没有现成的解决方案,或者说现成的解决方案无法解决(4000个节点的Memcached)、 很多应用并不是很依赖于关系模型了。
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了GoogleBigTable基于列族(ColumnFamily)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo2.0。
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制 ),今天特地花了一点时间研究了一下。
MongoDB的默认数据目录是/data/db,它负责存储所有的MongoDB的数据文件。在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做foo的数据库,那么构成foo这个数据库的文件就会由foo.ns,foo.0,foo.1,foo.2等等组成
MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为10个)。 对于有大量写和读的环境中,为了确保在一个Session中使用同一个DB时,我们可以用以下方式保证一致性。