浅谈常见的NoSQL技术方案和选型

前言

在互联网和大数据的背景下,越来越多的网站、应用系统需要支撑 海量数据存储高并发请求高可用高可扩展性 等特性要求。传统的 关系型数据库 已经难以应对类似的需求,各种各样的 NoSQLNot Only SQL)数据库因此而产生。

 

 

 

本文将分析 传统数据库 的存在的问题,以及几类 NoSQL 如何解决这些问题。在不同的 业务场景 下,作出正确的 数据存储 技术选型。

正文

1. 传统数据库缺点

缺点 解释说明
大数据场景下 I/O 较高 因为数据是按 行存储,即使只针对其中 某一列 进行运算,关系型数据库也会对 整行数据 进行扫描,从存储设备中 读入内存,导致 I/O 较高
结构化存储 不够灵活 存储的是 行记录,无法存储 灵活的数据结构
表结构 schema 扩展不方便 如要需要修改 表结构,需要执行执行 DDLdata definition language)语句修改,修改期间会导致 锁表,部分服务不可用
全文搜索 功能较弱 关系型数据库只能够进行 子字符串匹配查询,当表的数据逐渐变大的时候,即使在有 索引 的情况下,like 扫表查询的匹配会 非常慢
难以 存储处理 复杂 关系型数据 传统的关系数据库,并不擅长处理 数据点之间 的关系

2. NoSQL简介

NoSQL,泛指 非关系型 的数据库,可以理解为 关系型 数据库的一个有力补充。

NoSQL 在许多方面性能大大优于 非关系型 数据库的同时,往往也伴随一些特性的缺失。比较常见的是 事务功能 的缺失。 数据库事务正确执行的四个基本要素 ACID 如下:

  名称 描述
A Atomicity(原子性) 一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
C Consistency一致性 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
I Isolation隔离性 数据库允许多个并发事务同时对数据进行读写和修改的能力。隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
D Durability持久性 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

针对传统 关系型数据库 的不足,下面介绍常见的 5 大类 NoSQL 解决方案:

3. 列式数据库

分享一个技术交流的大群,群公告里面有很多关于架构层面的底层原理的分析和讲解,群里活跃度还可以,可以在里面交流学习,资料共享自己有好的资料也可以分享群号是:838498680

列式数据库 是以 列相关存储架构 进行数据存储的数据库,主要适合于 批量数据处理即时查询。相对应的是 行式数据库,数据以 行相关的存储架构 进行空间分配,主要适合于 小批量数据处理,常用于 联机事务型数据处理

基于列式数据库的 列存储特性,可以解决某些特定场景下 关系型数据库I/O 的问题。

3.1. 基本原理

传统关系型数据库是 按照行 来存储数据库,称为 行式数据库,而 列式数据库按照列 来存储数据。

将表放入存储系统中有两种方法,而我们绝大部分是采用 行存储 的。行存储法是将 各行 放入 连续的物理位置,这很像传统的记录和文件系统。

列存储法 是将数据 按照列 存储到数据库中,与 行存储 类似,下图是两种存储方法的图形化解释:

 

 

 

3.2. 常见列式数据库

3.2.1. HBase

HBase 是一个开源的 非关系型分布式数据库NoSQL),它参考了 谷歌BigTable 建模,实现的编程语言为 Java。它是 Apache 软件基金会的 Hadoop 项目的一部分,运行于 HDFS 文件系统之上,为 Hadoop 提供类似于 BigTable 规模的服务。因此,它可以 容错地 存储 海量稀疏 的数据。

 

 

 

3.2.2. BigTable

BigTable 是一种 压缩的高性能的高可扩展性的,基于 Google 文件系统(Google File SystemGFS)的数据存储系统,用于存储 大规模结构化数据,适用于云计算。

 

 

 

3.3. 相关特性

3.3.1. 优点

  • 高效的储存空间利用率

列式数据库 针对不同列的 数据特征 而发明了 不同算法,使其比 行式数据库 高的多的 压缩率。普通的 行式数据库 一般压缩率在 3:15:1 左右,而 列式数据库 的压缩率一般在 8:130:1 左右。

比较常见的,通过 字典表 压缩数据:

 

 

 

下面才是那张表本来的样子。经过 字典表 进行 数据压缩 后,表中的 字符串 才都变成 数字。正因为每个字符串在 字典表 里只 出现了一次,所以达到了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值