版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、NoSQLBy Wu Run racoonwr议程转折什么是NoSQLCAP 原理、最终一致性、BASE模型NoSQL的类型转折(关系型数据库的瓶颈)关系数据库如何应对大数据High performance 高并发读写的需求问题: 数据库读写压力巨大, 硬盘IO无法承受解决方案: Master-Slave,主从分离 分库、分表,缓解写压力,增强读库的可扩展性转折(关系型数据库的瓶颈)关系数据库如何应对大数据Huge Storage 海量数据的高效率存储和访问的需求问题: 存储记录数量有限, SQL查询效率极低解决方案: 分库、分表,缓解数据增长压力转折(关系型数据库的瓶颈)关系数据库如何应对大
2、数据High Scalability & High Availability 高可扩展性和高可用性的需求问题: 横向扩展艰难,无法通过快速增加服务器节点实现, 系统升级和维护造成服务不可用解决方案: Master-Slave,增强读库的可扩展性 MMMMaster -Master Replication Manager for MySQL转折(Nosql优势)易扩展 NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。甚至有多种NoSQL之间的整合。灵活的数据模型 NoSQL无需事先为要存
3、储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。转折(Nosql优势)高可用 NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。大数据量,高性能 NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。什么是NoSQL(为什么选择 NoSQL)特点它们可以处理超大量的数据。 它们运行在便宜的PC服务器集群上。 PC集群扩充起来非常方便并且成本很低,避免了“shar
4、ding”操作的复杂性和成本。 它们击碎了性能瓶颈。 NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。 什么是NoSQL(为什么选择 NoSQL)“SQL并非适用于所有的程序代码,” 对于那些繁重的重复操作的数据,SQL值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。 没有过多的操作。 虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么多。 Bootstrap支持 因为NoSQL项目都是开源的,因此它们缺乏供应商提供的
5、正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。 什么是NoSQL(放弃了什么)joinsgroup byorder byACID transactions作为一个有时令人沮丧,但仍然强大的查询语言的SQLCAP 原理、最终一致性、BASE模型(CAP 原理)CAP 原理、最终一致性、BASE模型(最终一致性)When no updates occur for a long period of time, eventually all updates will propagate through the system and all the nodes will be con
6、sistent当发生了很长一段时间没有更新,最终的所有更新将通过系统传播,和所有的节点将是一致的For a given accepted update and a given node, eventually either the update reaches the node or the node is removed from service对于一个给定的公认的更新和一个给定节点,最终更新到达的节点或节点,从服务中移除Known as BASE (Basically Available, Soft state, Eventual consistency基本上是可用的,软的状态,最终一致性
7、), as opposed to ACIDNoSQL的类型类型部分代表特点列存储HbaseCassandraHypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。文档存储MongoDBCouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。key-value存储Tokyo Cabinet / TyrantBerkeley DBMemcacheDBRedis可以通过key快速查询到其value。一般来说,存储不管val
8、ue的格式,照单全收。(Redis包含了其他功能)图存储Neo4JFlockDBInfoGrid图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。对象存储db4oVersant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。xml数据库Berkeley DB XMLBaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。NoSQL的类型(几种主流NoSQL数据库)BigTableDynamoCassandraHBaseRedisMongoDBNoSQL的类型(BigTable)BigTable简介 Bigtable是一
9、个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google的很多项目使用Bigtable存储数据,包括Web索引、Google Earth等数据模型 Bigtable是一个稀疏的、分布式的、持久化存储的多维度排序Map。Map的索引是行关键字、列关键字以及时间戳;Map中的每个value都是一个未经解析的byte数组(row:string, column:string,time:int64)-stringNoSQL的类型(BigTable)数据模型 一个存储Web网页的例子的表的片断 行名:”n.www” contents列族:存放的是网
10、页的内容 anchor列族:存放引用该网页的锚链接文本。 “anchor:”列表示被引用 “anchhor:my.look.ca”列表示被my.look.ca引用 (”n.www”,” anchor: my.look.ca”,t8)-”CNN.com”NoSQL的类型(BigTable)技术要点基础:GFS, Chubby, SSTable。BigTable使用Google的分布式文件系统(GFS)存储日志文件和数据文件Chubby是一个高可用的、序列化的分布式锁服务组件BigTable内部存储数据的文件是Google SSTable格式的。元数据组织:chubby-metadata-tabl
11、et。元数据与数据都保存在 Google FS 中,客户端通过 Chubby 服务获得表格元数据的位置。NoSQL的类型(BigTable)技术要点数据维护与访问:master server 将每个 tablet 的管理责任分配给各个 tablet server,tablet 的分布信息都保存在元数据中,所以客户端无须通过 master 来访问数据,只需要直接跟 tablet server 通信。NoSQL的类型(BigTable)特点1、适合大规模海量数据,PB级数据; 2、分布式、并发数据处理,效率极高; 3、易于扩展,支持动态伸缩; 4、适用于廉价设备; 5、适合于读操作,不适合写操作。
12、 6、不适用于传统关系数据库;NoSQL的类型(Dynamo)Dynamo简介 Dynamo 最初是 Amazon 所使用的一个私有的分布式存储系统。设计要点 P2P 的架构:这区别于 Google FS 的 Single Master 架构,无须一个中心服务器来记录系统的元数据。 NoSQL的类型(Dynamo)技术要点数据定位使用一致性哈希; Vector lock,允许数据的多个备份存在多个版本,提高写操作的可用性(用弱一致性来换取高的可用性)容错:Sloppy Quorum, hinted handoff, Merkle tree Sloppy Quorum马虎仲裁,并非采用严格的数据
13、一致性检查,用于实现最终一致性 hinted handoff,节点故障会恢复时,可动态维护系统可用性,使系统的写入成功大大提升。 使用Merkle tree为数据建立索引,只要任意数据有变动,都将快速反馈出来。网络互联: Gossip-based membership protocol ,一种通讯协议,目标是让节点与节点之间通信,实现去中心化。Storage load balancing Client-driven Coordination NoSQL的类型(Dynamo)特点高可用:设计上天然没有单点,每个实例由一组节点组成,从应用的角度看,实例提供 IO 能力。一个实例上的节点可能位于不同
14、的数据中心内, 这样一个数据中心出问题也不会导致数据丢失。 总是可写:hinted handoff确保在系统节点出现故障或节点恢复时,能灵活处理可根据应用类型优化可用性、容错性和高效性配置去中心化,人工管理工作少可扩展性较差:由于增加机器需要给机器分配DHT(分布式hash table)算法所需的编号,操作复杂度较高,且每台机器存储了整个集群的机器信息及数据文件的Merkle Tree信息,机器最大规模只能到几千台。NoSQL的类型(Cassandra)Cassandra简介 Apache Cassandra 是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等
15、简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。NoSQL的类型(Cassandra)架构要点使用了Google BigTable的数据模型 这是一种面向列的数据库,列被组织成为列族(Column Family),在数据库中增加一列非常方便。对于搜索和一般的结构化数据存储,这个结构足够丰富和有效。系统架构与Dynamo一脉相承 是基于O
16、(1)DHT(分布式哈希表)的完全P2P架构,与传统的基于Sharding的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。Cassandra的数据会写入多个节点 保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。NoSQL的类型(Cassandra)突出特点模式灵活 :使用Cassandr
17、a,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。 真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。NoSQL的类型(HBase)HBase简介 HBase Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规
18、模结构化存储集群。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。NoSQL的类型(HBase)数据模型Row key、列族、列、时间戳,同bigtable定义NoSQL的类型(HBase)物理存储每个HRegion由多
19、个Store构成,每个Store由一个memStore和0或多个StoreFile组成,每个Store保存一个Columns FamilyStoreFile以HFile格式存储在HDFS中NoSQL的类型(HBase)架构图NoSQL的类型(HBase)架构图Client 包含访问hbase 的接口,client 维护着一些cache 来加快对hbase 的访问,比如regione 的位置信息Zookeeper 保证任何时候,集群中只有一个master 存贮所有Region 的寻址入口 实时监控Region Server 的状态,将Region server 的上线和下线信息,实时通知给Mas
20、ter 存储Hbase 的schema,包括有哪些table,每个table 有哪些column familyMaster为Region server 分配region负责region server 的负载均衡发现失效的region server 并重新分配其上的regionGFS 上的垃圾文件回收处理schema 更新请求NoSQL的类型(HBase)架构图Region Server维护Master 分配给它的region,处理对这些region 的IO 请求负责切分在运行过程中变得过大的region 可以看出,client 访问hbase 上数据的过程并不需要master 参与,寻址访问z
21、ookeeper 和region server,数据读写访问regione server,master仅仅维护者table 和region 的元数据信息,负载很低NoSQL的类型(HBase)架构图Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制NoSQL的类型(Redis)Redis简介 redis是一个key-value存储系统。 和Memcached类似,它支持存
22、储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集 合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis 支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。相比memcached的优势:value类型更丰富数据操作方法更多可将内存数据持久化NoSQL的类型(MongoDB)
23、MongoDB简介MongoDB是一个基于分布式文件存储的数据库。由C+语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。特点是高性能、易部署、易使用,存储数据方便。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。NoSQL的类型(MongoDB)主要特点面向集合存储:易存储
24、对象类型的数据,包括文档内嵌对象及数组。模式自由:无需知道存储数据的任何结构定义,支持动态查询、完全索引,可轻易查询文档中内嵌的对象和数组文档型:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。高效的数据存储:支持二进制数据及大型对象支持复制和故障恢复:提供Master-Master、Master-Slave模式的数据复制及服务器之间的数据复制 自动分片:以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器NoSQL的类型(MongoDB)不适用场景要求高度事务性的系统传统的商业智能应用复杂的跨文档(表)级联查询N
25、oSQL的类型(MongoDB)功能面向集合的存储:适合存储对象及JSON形式的数据。动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)自动分片以支持云级别的伸缩性:自动分片
26、功能支持水平的数据库集群,可动态添加额外的机器。 NoSQL的类型(MongoDB)安装wget /linux/mongodb-linux-x86_64-1.2.4.tgztar -zxvf mongodb-linux-x86_64-1.2.4.tgzmkdir -p /data/dbcd /data/dbmkdir m_data m_logcd mongodb-linux-x86_64-1.2.4启动:bin/mongod -dbpath=/data/db/m_data -logpath=/data/db/m_log -logappend -port=27017 &NoSQL的类型(Mong
27、oDB)普通操作1、新建集合集: db.createCollection(user);2、查入数据: db.user.insert(uid:1,username:Falcon.C,age:25); j = name: mongo; db.things.save(j); for( var i = 1; i db.user.update(uid:1,$set:age:26)#age=26 db.user.update(uid:1,$inc:age:-1)#age=age-1NoSQL的类型(MongoDB)普通操作4、查询: 4.1遍历集 var cursor = db.things.find()
28、; while (cursor.hasNext() print(tojson(cursor.next(); 4.2 方法2 db.things.find().forEach( function(x)print(tojson(x);); 4.3、获取结果集 var cursor = db.things.find(); print (tojson(cursor4); var arr = db.things.find().toArray(); arr5;NoSQL的类型(MongoDB)普通操作5、条件查询: db.things.find(name:mongo).forEach(function(x
29、) print(tojson(x);); 等价于: SQL:SELECT * FROM things WHERE name=mongo db.things.find(x:4, j:true).forEach(function(x) print(tojson(x);); 等价于: SQL:SELECT j FROM things WHERE x=4NoSQL的类型(MongoDB)普通操作6、sort用法 db.things.find(tags :economy).sort(ts:-1).limit(10); 等价于: SQL: select * from things where econom
30、y in tags order by ts DESC limit 107、findOne用法 var mongo = db.things.findOne(name:mongo); print(tojson(mongo);8、limit用法 db.things.find().limit(3);NoSQL的类型(MongoDB)索引db.u_info.insert(uid:1,name:Falcon.C,address:Beijing);db.u_info.insert(uid:2,name:sexMan,address:Wuhan);添加:db.u_info.ensureIndex(uid:1)
31、;db.u_info.ensureIndex(name:1);删除:db.u_info.dropIndex(name_1)查询索引db.u_info.find(name:Falcon.C).explain();查询的条件中有索引时,查询走BtreeCursor 的索引,而没有索引时走BasicCursor。NoSQL的类型(MongoDB)MongoDB操作 同步复制1、Master对SlaveMasterbin/mongod -dbpath=/data/db/m_data -logpath=/data/db/m_log -logappend -port=27017 -master -auth
32、 &Slavebin/mongod -dbpath=/data/db/m_data -logpath=/data/db/m_log -logappend -port=27017 -slave -source=5:27017 -auth &MongoDB操作 同步复制2、Master对MasterMaster1bin/mongod -dbpath=/data/db/m_data -logpath=/data/db/m_log -logappend -port=27017 -master -slave -source=4:27017 &Master2bin/mongod -dbpath=/data
33、/db/m_data -logpath=/data/db/m_log -logappend -port=27017 -master -slave -source=5:27017 &MongoDB操作 分布式-Sharding(切片)MongoDB操作 分布式-Sharding(切片)MongoDB的auto-sharding功能是指mongodb通过mongos自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。一个mongodb集群包括一些shards(包括一些mongod进程),mongos路由进程,一个或多个config服务器Shards每一个shard
34、包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集MongoDB操作 分布式-Sharding(切片) ChunksChunk是一个来自特殊集合中的一个数据范围,(collection,minKey,maxKey)描叙一个chunk,它介于minKey和maxKey范围之间。例如chunks 的maxsize大小是100M,如果一个文件达到或超过这个范围时,会被切分到2个新的chunks中。当一个shard的数据过量时,chunks将会被迁移到其他
35、的shards上。同样,chunks也可以迁移到其他的shards上。 Config ServersConfig服务器存储着集群的metadata信息,包括每个服务器,每个shard的基本信息和chunk信息,Config服务器主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息。MongoDB操作 分布式-Sharding(切片)Mongodb配置Sharding详细过程.doc优化SQL Server有工具进行数据库的优化,Mongo Database Profiler.不仅有,而且功能更强大。MongoDB 自带 Profiler,可以非常方便地记录下所有耗时
36、过长操作,以便于调优。有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。启动MongoDB时加上profile=级别 即可。也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置。可以通过db.getProfilingLevel()命令来获取当前的Profile级别。123 db.setProfilingLevel(2);was : 0 , ok : 1 db.getProfilingLevel()上面斜体的级别可以取0,1,2 三个值,他们表示的意义如下:0 不开启,关闭性能分析,测试环境可以打开,生成环境关闭,对性能有很
37、大影响1 记录慢命令 (默认为100ms)2 记录所有命令Profile 记录在级别1时会记录慢命令,那么这个慢的定义是什么?上面我们说到其默认为100ms,当然有默认就有设置,其设置方法和级别一样有两种,一种是通过添加slowms启动参数配置。第二种是调用db.setProfilingLevel时加上第二个参数:1 2db.setProfilingLevel( level , slowms )db.setProfilingLevel( 1 , 10 );优化Profiler 信息保存在 file (Capped Collection) 中。也可以通过这个工具进行设置和查看数据:强大的Mong
38、oDB数据库管理工具Mongo Shell 还提供了一个比较简洁的命令show profile,可列出最近5条执行时间超过1ms的 Profile 记录。查看当前库下所有集合的分析数据file.find() 查看某一个集合的分析数据file.find(info:/) 查看执行时间大于100毫秒的执行操作,并倒序排列,并取前5行file.find(millis:$gt:100).sort($natural:-1).limit(5);Profile 信息内容详解:ts-该命令在何时执行.millis Time-该命令执行耗时,以毫秒记.info-本命令的详细信息.query-表明这是一个query
39、查询操作.ntoreturn-本次查询客户端要求返回的记录数.比如, findOne()命令执行时 ntoreturn 为 1.有limit(n) 条件时ntoreturn为n.query-具体的查询条件(如x3).nscanned-本次查询扫描的记录数.reslen-返回结果集的大小.nreturned-本次查询实际返回的结果集.update-表明这是一个update更新操作.fastmod-Indicates a fast modify operation. See Updates. These operations are normally quite fast.fastmodinser
40、t indicates a fast modify operation that performed an upsert.upsert-表明update的upsert参数为true.此参数的功能是如果update的记录不存在,则用update的条件insert一条记录.moved-表明本次update是否移动了硬盘上的数据,如果新记录比原记录短,通常不会移动当前记录,如果新记录比原记录长,那么可能会移动记录到其它位置,这时候会导致相关索引的更新.磁盘操作更多,加上索引更新,会使得这样的操作比较慢.insert-这是一个insert插入操作. getmore-这是一个getmore 操作,get
41、more通常发生在结果集比较大的查询时,第一个query返回了部分结果,后续的结果是通过getmore来获取的。优化MongoDB 查询优化如果nscanned(扫描的记录数)远大于nreturned(返回结果的记录数)的话,那么我们就要考虑通过加索引来优化记录定位了。reslen 如果过大,那么说明我们返回的结果集太大了,这时请查看find函数的第二个参数是否只写上了你需要的属性名。(类似于MySQL中不要总是select *)对于创建索引的建议是:如果很少读,那么尽量不要添加索引,因为索引越多,写操作会越慢。如果读量很大,那么创建索引还是比较划算的。MongoDB 更新优化如果写查询量或者
42、update量过大的话,多加索引是会有好处的。以及(省略N字,和RDBMS差不多的道理)Use fast modify operations when possible (and usually with these, an index). See Updates.Profiler 的效率Profiling 功能肯定是会影响效率的,但是不太严重,原因是他使用的是file 来记录,而file 是一个capped collection 这种collection 在操作上有一些限制和特点,但是效率更高。优化建议:如果 nscanned 远大于 nreturned,那么需要使用索引。如果 reslen
43、 返回字节非常大,那么考虑只获取所需的字段。执行 update 操作时同样检查一下 nscanned,并使用索引减少文档扫描数量。使用 db.eval() 在服务端执行某些统计操作。减少返回文档数量,使用 skip & limit 分页 MongoDB技巧汇总 备份./mongodump -u admin -p 123456 -d user -o user -d db -o path还原./mongorestore -u admin -p 123456 -d user -c user user/user/user.bson帮助信息db.help();db.user.help();监控地址47:
44、28017/数据访问接口5:28017/user/user/MongoDB管理平台 Opricot phpMoAdminMongoDB是什么三MongoDB数据库是什么?取自“humongous”(海量的),是由10gen开发并维护的一种开源,高性能,可扩展,无模式,面向文档(document-oriented)的数据库,其内存储的是一种 JSON-like结构化数据。它介于关系数据库和非关系数据库之间,是非关系数据库中最像关系数据库的。官网:/下载:/downloads最新版本:1.6.3(2010-09-23)支持操作系统:Os X Linux Windows SolarisMongoDB
45、的特性一JSON格式文档数据库MongoDB的特性document!=row 文档 _id : ObjectId(4caeb59438336e36fcdb2b59), uid : 11909,uname : bird007 ,address : province : 湖北, city : 武汉“, ,_id : ObjectId(4caeb59438336e36fc9306f4), uid : 11910,uname : magicman , “sex : 0 MongoDB的特性二自由数据模式支持在对象和数组内嵌入其它的对象和数组Mongo模式设计中的一个关键问题就是“是值得为这个对象新建一个集合呢,还是把这个对象嵌入到其它的集合中”。MongoDB的特性三全面索引支持基本索引:db.t_user.ensureIndex(uname:1)唯一索引:db.t_user.ensureIndex(uname:1,unique:true)内嵌文档中的key:db.t_user.ensureIndex(address.city:1)文档本身:db.t_user.ensureIndex(address:1)复合索引:db.t_user.ensureIn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 订货协议法律效力
- 代理收款合同模板
- 技术教育与培训
- 招标文件范本摇号定标的法律要求
- 工薪族鞋购买协议
- 地铁项目施工方案招标
- 招标采购合同中的合同解除管理程序
- 招标文件示范文本
- 笔记本电脑购销合同样本
- 服务合同范本集合
- 装修逾期索赔合同范例
- 【MOOC】全新版大学进阶英语综合教程II-内蒙古大学 中国大学慕课MOOC答案
- 印刷保密协议
- 辅导员年终汇报
- 中国当代文学专题-003-国开机考复习资料
- 【MOOC】综合英语-中南大学 中国大学慕课MOOC答案
- 2025年1月“八省联考”考前猜想卷历史试题02 含解析
- 人教版2025九年级道德与法治中考备考复习计划
- 预防校园欺凌主题班会课件(共36张课件)
- 24春国家开放大学《教育心理学》终结性考核参考答案
- 基于PLC的热水箱恒温控制系统
评论
0/150
提交评论