NoSQL误用与陷阱:QCon2011杭州演讲精华

需积分: 10 2 下载量 198 浏览量 更新于2024-07-30 收藏 1.3MB PDF 举报
"《NoSQL误用和常见陷阱分析》是孙立在2011年QCon杭州会议上的一份演讲稿,主要针对NoSQL技术的误用和常见问题进行深入探讨。演讲内容分为几个部分: 1. 被误用的NoSQL:孙立首先指出了NoSQL在实际应用中的不当使用方式,其中一种常见的问题是循环网络调用。比如,在使用Memcached时,如果通过循环逐一获取数据,如`Map<String, String> result = new HashMap<>(); for (int i = 0, len = keys.length; i < len; i++) { result.put(keys[i], memcacheGet(keys[i])); }`,这会导致性能下降,相比批量GET(如`client.get(Arrays.asList(keys))`)效率低很多,例如10个键可能分别消耗10ms,而批量操作只需2ms。 2. Redis的循环和批量GET对比:类似地,对Redis的循环操作也会造成性能损失,即使在获取大量键值对时,循环`jredis.get(keys[i])`会比`jredis.mget(keys)`慢一倍,如100个键分别耗时10ms,而mget只需5ms。 3. 不压缩大数据:NoSQL存储在处理大数据时,如果数据未进行适当压缩,会占用更多存储空间并影响性能。演讲中区分了内部压缩(数据库自身支持的压缩)和外部压缩(客户端或网络层的压缩),指出内部压缩可以减少存储空间、提升IO性能,但对网络IO性能提升有限;而外部压缩则能同时减少存储和提升IO性能。 4. NoSQL与MySQL的比较:演讲还讨论了NoSQL与传统关系型数据库MySQL之间的差异,强调NoSQL在灵活性、扩展性和高并发场景下的优势,但也提示了正确选择和使用的重要性,避免陷入误区。 5. NoSQL运维挑战:最后,孙立提到了NoSQL系统的运维挑战,包括监控、故障恢复、数据一致性等问题,以及如何在复杂的应用环境中有效地管理和维护NoSQL系统。 通过这个演讲,孙立旨在帮助开发者理解和避免在使用NoSQL时可能出现的问题,以提高系统的性能和稳定性。对于那些正在考虑或已经在使用NoSQL技术的团队来说,这份资料提供了宝贵的实践经验和指导。"