- 浏览: 506859 次
- 性别:
- 来自: 大连->北京
最新评论
-
春天好:
写的很不错 推荐一个免费好用的云端爬虫开发平台不需要安装环境, ...
web爬虫 -
cpu88:
网络爬虫爬来爬去,网上信息可以瞬间扩散,但是也意味着,没有人愿 ...
web爬虫 -
biaoming:
牛。。学习了。。
MongoDB 关于索引的建议 -
biaoming:
楼主用mongo好早啊。
MongoDB 优化 -
biaoming:
好教程,学习了。。。
MongoDB 优化
文章列表
欢迎访问我的技术博客。
我的twitter:http://twitter.com/NicholasXYF
相关领域:Internet,SEO,SMM
专注技术:Java,Javascript,Python,Linux
欢迎讨论。
博客内容索引
JavaScript系列教程
http://xiayuanfeng.iteye.com/category/51564
一些迷你教程集合
http://xiayuanfeng.iteye.com/category/64089
娱乐之作
http://xiayuanfeng.iteye.com/category/5 ...
- 2008-12-26 15:20
- 浏览 1961
- 评论(1)
客户需求重于你的简历
- 博客分类:
- 杂谈
客户需求重于你的简历
工程师有的时候推荐技术,理念以及方法论来解决问题,这是有原因的,在内心深处仅仅是想丰富自己的简历,而并不是解决问题最佳之道。因此这样的心态很少能有好的结果。
对于职业生涯最为骄傲的应该是,一大堆高兴的客户乐于推荐你,那是因为对于他们和项目,你做了正确的决定。这种声誉要比知道几门语言几门技术好得多。最重要的 甚至最新的趋势和技术,不应该消耗客户的成本。最重要的是要知道你的责任。作为一个架构师受托与你的组织以及避免利益冲突并要给组织足够的忠诚。如果项目不尖端也对你没啥挑战,你可以再选择一个。
如果你没有那么做并且你被迫要参加这个项目,之后你和所有人都高兴使用正确的技术而 ...
优化一个简单的例子
这部分主要讲解如何优化MongoDB的性能。
让我们举个具体示例。假使我们的任务是现实blog的首页-我们希望现实最近发布的10条posts。ts为时间字段。
语句如下
介绍
使用MongoDB设计数据库,就不要按照关系型数据库的思维来做,如范式化数据。因为MongoDB不支持服务端的join查询。一般来说,在对于顶端的对象都要用单独的collection进行存储。
当然不需要望每个对象都要创建一个collection。可替代的策略是使用嵌入对象(embed object)。
例子,在下面的图,有两个collection。
合法的键的名称Legal Key Names
键的名称有下面的限制:
'$' 字符不能作为首字母。
不能包含'.' 字符
MongoDB Inserting 插入数据
当我们要向MongoDB插入数据,数据格式就是document。
document的数据结构和JSON基本一样。
Python的dictionaries和ruby的hashes都是例子。 这个部分主要讲解MongoDB数据的插入。
MongoDB 关于索引的建议
我们收到了很多关于索引的问题。这一部分解答了其中的一小部分。有几点要记住。
第一,MongoDB索引和MySQL索引非常相似并且对于MySQL的索引优化有很多也适用于MongoDB。
第二,更重要的是,这些索引的建议对你的应用提高也是有限的。
对于应用的最佳索引策略应该基于很多的重要因素。包含了你期望查询的类型,
Multikeys(多个键)
MongoDB提供了 "multikey" 的特性可以自动索引数组每个元素。
一个好的例子就是关于Tagging。假使一篇文章的tag
使用 Multikeys 模拟大数量的索引
- 博客分类:
- MongoDB
使用 Multikeys 模拟大数量的索引
数据如果有非常多的属性,可以使用multikey索引的特性。
举例
> x = {
... _id : "abc",
... cost : 33,
... attribs : [
... { color : 'red' },
... { shape : 'rect' },
... { color : 'blue' },
... { avail : true } ]
...
索引Indexes
索引常常用来大幅度的提升查询的性能。 考虑应用程序的查询种类是非常重要的事情,因此你就要定义相关的索引。
决定了之后,在MongoDB中创建索引是非常简单的。
基础
索引就是collection中一个document指定一个字段值的数据结构。MongoDB查询优化器可以使用这个数据结构快速分类整理以及排序document。一般来说,索引的实现是B-TREE。
在Shell中,你可以使用ensureIndex()来创建索引,并且指定要索引一个或多个字段。
我们在j字段上创建一个索引
db.things.ensure ...
使用MongoDB GridFS的场景
这个页面还在更新中。。。
GridFS
GridFS是MongoDB存储大文件的一个规范。所有的官方支持的驱动都实现了 GridFS spec.
基本原理
数据库支持在BSON对象内的二进制存储。
使用大数据量的collection.
在MongoDB存储信息用多个collection来替代一个collection。这样做每个重复的数据不必存在每个对象中,
并且也不必再这个键上创建索引了。更重要的是性能,可以通过指定组来分布数据。
举个例子,假使我们要存储日志。并且有N种类型,如dev,debug,ops等。我们用一个collection来存储。
{ log : 'dev', ts : ..., info : ... }
Capped Collections
Capped collections 就是固定大小的collection。
它有很高的性能以及队列过期的特性(过期按照插入的顺序). 有点和 "RRD" 概念类似。
Capped collections是高性能自动的维护对象的插入顺序。它非常适合类似记录日志的功能。