随着互联网的异军突起,大数据领域异常火热。在互联网的当下,请拿数据说话, 因此数据才是重点,那么存储数据的容器也就被称之为数据库(Database)。在早期,尤其是以"企业级"项目为主,RDBMS数据库长期以来都是霸 主,因为大部分依赖RDBMS的需求都拥有一个相同的特点,那就ACID特性(原子性(Atomicity)、一致性(Consistency)、隔离性 (Isolation)、持久性(Durability))。除此之外,很多数据或许并不适合使用这类数据库作为解决方案,取决于这个原因,NoSql数 据库正在迅速崛起。
Nosql(Not Only SQL)数据库可以解决传统RDBMS数据库做不到的事情,因此在互联网领域,Nosql 数据库无疑正在或者说已经取代后者。Nosql其实只是一个名词,真正的含义是指,除了传统RDBMS数据库之外,还有非SQL的数据库,这类数据库包括 有:内存数据库(Redis、memcache)、Hadoop平台下的Hbase、Mongodb,以及Membase等。我们都知道,RDBMS数据库中并不适合存储过大的数据,以及在高并发的情况下,数据库将极有可能沦落为性能瓶颈,因此基于这些原因更加迫切催促着Nosql这一类的数据库诞生。
架构师如何解决上述所提及的问题的?以一个并发相对较大的分布式应用场景相对来说,在RDBMS数据库之前肯定会挂一堆吃大内存的内存数据库去抗住传 统数据库约70%的性能,并发越大,那么在分布式场景中内存数据库将会采用分布式(业务划分)+集群的方式进行部署。而RDBMS数据库除了会做 Master/Slave之外,在有必要的情况下DBA会做垂直分库+水平分区,也就是我们常说的sharding。而关于一些非结构化的冷数据、包括: 系统日志数据、登录日志数据、消息记录数据等之类的数据信息将会落盘到HBase、Mongodb等数据库中,方便日后结合Hadoop平台的强大并行运算能力对大数据进行采集和分析。
除此之外,传统的RDBMS数据库还存在一个较大的问题,那就是无法轻易实现大规模的扩展。尽管网络解决方案一定程度上改善了这个问题,但网络中仍然无法动态的创建新的集群,因此使用RDBMS数据库构建大数据解决方案就会变得异常昂贵。其次之前也说过,RDBMS数据库不善于处理非结构化数据。最后SQL和RDBMS数据库的组合难以实现某些类型的简单查询,比如两点间的最短线路。
像一些大公司,比如:淘宝、腾讯、京东等企业。在大数据的场景下,都拥有各自优秀且成熟的解决方案,而基于传统的RDBMS数据库方案已经不再是唯一选择。以Hbase为例,其优点很明显,高度可扩展性、出色的可靠性,以及低维护成本都是大数据场景下的不二选择。不过相对而言,尽管传统的RDBMS数据库地位受到了“侵犯”,但在未来很长的一段时间内,笔者相信,这2种类型的数据库会长期友好的并存下去,各自取长补短才能更好的应对需求。
PS:阿里正祥博士主导的Ocaenbase同样也是一个出色且开源的大数据DB。关于Ocaenbase的更多信息,请访问https://github.com/alibaba/oceanbase。