赞
踩
这篇文章,作为抛砖引玉,给大家介绍各种常见数据库的类别。在之后还有发布一些文章,针对性地分析同一个类别中的数据库的优缺点。
这将是一个系列的文章,几个从事大数据工作的朋友,组成一个大数据学习小组,对大数据的知识体系进行一次系统的梳理。
在下表中,从几个维度简单展示了当下流行的一些数据库的特性,让大家能有个初步认识。在做出分类时,会有不准确的情况,比如Oracle是否支持内存存储,Oracle的临时表,或者新版本可以存储在内存中。本文将Oracle归类于‘不支持内存存储’,是希望告诉大家,通常情况下,Oracle的数据都在存储在磁盘上,而不是内存里。
数据库 | 分类 | 内存存储 | 列存储 | K/V存储 | 文件存储 |
---|---|---|---|---|---|
Kafka | 消息队列 | 支持 | 不支持 | 不支持 | 不支持 |
mongodb | 文档数据库 | 不支持 | 不支持 | 不支持 | 支持 |
FastDFS | 文档数据库 | 不支持 | 不支持 | 不支持 | 支持 |
Neo4J | 图数据库 | 不支持 | 不支持 | 不支持 | 不支持 |
ElasticSearch | 索引数据库 | 支持 | 不支持 | 支持 | 支持 |
Solr | 索引数据库 | 支持 | 不支持 | 支持 | 支持 |
MyCAT | 数据库中间件 | 不支持 | 不支持 | 不支持 | 不支持 |
Memcache | 内存数据库 | 支持 | 不支持 | 支持 | 支持 |
Redis | 内存数据库 | 支持 | 不支持 | 支持 | 支持 |
SAP HANA | 内存数据库 | 支持 | 支持 | 支持 | 支持 |
db4o | 面向对象数据库 | 不支持 | 不支持 | 不支持 | 不支持 |
Vertica | 列式数据库 | 不支持 | 支持 | 不支持 | 不支持 |
Oracle | 关系型数据库 | 不支持 | 支持 | 不支持 | 支持 |
MySQL | 关系型数据库 | 不支持 | 不支持 | 不支持 | 支持 |
SQL Server | 关系型数据库 | 不支持 | 不支持 | 不支持 | 支持 |
OceanBase | 关系型数据库 | 不支持 | 不支持 | 不支持 | 不支持 |
HIVE | 关系型数据库 | 不支持 | 不支持 | 不支持 | 不支持 |
MPP | 关系型数据库 | 不支持 | 支持 | 不支持 | 支持 |
GreenPlum | 关系型数据库 | 不支持 | 支持 | 不支持 | 支持 |
PostgreSQL | 关系型数据库 | 不支持 | 不支持 | 不支持 | 支持 |
NeoView | 关系型数据库 | 不支持 | 不支持 | 不支持 | 不支持 |
Cassandra | NoSQL数据库 | 不支持 | 支持 | 支持 | 支持 |
Hbase | NoSQL数据库 | 不支持 | 支持 | 支持 | 支持 |
同时也抛出几个问题,帮助大家更好的理解数据库:
从应用开发人员/用户感知上,没什么区别。通常说Oracle,MySQL是数据库集群,Hadoop,MyCat是分布式数据库,事实上,他们都可以分布式(一群服务器串在一起)。他们都可以做大数据。
可以很大,除了费用上的区别,安全性,稳定性,易维护等很多方面Oracle都更优。但是普通的项目都是感知不到这些区别的。一般都是大公司(有钱),或者银行存交易数据(很重要),才极力推荐Oracle。
内存的读写效率比磁盘高,所以内存数据库一定更快,也一定更贵。
新浪微博热搜排名,数据碰撞(出入闸机在你刷卡的一瞬间检查你是否在黑名单)。
传统的数据存储形式就像excel(行存储)。列存储就是以列为存储单元。
列存储写很慢,读很快。不支持高并发。
BI分析(快速读取数据),如果只是单列(单一维度),关系型数据库做索引即可,但是分析需要用到多列,做多个索引,甚至全索引不如用列数据库;某些复杂的精准查询,普通的精准查询关系型数据库即可,比如当表结构常发生变化时。
Key-Value的效果等同于索引,所以查询速度更快。
某些数据库支持文件存储,照片等有时可以存在数据库中,而不是单独的文件服务器,甚至是文件集群。
我个人认为,在数据库选型时,需要考虑“合适”,不要盲目地学新东西,也不要盲目地把系统复杂化。
工作中存在许多选择错误数据库的情况,一部分人是因为不了解,一部分人是因为为了噱头。很多公司,甚至政府部门,面对几百G,甚至几十G的数据时,他们就会认为“这就是大数据”,必须要用前沿技术解决。实际是,即使是MySQL,多一些服务器,较好的设计维护,几百个T的数据也能流畅运行。
我看到很多系统,都存在过度设计的问题。比如只是做精准查询,明明Mysql也能做,偏偏要搭建ES集群;做文件存储,明明Hbase,Oracle也行,偏偏要搭个FastHDFS。并不是这些组件不好,只是一个轻量级的系统,何必做那么多模块呢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。