2011年12月16日

mongodb指南(翻译)(十六) - developer zone - 何时使用GridFS

摘要: 何时使用GridFS大量文件。GirdFS在处理大数据量(几千)文件时比很多文件系统表现要好。用户上传的文件。当用户上传文件时你可能会有大量的文件,并且想对他们进行复制然后备份。GridFS是保存他们的理想途径,这样你就可以想管理普通数据那样管理这些文件了。你还可以使用关键字用户,上传时间等到数据仓库中直接查询,不需要通过间接层。经常改变的文件。如果你有一些确定会经常改变的文件-把他们存储在GridFS是有意义的,这样你可以在一个地方修改,然后所有的客户端会获取这些更新。它比存储在目录树中也要好一些,这样你就不用部署应用来更新文件了。何时不使用GridFS少量的不会变化的文件。如果你有一些网站 阅读全文

posted @ 2011-12-16 12:38 xinghebuluo 阅读(525) 评论(0) 推荐(0)

mongodb指南(翻译)(十五) - developer zone - GridFS简介

摘要: GridFS是MongoDB中存储大文件的一种规范。所有官方支持的驱动都实现了GridFS规范。基本原理数据库支持以BSON对象格式存储二进制数据。但是,在mongodb中BSON对象大小是受限制的(老版本中是4MB,v1.7/1.8中是16MB,将来该限制会更高一些)。GridFS规范提供一种机制,可以透明的将一个大文件拆分到多个较小文档中。这允许我们可以高效的存储大对象,尤其是大文件,例如视频,还允许范围操作(比如,获取文件的前N个字节)。实现为了实现这点,该规范指定了一个可以将文件分块的标准。每个文件在集合中都有一个元数据对象,在块集合中有一个或多个块对象。更详细的信息可以查询GridF 阅读全文

posted @ 2011-12-16 09:49 xinghebuluo 阅读(543) 评论(0) 推荐(0)

2011年12月15日

mongodb指南(翻译)(十四) - developer zone - 数据类型和约定(三)之数据库引用

摘要: 由于mongodb是非关系型的(没有连接(join)),文档间的引用(“外键”)通常是在客户端通过向服务器进行额外查询来解决的(linking)。这些连接总是在客户端解决的。直接/手动做这些是非常容易并且也是推荐这样做的。这里还有一个很多驱动都支持的DBRef机制,它在一定程度上抽象了linking的概念。推荐的方法是使用直接/手动link。内嵌对象是对linking的一种备选方案并且很多时候它非常合适和表现优秀。简单的直接/手动linking通常,手动编写link解决方案就可以很好工作并且也很简单。我们存储_id中的值到数据库的其他文档,稍后对它进行查询。例如:> // grab a 阅读全文

posted @ 2011-12-15 16:48 xinghebuluo 阅读(2182) 评论(0) 推荐(0)

2011年12月13日

mongodb指南(翻译)(十三) - developer zone - 数据类型和约定(二)之Object ID

摘要: Object IDs在mongodb中的文档需要使用唯一的关键字_id来标识他们。_id字段几乎每一个mongodb文档都使用_id字段作为第一个属性(在系统集合和定容量集合(capped collection)中有一些例外)。_id值可以是任何类型,最常见的做法是使用ObjectId类型。每一个文档的_id字段在该集合中必须是唯一的;这是由于集合会自动为_id建立索引而强制要求的(除了前面提到的那些例外)。如果用户尝试插入一个不带_id字段的文档,数据库会自动生成一个对象id并保存在_id字段。_id值可以是任何类型,只要它是唯一的,但除了数组。如果你的文档有一个天然独有的不可更改的主键,我 阅读全文

posted @ 2011-12-13 17:02 xinghebuluo 阅读(2140) 评论(0) 推荐(0)

2011年12月8日

mongodb指南(翻译)(十二) - developer zone - 数据类型和约定(一)

