Posts

TODO 项目地址:: TODO ref mongodb本身是无模式的,但是使用时都要在application层实现模式约束. mongoengine是个mongodb ORM库。已相当成熟稳定, 使用广泛, 开发活跃. 性能相对也不错(可以参见项目下的bench). 使用下来发现mongoengine还是很不错的库,但是有部分特性使用起来并不方便. mongoengine问题 索引问题 索引应该跟document分开.并且有自动化建立和删除的command. 把索引定在Document/meta/indexes里很糟糕: 写法很乱,不易管理。 有时会失效,没有建立对应的索引 listField校验问题 listField没法做长度限制 set/sortset/max-len list/ sort-list等结构没有实现 不支持自定义字段验证/文档级验证 pre_save/after_save hooks 不可存储的EmbdDocumment TODO 待考虑 可扩展的Document TODO 待考虑
Jul 31, 2014
1 min read
TODO: 来源 索引可以加快读取操作,但是会降低写入和更新操作, 一般要根据文档的读写比决定是否使用索引 可以使用hint和explain来比较和测试索引的实际效果, 但要注意mongodb热数据缓存带来的影响 对于较小的集合,使用索引查询反而会让查询更慢, 因为一次大的顺序读变成了多次随机读 nosqlfan是个学习和找问题的好地方 mongodb索引简介 基本操作 索引一般使用B+树结构,来优化查询操作, 建立的索引应该符合查询要求,才能发挥作用 db.things.ensureIndex({j:1}) 默认单列/文档/组合索引 每个集合都会有个默认索引 _id ,该字段不能删除 单列索引可以是独立字段,也可以是嵌套文档字段 建立文档索引会导致 必须使用严格匹配的查询才能返回结果,一般用组合索引替代 TODO 稀疏索引的概念与sql中的稀疏索引概念不同 mongodb不会为字段值不存在的文档加入索引,null值不能被查出 唯一索引 db.ensureIndex({j:1}, {unique: true}) db.ensureIndex({j:1}. {unique: true, dropDups: true}) 特殊索引 mongodb支持2d索引,用于地理位置服务。 mongodb支持text全文索引,但是功能较弱. 须注意: mongodb 2d索引使用B+树结构,不会造成性能上的问题。勿轻信性能问题 http://blog.nosqlfan.com/html/1811.html mongodb 2d索引返回的距离不会实际距离,而是坐标点距离. 根据实际情况做 /111, 或是/65535处理
Jun 27, 2014
1 min read
内容参考: 来自 TODO 调用timeit做性能测试 %timeit range(10000) ipython里run代码 在ipython里调用 %run program 跑程序,程序每次都会执行, 参数如下: TODO ipython里load代码 %load根据路径加载文件 debug调试代码 在出异常后,调用 %debug进入pdb开始调试程序 调用%pdb,在出异常时.会自动进入pdb调试 TODO ipython历史 TODO ipython代码宏 TODO ipython配置文件 TODO 启动脚本文件 调用ipython -i <pyfile> 在加载脚本文件后在启动ipython 在profile_default/startup目录下放置的脚本文件会依次在ipython启动前加载
Mar 21, 2014
1 min read