Suche senden
Hochladen
MongoDB in SNS
•
Als PPTX, PDF herunterladen
•
13 gefällt mir
•
1,192 views
K
kidrane
Folgen
MongoDB Beijing Meetup on May 7th.
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 40
Jetzt herunterladen
Empfohlen
电子书项目总结 前端
电子书项目总结 前端
jay li
What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發
Tun-Yu Chang
Web爬虫那点事
Web爬虫那点事
Yihua Huang
CodeFest 2014. Хамидуллин В. — Яндекс.Диск: Миллионы пользователей и MongoDB
CodeFest 2014. Хамидуллин В. — Яндекс.Диск: Миллионы пользователей и MongoDB
CodeFest
Building a Social Network with MongoDB
Building a Social Network with MongoDB
Fred Chu
基于架构的开发模式
基于架构的开发模式
thinkinlamp
基于架构的开发模式
基于架构的开发模式
samon127
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
Monster Supreme
Empfohlen
电子书项目总结 前端
电子书项目总结 前端
jay li
What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發
Tun-Yu Chang
Web爬虫那点事
Web爬虫那点事
Yihua Huang
CodeFest 2014. Хамидуллин В. — Яндекс.Диск: Миллионы пользователей и MongoDB
CodeFest 2014. Хамидуллин В. — Яндекс.Диск: Миллионы пользователей и MongoDB
CodeFest
Building a Social Network with MongoDB
Building a Social Network with MongoDB
Fred Chu
基于架构的开发模式
基于架构的开发模式
thinkinlamp
基于架构的开发模式
基于架构的开发模式
samon127
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
Monster Supreme
Introduction to NoSQL
Introduction to NoSQL
jasonfuoo
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
MongoDB Basics and Tutorial
MongoDB Basics and Tutorial
Ho Kim
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
Hong Cai
深入学习Mongo db
深入学习Mongo db
Lucien Li
Mongo db 簡介
Mongo db 簡介
昱劭 劉
Go
Go
Feng Yu
110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury
Zoom Quiet
Mongo db 特性
Mongo db 特性
Hermes Chiang
Bootstrap 導入分享
Bootstrap 導入分享
得翔 徐
Google code开源项目精选:
Google code开源项目精选:
wensheng wei
前端工程開發實務訓練
前端工程開發實務訓練
Joseph Chiang
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
easychen
I os与android多平台开发心得
I os与android多平台开发心得
drewz lin
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]
Benny Chak
Taobao数据库这5年
Taobao数据库这5年
yp_fangdong
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
Yi-Feng Tzeng
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化
洧杰 廖
Mongodb 20110610
Mongodb 20110610
小 米猪
Big Java, Big Data
Big Java, Big Data
Kuo-Chun Su
Weitere ähnliche Inhalte
Ähnlich wie MongoDB in SNS
Introduction to NoSQL
Introduction to NoSQL
jasonfuoo
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
MongoDB Basics and Tutorial
MongoDB Basics and Tutorial
Ho Kim
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
Hong Cai
深入学习Mongo db
深入学习Mongo db
Lucien Li
Mongo db 簡介
Mongo db 簡介
昱劭 劉
Go
Go
Feng Yu
110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury
Zoom Quiet
Mongo db 特性
Mongo db 特性
Hermes Chiang
Bootstrap 導入分享
Bootstrap 導入分享
得翔 徐
Google code开源项目精选:
Google code开源项目精选:
wensheng wei
前端工程開發實務訓練
前端工程開發實務訓練
Joseph Chiang
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
easychen
I os与android多平台开发心得
I os与android多平台开发心得
drewz lin
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]
Benny Chak
Taobao数据库这5年
Taobao数据库这5年
yp_fangdong
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
Yi-Feng Tzeng
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化
洧杰 廖
Mongodb 20110610
Mongodb 20110610
小 米猪
Big Java, Big Data
Big Java, Big Data
Kuo-Chun Su
Ähnlich wie MongoDB in SNS
(20)
Introduction to NoSQL
Introduction to NoSQL
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
MongoDB Basics and Tutorial
MongoDB Basics and Tutorial
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
深入学习Mongo db
深入学习Mongo db
Mongo db 簡介
Mongo db 簡介
Go
Go
110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury
Mongo db 特性
Mongo db 特性
Bootstrap 導入分享
Bootstrap 導入分享
Google code开源项目精选:
Google code开源项目精选:
前端工程開發實務訓練
前端工程開發實務訓練
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
I os与android多平台开发心得
I os与android多平台开发心得
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]
Taobao数据库这5年
Taobao数据库这5年
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化
Mongodb 20110610
Mongodb 20110610
Big Java, Big Data
Big Java, Big Data
MongoDB in SNS
1.
刘祥超 05/06/2011 SNS中的MongoDB
2.
个人介绍 Iwind –
架构师 RockMongo – MongoDB管理软件http://code.google.com/p/rock-php PHP+MongoDB 将近一年的版本更新 9种国际化语言 Windows/MacOS/Unix的集成环境 7 committers and contributors 欢迎合作开发社区和游戏产品 联系方式: Gmail: iwind.liu@gmail.com QQ: 19644627
3.
Why mongo MongoDBvs
RDBS MongoDBvs other NoSQLs 文档模型的优势
4.
MongoDBvs RDBS RDBS
稳定和健壮 成熟的解决方案 结构分散,查询繁琐 效率低下 MongoDB 快速发展当中,不够成熟 新的编程模式 Key/value 高存储和读写效率 安装、维护、扩展容易
5.
MongoDBvs其他NoSQL 其他NoSQL 存储对象间关系较弱
Set/get速度极快 适合做缓存 MongoDB 支持存储对象间的查询 Group/distinct MapReduce 驱动较全C/C++/Java/PHP/node.JS /Scala… Set/get稍弱 适合做存储
6.
MongoDB文档模型的优势 BSON Encode/decode
快,在PHP中 比json速度快30% 比serialize速度快100% JSON 易于学习 一次性读取一组信息 容易集成到其他系统中 使用嵌套对象减少集合数量
7.
SNS中的技术特点 以用户为中心 高并发
写操作频繁 服务稳定性 高扩展性 即时功能 IM 消息
8.
特点 - 以用户为中心
索引 以uid为第一过滤条件
9.
特点 – 高并发
Replica Set http://www.mongodb.org/display/DOCS/Replica+Sets 读写分离、分布:slaveOkay
10.
特点 – 写操作频繁
Replica Set
11.
特点 - 服务稳定性
Replica Set 数据冗余 故障转移 热维护 故障恢复: delayed secondary - slaveDelay
12.
特点 – 高扩展性
Sharding http://www.mongodb.org/display/DOCS/Sharding maxSize
13.
特点 – 即时
MongoDB可以支撑长连接 配合Memcache
14.
设计原则 效率 简单
限制
15.
设计原则 – 效率
优先选择效率高的方案 保留扩展的可能
16.
设计原则– 简单 简化数据结构
制定通用的规则 命名 集合设计模式 不考虑未知的需求 尽可能减少字段 尽可能聚合而非拆分
17.
设计原则 – 限制
只使用MongoDB作为存储数据库 只考虑在Linux/Unix下的运行效率 只考虑Nginx下的优化 只支持某一种开发语言 Java PHP 对SNS做出限制 只考虑1000条数据 允许数据显示的延迟(<10s) 特殊问题特殊对待
18.
Schema 仅供参考 Map:
{ … } List: [ … ]
19.
常用模式 自定义函数 模版模式
20.
自定义函数 – sytem.js
在控制台上操作 参考RockMongo
21.
自定义函数 实际应用中不会明显提升效率 简化程序
可以根据关联集合过滤数据 可以一次性取出多个集合的数据 可以批量提交更新 由于效率问题,不应该只使用$where
22.
自定义函数 - 示例
23.
模版模式 分离数据和显示 易扩展和维护
体积小 存储 渲染
24.
SNS常用功能的设计 好友 新鲜事
在线状态 访问统计 聊天会话 事件
25.
好友设计 一次性读取list $slice分页
公共的好友: Intersect($list1, $list2) 好友的好友(可能认识的好友) $diff = Diff($list1, $list2) $diff = Diff($list1, $list3) … Top(group($diff)) 方便分组
26.
新鲜事设计 - 1
样式各异 只需要保留最近的
27.
新鲜事设计 - 2
设计 查询 $in
28.
在线状态设计 State 0
离线 1在线 放在users表中
29.
在线状态 – 查询
状态 离线:online.state=0||updated_at<最近五分钟 离开:online.state=1 && updated_at>最近五分钟 在线:online.state=1 && updated_at>最近1分钟 列表 在线的好友: db.users.find({ “uid”: {$in: [friends], “在线”:1 } }) 在线的人的资源: is_online函数:在online中查询db.users表 db.resources.find({ $where: “is_online(this.uid)” })
30.
在线状态 – 更新
comet轮询中更新
31.
访问统计设计 日统计 月统计
总访问数 $addToSet 查询
32.
聊天会话设计
33.
聊天会话 – 对象
会话人 – connections 会话 – conversations 消息 - messages
34.
聊天会话 – 设计
35.
聊天会话 – 查询
通过conversation_id将两人联系起来,理论上是多人的 查询user_connections取得正在会话的人 查询user_conversations查询当前会话的状态 查询user_messages查询会话的消息 每个消息两份,可以单方面删除或清空
36.
事件设计 事件源 控制中心
订阅者 事件
37.
事件 – 查询
订阅事件 $addToSet events 发布事件 $set list.事件类型:事件数据 $set updated_at_ms 查询事件 comet长轮询 先检查updated_at_ms 再取数据
38.
总结 减少查询,尽可能一次到位 减少查询的字段数
在对象中多使用嵌套的Map/List $addToSet减少查询
39.
配合工具 目的 减少查询
用更适合的工具做不同的事情 Memcached比MongoDB快2~3倍 Nginx Fastcgi cache Memcached 分布式的内存缓存 共享内存 内存缓存,比Memcached快3~4倍 MongoDB Memcached Share Memory Nginx
40.
Thanks Thanks
Jetzt herunterladen