摘要: MongoDB(BSON)数据类型除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详细信息。从shell中检查数据类型在shell中,浮点型和整型被视为是标准javascript数字,因此不能将两者区分开。> // v1.8+ shell> x{"_id" : ObjectId 阅读全文

posted @ 2011-12-08 17:12 xinghebuluo 阅读(3146) 评论(0) 推荐(0)

mongodb指南(翻译)(十一) - developer zone - 文档

摘要: mongodb可以被认为是一种面向文档的数据库。所谓文档,我们说的是结构化文档,不是任意文本文档。可以把这些文档想象成仅仅包含数据的对象,不是代码,方法或者类的层次。另外,在mongodb数据模型中的文档之间的关联比由面向对象语言程序中的对象之间的还要少。在mongodb中,文档是概念上的JSON。更具体的说,这些文档以名为BSON(代表着二进制的JSON)的格式来呈现。文档都被存储在集合中。最大文档大小mongodb限定了单个BSON对象/文档的数据大小。在本文档写作之时这个限制是16MB.这个限制是设计为一个完整性检查;对文件大小限制不是一个技术上的限制。考虑到如果文档大于这个大小,这个模 阅读全文

posted @ 2011-12-08 09:39 xinghebuluo 阅读(766) 评论(3) 推荐(0)

2011年12月7日

mongodb指南(翻译)(十) - developer zone - 集合

摘要: mongodb集合实质上就是一组文档的名称。你可以认为它们大体上等同于关系型数据库中的表。概述一个mongodb集合是一个BSON格式文档的集合。这些文档通常有着相同的结构,但是这并不是必须的,因为mongodb是模式自由(或者更准确的说,“动态模式”)的数据库。你可以在同一个集合内存储多种多样的文档,而且你不需要预先定义集合的“列”或者字段。一个集合在第一个文档插入时创建。集合名称应当以字母或者下划线开始并且可以包含字母;$是保留字符。集合可以使用命名空间进行划分;这些集合组的命名使用“.”(点)来定义。例如,你可以定义集合blog.posts和blog.authors,都属于"b 阅读全文

posted @ 2011-12-07 18:27 xinghebuluo 阅读(1077) 评论(0) 推荐(0)

mongodb指南(翻译)(九) - developer zone - 数据库之命令(四)

摘要: 验证命令使用这个命令检查一个集合是否合法(没有错误)并且获取很多统计信息。该命令扫描整个集合和它的索引,在大的数据集上会很慢。从mongo shell操作:> db.foo.validate(){"ns" : "test.foo" , "result" : "validatedetails: 08D03C9C ofs:963c9cfirstExtent:0:156800 ns:test.foolastExtent:0:156800 ns:test.foo# extents:1datasize?:144 nrecords 阅读全文

posted @ 2011-12-07 09:25 xinghebuluo 阅读(759) 评论(0) 推荐(0)

2011年12月5日

mongodb指南(翻译)(八) - developer zone - 数据库之命令(三)

摘要: getLastError命令当向数据库写入时,mongodb默认不等待响应消息。使用getLastError命令来确保操作已经正确执行。在很多驱动中当你使用"安全"模式(一些驱动中称为“set write concern”)进行保存和更新时,getLastError命令会自动调用。但是当这个特别的被称为getlasterror的命令被调用时,实际上又发生什么了呢。这里,我们介绍它怎么工作。在shell中运行getlasterror命令检查本连接的上一次数据库操作的错误。由于它是一个命令,这里有一些方法可以使用它:> db.$cmd.findOne({getlaster 阅读全文

posted @ 2011-12-05 10:08 xinghebuluo 阅读(2458) 评论(0) 推荐(0)

2011年12月1日

在恰当的地方使用MongoDB的WriteConcern.SAFE参数

摘要: 首先列一下WriteConcern的几种抛出异常的级别参数:WriteConcern.NONE:没有异常抛出WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。WriteConcern.FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作 阅读全文

posted @ 2011-12-01 16:58 xinghebuluo 阅读(8886) 评论(3) 推荐(1)

导航