大数据:数据库类型简介

这篇文章,作为抛砖引玉,给大家介绍各种常见数据库的类别。在之后还有发布一些文章,针对性地分析同一个类别中的数据库的优缺点。

这将是一个系列的文章,几个从事大数据工作的朋友,组成一个大数据学习小组,对大数据的知识体系进行一次系统的梳理。

在下表中,从几个维度简单展示了当下流行的一些数据库的特性,让大家能有个初步认识。在做出分类时,会有不准确的情况,比如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关系型数据库不支持不支持不支持不支持
CassandraNoSQL数据库不支持支持支持支持
HbaseNoSQL数据库不支持支持支持支持

同时也抛出几个问题,帮助大家更好的理解数据库:

1. 数据库集群与分布式数据库的区别?

从应用开发人员/用户感知上,没什么区别。通常说Oracle,MySQL是数据库集群,Hadoop,MyCat是分布式数据库,事实上,他们都可以分布式(一群服务器串在一起)。他们都可以做大数据。

2. Oracle和MySQL区别大吗?

可以很大,除了费用上的区别,安全性,稳定性,易维护等很多方面Oracle都更优。但是普通的项目都是感知不到这些区别的。一般都是大公司(有钱),或者银行存交易数据(很重要),才极力推荐Oracle。

3. 内存数据库是啥?

内存的读写效率比磁盘高,所以内存数据库一定更快,也一定更贵。

4. 哪些场景适合使用内存数据库?

新浪微博热搜排名,数据碰撞(出入闸机在你刷卡的一瞬间检查你是否在黑名单)。

5. 列存储是啥?

传统的数据存储形式就像excel(行存储)。列存储就是以列为存储单元。

6. 列存储优缺点?

列存储写很慢,读很快。不支持高并发。

7. 哪些场景适合使用列存储数据库?

BI分析(快速读取数据),如果只是单列(单一维度),关系型数据库做索引即可,但是分析需要用到多列,做多个索引,甚至全索引不如用列数据库;某些复杂的精准查询,普通的精准查询关系型数据库即可,比如当表结构常发生变化时。

8. 什么是K/V数据库?

Key-Value的效果等同于索引,所以查询速度更快。

9. 文件存储?

某些数据库支持文件存储,照片等有时可以存在数据库中,而不是单独的文件服务器,甚至是文件集群。

我个人认为,在数据库选型时,需要考虑“合适”,不要盲目地学新东西,也不要盲目地把系统复杂化。

工作中存在许多选择错误数据库的情况,一部分人是因为不了解,一部分人是因为为了噱头。很多公司,甚至政府部门,面对几百G,甚至几十G的数据时,他们就会认为“这就是大数据”,必须要用前沿技术解决。实际是,即使是MySQL,多一些服务器,较好的设计维护,几百个T的数据也能流畅运行。

我看到很多系统,都存在过度设计的问题。比如只是做精准查询,明明Mysql也能做,偏偏要搭建ES集群;做文件存储,明明Hbase,Oracle也行,偏偏要搭个FastHDFS。并不是这些组件不好,只是一个轻量级的系统,何必做那么多模块呢。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页