首页 NoSQL误用和常见陷阱分析(孙立)

NoSQL误用和常见陷阱分析(孙立)

举报
开通vip

NoSQL误用和常见陷阱分析(孙立) 孙立@qunar.com weibo.com@sunli1223 误用和常见陷阱分析 大纲 被误用的NoSQL NoSQL陷阱 NoSQL与MySQL NoSQL无处不在 NoSQL运维 被误用的NoSQL 非常容易出现的错误使用方法 循环网络调用 •  Memcached的循环和批量GET对比 Map  result=new  HashMap();            for  (int  i  = ...

NoSQL误用和常见陷阱分析(孙立)
孙立@qunar.com weibo.com@sunli1223 误用和常见陷阱分析 大纲 被误用的NoSQL NoSQL陷阱 NoSQL与MySQL NoSQL无处不在 NoSQL运维 被误用的NoSQL 非常容易出现的错误使用方法 循环网络调用 •  Memcached的循环和批量GET对比 Map  result=new  HashMap();            for  (int  i  =  0,len=keys.length;  i  <  len;  i++)  {                      //循环获取memcached数据                              result.put(keys[i],  memcacheGet(keys[i]));        } //使用批量get协议  Map objMap = client.get(Arrays.asList(keys)); 5倍性能的影响 10个key消耗10ms 10个key消耗2ms 循环网络调用 •  Redis的循环和批量GET对比 Map  result=new  HashMap();            for  (int  i  =  0,len=keys.length;  i  <  len;  i++)  {                      //循环获取memcached数据                              result.put(keys[i],  jredis.get(keys[i]));        } //循环从redis  get数据  jredis.mget(keys); 100个key消耗10ms 100个key消耗5ms 2倍性能的影响 不压缩大数据 •  压缩的分类 不压缩 NoSQ存储 压缩 外部 client压 缩 不压缩大数据 •  内部压缩和外部压缩 内部压缩 web web web NoSQL内部压缩,可以减小存储,提 升IO性能,不能提升网络IO性能 Web-外部压缩 Web-外部压缩 Web-外部压缩 外部压缩,可以减小存储,提升IO性能, 并且能够提升网络IO性能 不压缩大数据 •  压缩对比 内部压缩 web web web Web-外部压缩 Web-外部压缩 Web-外部压缩 无压缩的原始数据 压缩后的数据 (1000*1024*1024/8)/(10*1024)=12800 qps (1000*1024*1024/8)/(4*1024)=32000 qps 1000Mb网卡单条数据10KB的理论qps CPU消耗可扩展 CPU消耗不可扩展 跨语言交互 NoSQL serialize PHP Other 能unserialize? NoSQL 某压缩算法 JAVA Other 能解压吗? NoSQL陷阱 NoSQL是一个新兴的话题,大量的NoSQL产品 也都是新出来的,难免出现各式各样的陷阱。 不能避免陷阱,但是得掉进去可以爬出来。 官方数据很美好 •  官方数据 •  很少有提及缺点的 Tokyo Cabinet 的官方数据。实际测试 你会发现,数据增加后,速度会骤减 场景错误 •  Redis做持久存储 – 单点、复制问题 – 数据超过内存性能急剧下降 – 扩容问题 •  Redis做Cache存储 – 性能极高 – 数据结构丰富 – 可以持久化、避免雪崩现象 细节描述不清楚 •  Ttserver=>兼容memcached协议 不支持memcached的flag参数 早期版本increment与memcached不一致 Stats命令不一致 缓存重建 •  系统重启后,大部分请求到磁盘 •  整个系统的性能可能出现抖动 •  出现连锁雪崩反应 NoSQL陷阱-32bit问题 •  Ttserver -2GB(32bit) •  Mongodb-2.5GB (32 bit) Ttserver在32bit下,到达2g数据大小 将出现无法启动的现象 版本升级问题 •  版本升级带来兼容问题(官方未声明的) •  版本升级可能导致适用场景变化 NoSQL与MySQL 不要犹豫该用MySQL还是NoSQL,在你还没有掌握 NoSQL前,最好先在小项目尝试下。 选择NoSQL需要考虑 •  数据的安全性-是否久经考验 •  事务性的保障 •  数据的重要性 •  是否有DBA运维 •  未来的业务需求变化 性能之争—差别在哪里? •  普通磁盘的IOPS(几百个) •  寻道时间、延迟时间 •  顺序读和顺序写吞吐上百MB/S 随机写变顺序写 内存索引-热数据cache 读写算法优化(场景化) 网络协议优化 NoSQL在普通 磁盘的优化 如果是SSD? NoSQL无处不在 不管你信不信,你很可能早已在接触NoSQL了。 Memcached缓存 SVN使用的BDB 比如: 为什么要构建自己的NoSQL •  考察清楚场景和需求 •  现有产品满足需求成本高 •  针对特殊场景,也许比想象的简单 •  可掌控 构建自己的NoSQL •  IP查询 TreeMap 可轻松完成 构建自己的NoSQL •  通过MySQL构建 GET SET DELETE MySQL 接口封 装 MySQL MySQL 这样也是NoSQL NoSQL运维 并不像官方宣称的那样,NoSQL无需DBA运维 运维NoSQL并不容易 •  文档齐全吗? •  网上交流多嘛? •  周边工具齐全吗? •  出现意外问题你能搞定吗? 出现意外问题,很难求助到人 监控-运维之本 •  IO •  CPU •  延迟 •  QPS •  抖动 •  数据量 除了操作系统最基本的监控,还应该监控 备份很重要 •  避免单点 •  定期数据库备份 •  开发前做好切换准备(能切换到其他产品) 谢谢!
本文档为【NoSQL误用和常见陷阱分析(孙立)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_524483
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:29
分类:互联网
上传时间:2011-10-26
浏览量:16