目前我们都生活在一个庞大的数据存数时代,然而大数据及其底层技术NoSQL也正成为了互联网的一个流行语。对于谷歌以及Facebook,IBM这样的全球互联网企业,NoSQL这种高扩展的非关系型数据库存数的使用往往已经超过关系型数据库。事实上,在海量数据和半结构化数据的一些问题过程中,已经诞生了一系列新型数据库产品,而这些数据库我们称之为NoSQL。
2013年4月26日-27日,由51CTO传媒集团旗下WOT(World Of Tech)品牌主办的2013大数据全球技术峰会在北京富力万丽酒店召开。NoSQL产品千变万化,特性和价值主张各有不同,因此常常难以选择。记者深入与来自硅谷的软件开发专家,层任职于Oracle,Microsoft和Google的Ming Lei老师沟通以及对NoSQL的实际分析,总结一些观点给网友参考。
Ming Lei老师(左)
分布式系统和NoSQL
一个分布式系统包括很多不同的层面,它包括应用层,数据层,表现层等等,现在主要说说应用层和数据层,这两个都是分布式系统重要的组成部分,应用层一般来说是没有状态,数据层是不断的做运算让它保存状态。数据层是分布式系统里面最困难,也是最高深的一个层面。
Ming Lei老师的观点是NoSQL是分布式系统里面的一个存储器,它是分布式系统的一种。或者说是分布式系统的一个层面。
NoSQL缓存对CDN缓存比较
在NoSQL这边缓存的代表性是Memcached,NoSQL的缓存和CDN的缓存最大的区别在于NoSQL的缓存是指在数据层的缓存,并不是应用层的缓存,也不是网络层的缓存,所以它的缓存是比较原始的数据。比方说这个应用逻辑里面的事物,并不是最终给用户看的结果,那么我们在网络这一层做缓存的话,最常见的技术叫CDN,它的英文叫做ContentDeliveryNetwork,它一般是在网络的末端靠近用户的那一端的一些网络服务器上缓存一些具体的网页。
Memcached:
- Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
- Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
MemCache – Architecture
- Sharding in client code to select server.
- Peer-to-Peer Server instances.
- Server uses in-mem storage.
- Potentially expand to persistent store.
MemCache – Usage Characteristics
- Object-level Consistency, Isolation and Atomicity.
- No persistent storage
- No replication for load-balancing or failover
- Consistency + Partition-tolerance in CAP
NoSQL安全性分析
其实系统可以在不同的层面去解决安全性的问题,不一定要求系统每个层面都要去解决安全性的问题,比方说分布式存储系统,它一般是个存储服务,从请求拿到结果,所以必然有一个远程网络调用,一个比较有利的解决方案是在网络调用这块解决安全性的问题,比如加上一些安全性的管理(用户授权,用户登陆),而不是在分布式存储运算里面去解决这个问题。
Hadoop多维分析平台架构图
NoSQL and SQL
在Ming Lei老师看来其实是两者的应用场景不一样。当我们针对的是互联网的用户,消费者,这样的应用根据我们的经验是它对事物的要求较为低,而企业应用它对事物的要求很高,比如说一个企业里面的财会,物流,人事,它往往都是公用同样的一套数据库,所以它对事物的要求会比较高。
比如说你把一个网站建在服务上面,这个时候你的事物的这个层面可能只是说一个账户,也就是说你对数据库的要求低,同时你的数据量又非常大,这个时候我们需要一种不同关系型数据库的解决方案,这种解决方案就叫做NoSQL。它最大的区别在于要求的数据量大,对事物的要求低。
NoSQL数据库的对比图(点击扩大)
NoSQL未来
我觉得目前在互联网上比较多见的应用场景是,数据量特别大,对事物的要求相对低,或者事物的层面比较窄,结构比较小。对这样一些应用NoSQL是未来的一个发展方向。
但是,有些企业级的应用还是必须得使用关系型数据库,目前在工业这一块还没有这样的一个趋势去把企业应用的关系型数据库变成NoSQL。