mongo设计(一)】的更多相关文章

原文:http://blog.mongodb.org/post/88473035333/6-rules-of-thumb-for-mongodb-schema-design-part-3 By William Zola, Lead Technical Support Engineer at MongoDB 这篇文章是系列的最后一篇.在第一篇文章里,我介绍了三种针对“一对多 ”关系建模的基础方案.在第二篇文章中,我介绍了对基础方案的扩展:双向关联和反范式化. 反范式可以让你避免一些应用层级别的jo…
原文:http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema-design-part-2 By William Zola, Lead Technical Support Engineer at MongoDB 在上一篇文章中我介绍了三种基本的设计方案:内嵌,子引用,父引用,同时说明了在选择方案时需要考虑的两个关键因素. 一对多中的多是否需要一个单独的实体. 这个关系中集合的规模是一对很少,很多,还是…
原文:http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1 By William Zola, Lead Technical Support Engineer at MongoDB “我有丰富的sql使用经验,但是我是个MongoDB的初学者.我应该如何在MongoDB中针对一对多关系进行建模?”这是我被问及最多的问题之一. 我没法简单的给出答案,因为这有很多方案去实现.…
-背景: 鉴于我们使用mongo作为数据库,期间少不了需要添加索引和对业务表进行设计.因此以下我对mongo索引及表设计原则做了一些分享.希望对大家有用,如有错误还望指正~ MongDB的索引类型简介: -单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 1,单建索引 db.table.createIndex({"user_id":1}) 1:升序 -1:降序 使用说明:只要查询中包含user_id即可使用索引 无论是在find条件中 还是在sort中 1,-1都会使用…
public class TagProperty { private String type; private int count; } @Document(collection = "tag") public class Tag extends BaseEntity { @Field("user_id") @Indexed private String userId; //key->标签文本 value->标签属性 private Map<Str…
回到目录 之前已经发生了 大叔之前讲过被仓储化了的Mongodb,而在大叔开发了Lind.DDD之后,决定把这个东西再搬到本框架的仓储层来,这也是大势所趋的,毕竟mongodb是最像关系数据库的NoSql,它的使用场景是其它nosql所不能及的,这点是毋庸置疑的! 下面是大叔总结的Mongodb文章目录,选自<大叔Mongodb系列> MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-…
回到目录 说一些关于ObjectId的事 MongoDB确实是最像关系型数据库的NoSQL,这在它主键设计上可以体现的出来,它并没有采用自动增长主键,因为在分布式服务器之间做数据同步很麻烦,而是采用了一种ObjectId的方式,它生成方便,占用空间比long多了4个字节,(12个字节)在数据表现层面也说的过去,它是一种以时间,机器,进程和自增几个因素组合的方式来体现的,可以近似看成是按时间的先后进行排序的,对于ObjectId的生成我们可以通过MongoDB服务端去获得,或者在客户端也有对它的集…
回到目录 一些概念 对于Mongo在数据容灾上,推荐的模式是使用副本集模式,它有一个对外的主服务器Primary,还有N个副本服务器Secondary(N>=1,当N=1时,需要有一台仲裁服务器Arbiter,当N>1时不需要Arbiter),它们之前是通过内部机制实现同步的,并且当Primary挂了后,它会通过内部的心跳机制,选举别一台Secondary成为一个Primary,与外界(Route)进行通讯. 工业标准 在标准上,我们的副本集推荐使用奇数个服务器(3,5,7,9),但经过我的测…
需求背景 目前主流的博客系统.CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分.相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的映射表来增加系统的负载和查询的效率. 数据库设计方案1 此方案分为2个表:Tag表 和 文章表 Tag表结构: tagid # tag标签的ID tagname #tag内容 num #当前Tag的引用个数 文章表: ID #文章ID title #文章标题 tags #tags列表,多个以,分割…
到今天为止,Mongo开发的权限管理系统功能就做完了,剩下的就是完善构架,优化结构,只是现在c#操作Mongo的各种操作基本都掌握了 说到权限管理系统,其实再简单不过了,在关系型数据的是时代,我们通常建一个菜单表,菜单用内建来管理子菜单,然后再建一个角色表(或用户表),然后再建一个角色和菜单的对应关系表,存上菜单id和角色id的对应关系.当然了,方法很多,我只是 举了一个相对比较常见的设计方式. 用上Mongo之后我本来照搬以前的设计思路,完成了权限管理,完成之后突然觉得这样不太好吧.比较Mon…
写到第二篇不得不说是我之前犯了一个小错误,其实实现子表存储也是很简单的事,先说我想实现什么样的效果吧 就是用户表里有个成绩字段,成绩字段是个子表 其实实现这个功能也很简单,用面向对象的思想很好理解,子表就是user表的一个对象字段或者集合字段,所以我觉得用c#开发Mongo用面向对象的思想开发更合适一些 public class User { public ObjectId Id { get; set; } public string Name { get; set; } public stri…
本文是整理的关于优酷.YouTube.Twitter及JustinTV几个视频网站的架构或笔记,对于不管是视频网站.门户网站或者其它的网站,在架构上都有一定的参考意义,毕竟成功者的背后总有值得学习的地方,虽然有些文章的发表时间有点久了,但是看看对开阔视野还是有帮助的. 优酷视频网站架构 一.网站基本数据概览据2010年统计,优酷网日均独立访问人数(uv)达到了8900万,日均访问量(pv)更是达到了17亿,优酷凭借这一数据成为google榜单中国内视频网站排名最高的厂商.硬件方面,优酷网引进的戴…
原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=208931479&idx=1&sn=1dc6ea4fa28a3fb527a6204a9a5c23b1&key=c76941211a49ab5849fe180925fd9816350457f931e54a80feca07c081bffea5828ae0bbb2b1f7be41501db7dea48977&ascene=0&uin=Mjk1ODMy…
原文:Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years 译文:两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计 Pinterest正经历了指数级曲线般的增长,每隔一个半月翻翻.在这两年里,Pinterest,从 每月PV量0增长到10亿,从两名成立者和一个工程师成长为四十个工程师,从一台MySQL 服务器增长到180台Web 服务器(Web Engine),240…
mongo做为NOSQL家族中一员,被广泛使用以及应用到生产环境中,有其出色的性能.关系型数据库(RDBMS )在互联网中依然是不可替代的一部分,mongo基于NOSQL的特性,在程序中RDBMS不适用或性能不高,操作不便,以及缺陷的领域发挥重要的作用. RDBMS基于ACID准则设计: ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(Transa…
原文来自于:http://www.infoq.com/cn/articles/fengche-co-architecture 风车这个项目开始于 2011 年 11 月份,之前叫做 Pragmatic.ly.从第一天开始我们基本上就定了大致的框架结构,在今天回头看,基本上整个架构都没有什么变化,可以算是个很成熟和很适合时代的方案,☺. 最近一两年,作为技术人员,我们都能很明显的感觉到前端技术的飞速发展,比如 HTML5 支持,移动端优先.响应式界面设计以及层出不穷的各种客户端框架.而所有这些,都…
前言 最近闲的时间有点多,所以还是写博客吧. 有人说Mongo 2.0的写法难以把控,好多地方不知道咋用,所以坚持用1.0(不愿意去尝试2.0),我感觉不可理解.所以写篇博客比较下. Mongo C#驱动1.0到2.0设计方面的差别非常大. 正文 先说1.0吧,更像是Mongo 各功能的直译,所以写法与mongo原生查询修改等比较类似,易上手.但是设计上确实存在很多问题.简单说几点: a.在query的构建方面,虽然有问题,但是勉强能接受 var modelCursor = collection…
简单的介绍一下,我使用MongoDB的场景. 我们现在的物联网环境下,有部分数据,采样频率为2000条记录/分钟,这样下来一天24*60*2000=2880000约等于300万条数据,以后必然还会增加.之前数据库使用的是mssql,对于数据库的压力很大,同时又需要保证历史查询的响应速度,这种情况下,在单表中数据量大,同时存在读写操作.不得已采用MongoDB来存储数据.如果使用MongoDB,则至少需要三台机器,两台实现读写分离,一台作为仲裁(当然条件不允许也可以不用),每台机器的内存暂时配置在…
在社区系统的DDD实践过程中,将遇到一些问题和产生的想法记录下来,共讨论. 本文为[DDD]系列文章中的其中一篇,其他内容可参考:使用领域驱动设计思想实现业务系统. 1.dto.model和entity之间的互相转化 user interface层的dto.domian层的model.infrastructure层的entity之间的互相转换,比较繁琐,硬编码容易出错. 如果命名较为规范,则可以考虑交给一个公共服务完成自动转换,约定俗成:dto和model为驼峰式命名,entity和数据库表保持…
前言 2016年伊始,开始研究NoSql.看了couchdb,cloudant,cassandra,redis.却一直没有看过排行榜第一的mongo,实属不该.近期会花时间研究下mongo.本文是初识mongo的体验.有错误之处,还望指正. Mongo VS cassandra 目前NoSql 排行版前三是Mongo,Cassandra,Redis.Redis 特点明确,key-value 形式,数据不持久化主要用来做缓存.所以这里主要比较Mongo,Cassandra license mong…
什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. 主要特点 MongoDB的提供了一个面向文档存储,操作起来比较简单和容易. 你可以在MongoD…
摘要 driver 连接Mongo DB的url其实很简单,就是几个变量拼接成一个url,和关系型数据库没什么不同.但是因为mongo有单个instance和replicaSet不同的部署策略,还有mongo 节点有主从之分.所以配置参数容易混淆.另外Mongo NodeJs Driver版本不同,居然也会有坑.这里作个简单介绍 正文 mongo client 连接到db字符串 格式: mongodb://username:password@host1,host2:27017/?replicaS…
除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0.6 上一章我们了解了mongo shell中aggregate复杂的互相调用关系.那么,spring-data-mongodb中aggregate又是如何与mongo交互的?是将语句拼接成我们熟悉的函数(db._collection_.find/update...)还是命令(db.runComma…
原文地址:The Clean Architecture The Clean Architecture Over the last several years we've seen a whole range of ideas regarding the architecture of systems. These include: Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted…
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验.求职心得和成长感悟,以及作为程序员的思考和见解.(关注公众号后回复”资料“即可领取 3T 免费技术学习资源) ​ 文章版权归腾讯GAD所有,禁止匿名转载:禁止商业使用:禁止个人使用. 一.前言 从去年12月份开始,到现在,我全程参与了公司一款SLG手游的研发,负责整个游戏的服务端部分.这也是我第一次…
Windows 平台安装 MongoDB MongoDB 下载 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community 注意:在 MongoDB 2.2 版本后已经不再支持 Windows XP 系统.最新版本也已经没有了 32 位系统的安装文件. MongoDB for Windows 64-bit 适合…
1.下载mongo:  curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 2.解压: tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 3.重新命名:mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb 4.添加环境变量: export PATH=<mongodb-install-directory>/bin:$PATH …
最近爬取mobike和ofo单车数据,需要存储在csv文件中,因为设计的程序没有写存储csv文件的方法,为了偷懒所以就继续存储到了MongoDB中.恰好MongoDB支持导出的数据可以是csv文件和json文件,所以下面介绍下MongoDB mongoexport和mongoimport方法: 一.导出工具mongoexport 简介,通过帮助先了解下mongoexport的功能参数 [root@iZ2ze4b308vd83fulq9n7iZ ~]# mongoexport --help Usa…
spring data mongo 打印mongo NoSql语句 log4j.properties log4j.rootLogger=INFO, stdout log4j.logger.org.springframework.data.mongodb.core=DEBUG, mongodb log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.ap…
原文链接:http://www.mongoing.com/mongodb-advanced-pattern-design 12月12日上午,TJ在开源中国的年终盛典会上分享了文档模型设计的进阶技巧,就让我们来回顾一下吧: —————————————————————————————————————————————————————————- 从很久以前,我就开始接触开源产品:从最开始的使用.受益者到后来的贡献者,到现在的热情推广者.现在,我是MongoDB的技术顾问.我的职责是为MongoDB的客户…