随笔分类 -  mongoDB

摘要:回到目录 对于MongoDB这个非关系型数据库(NoSql)来说,找一个IDE工具不是很容易,还好被我找到了,它就是大名鼎鼎的MongoVUE,它可以对mongodb数据表进行增删改查,下面我主要说一下它的查询功能,它与传统的SQLSERVER不同,在写语句时我们需要了解一下它自己的一些关键字。 1 阅读全文
posted @ 2015-06-18 15:18 张占岭 阅读(18324) 评论(4) 推荐(2) 编辑
摘要:回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在项目中,还是实现了这种批量的操作,并且已经通过测试,下面公开一下源代码 在程序实现之中,我们使用了W 阅读全文
posted @ 2015-06-09 22:09 张占岭 阅读(23963) 评论(3) 推荐(1) 编辑
摘要:回到目录 递归递归我爱你!只要你想做,就一定能成功! 从一到二,从二到三,它是容易的,也是没什么可搞的,或者说,它是一种流水线的方式,而从三到十,从十到百,它注定要有一个质的突破,否则,它会把你累死,代码写的让你自己都觉得想吐!有时,我们是被逼出来的,对于一种功能的实现,我们有时需要有从三到十的态度 阅读全文
posted @ 2015-06-04 22:19 张占岭 阅读(4542) 评论(4) 推荐(0) 编辑
摘要:回到目录 注意,这里说的值对象是指在MongoDB实体类中的,并不是DDD中的值对象,不过,两者也是联系,就是它是对类的补充,自己本身没有存在的价值,而在值对象中,也是不需要有主键Id的,这与DDD也是不谋而合的,也是可以理解的,因为它只是对主对象的一种补充说明,自己不存在任何意义,所以要主键也没什 阅读全文
posted @ 2015-06-03 13:42 张占岭 阅读(4236) 评论(0) 推荐(0) 编辑
摘要:回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋一下初值,即new一下它,呵呵. 正确的mongo集合 对于赋过初值的子对象,在按需要更新时,有以下 阅读全文
posted @ 2015-06-02 15:27 张占岭 阅读(1221) 评论(0) 推荐(0) 编辑
摘要:回到目录 我不得不说,mongodb官方驱动在与.net结合上做的不是很好,不是很理想,所以,我决定对它进行了二次封装,这是显得很必然了,每个人都希望使用简单的对象,而对使用复杂,麻烦,容易出错的对象尽而远之,这是正常的,人都是喜欢懒惰的,就像程序员,也是一样,喜欢偷懒,可能说,偷懒是程序员进步的一 阅读全文
posted @ 2015-06-01 17:06 张占岭 阅读(3096) 评论(0) 推荐(1) 编辑
摘要:回到目录 批量插入在EF时代大叔就自己封装过,原理是将多次SQL连接和多次向SQL发送的指令减少到1次,或者1000条数据1次,而对于EF产生的语句来说,这无疑是性能高效的,因为EF这边在处理时,每个语句都会向SQL发送一次,当然就算它是在一个SQL连接里,向SQL发送N多条指令,也是性能低下的。 阅读全文
posted @ 2015-05-29 21:59 张占岭 阅读(20708) 评论(1) 推荐(0) 编辑
摘要:回到目录 在对MongoDB进行封装后,对于Update更新对象里的集合属性时出现了一个现象,让人感到很恶心,人家更新前是个美丽的Array,但是更新之后集合对象变成了键值对,键是集合的类型名称,值是真实的数组值,哈哈,这个问题起初困扰了我很久,今天终于豁然开朗了,原来是Update方法的问题,呵呵 阅读全文
posted @ 2015-05-29 15:08 张占岭 阅读(5679) 评论(3) 推荐(0) 编辑
摘要:回到目录 关于官方驱动集成IQueryable之后的一些事,有好事也有坏事,好事就是它会将你的linq语句非常友好的翻译成MongoDB语句,而坏事就是有一些linq语句不会被翻译,不会被翻译的代价就是将整个结果集装到内存,然后进行linq to object的查询,效率自然是非常低的,呵呵。 好事 阅读全文
posted @ 2015-05-07 09:24 张占岭 阅读(1648) 评论(0) 推荐(0) 编辑
摘要:回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助和启发,文章中有对新技术的研究(Mongo驱动),对老技术的回顾(代码重构),还有对架构设计的阐述等 阅读全文
posted @ 2015-04-29 22:46 张占岭 阅读(5579) 评论(3) 推荐(4) 编辑
摘要:回到目录 上一讲说了MongoDB官方驱动的查询功能,这回说一下官方驱动的增删改功能,驱动在升级为2.0后,相应的insert,update和delete都只有了异步版本(或者叫并行版本),这当然也是跟着.net走的正方向,大事所趋,但有时,我们的前台已经使用同步方式实现了,为了不改变前台代码,所以 阅读全文
posted @ 2015-04-29 22:36 张占岭 阅读(6187) 评论(2) 推荐(0) 编辑
摘要:回到目录 MongoDB的官方驱动,语法更好,更强 之前写过关于IMongoRepository仓储的文章,在mongodb的驱动选择上使用了NoRM,但是进行$ref引用类型导航时出现了问题,它对引用类型属性支持不是很好,还是使用几年前的泛型技术而没有使用Attribute,在这个方面官方驱动做的 阅读全文
posted @ 2015-04-27 22:11 张占岭 阅读(6410) 评论(2) 推荐(3) 编辑
摘要:回到目录 一些概念 对于Mongo在数据容灾上,推荐的模式是使用副本集模式,它有一个对外的主服务器Primary,还有N个副本服务器Secondary(N>=1,当N=1时,需要有一台仲裁服务器Arbiter,当N>1时不需要Arbiter),它们之前是通过内部机制实现同步的,并且当Primary挂 阅读全文
posted @ 2015-04-17 16:25 张占岭 阅读(1516) 评论(0) 推荐(0) 编辑
摘要:回到目录 对于数据分页,我们已经见的太多了,几乎每个列表页面都要用到分页,这已经成了一种定理了,在进行大数据展示时,如果不去分页,而直接把数据加载到内存,这简直是不可以去相向的,呵呵,在很多ORM工具中都对分页有了更好的支持,如LINQ里有大家熟悉的take和skip,而在MongoDB里也有这种概 阅读全文
posted @ 2015-04-11 22:13 张占岭 阅读(8759) 评论(0) 推荐(0) 编辑
摘要:回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoDB里的索引,在我进行对500万数据进行查询测试时,发现如果你的查询字段不加索引,那是相当恐怖的,一个 阅读全文
posted @ 2015-04-10 15:35 张占岭 阅读(9356) 评论(1) 推荐(0) 编辑
摘要:回到目录 当我们从MongoDB网站下载安装包之后,它会伴随有一系列的工具,服务器程序mongod是我们耳熟能详的了,客户端mongo和性能检测mongostat我们可能就没有用过了,今天主要是介绍一下mongo这个客户端命令行工具的使用。 测试环境:服务端:linux版的mongod 2.6.9 阅读全文
posted @ 2015-04-10 13:40 张占岭 阅读(1865) 评论(0) 推荐(0) 编辑
摘要:回到目录 说一些关于ObjectId的事 MongoDB确实是最像关系型数据库的NoSQL,这在它主键设计上可以体现的出来,它并没有采用自动增长主键,因为在分布式服务器之间做数据同步很麻烦,而是采用了一种ObjectId的方式,它生成方便,占用空间比long多了4个字节,(12个字节)在数据表现层面 阅读全文
posted @ 2015-04-09 13:08 张占岭 阅读(14043) 评论(0) 推荐(1) 编辑
摘要:回到目录 仓储大叔,只要是持久化的东西,都要把它和仓储撤上关系,为啥,为的是开发人员在使用时统一,高可用及方便在各种方式之间实现动态的切换,如ef与redis和mongoDB的切换,你完成可以通过IRepository接口再配合IOC来实现,方便致极! 之间写过一个redis仓储和xml仓储,感兴趣 阅读全文
posted @ 2015-04-08 12:00 张占岭 阅读(8453) 评论(4) 推荐(3) 编辑
摘要:回到目录 Redis学习笔记已经告一段落,Redis仓储也已经实现了,对于key/value结构的redis我更愿意使用它来实现数据集的缓存机制,而对于结构灵活,查询效率高的时候使用redis就有点不太合适了,对于以文档结构(document)实现存储的MongoDB来实现数据集的查询更合适一些,并 阅读全文
posted @ 2015-03-30 10:34 张占岭 阅读(1979) 评论(0) 推荐(2) 编辑