关系型数据库

Hhase查询速度快的原因

人走茶凉 提交于 2019-11-29 12:30:37
因为Hbase属于NoSQL,非关系型数据库,所以会经常拿来和关系型数据库做对比。面试的时候也会问到为何Hbase的速度快或者为什么选择Hbase作为数据库存储。下面的文章是转发的,对于上述问题的回答有一定的参考意义。仅供参考。 HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的,即由LSM-Tree(Log-Structured Merge-Tree) + HTable(region分区) + Cache决定——客户端可以直接定位到要查数据所在的HRegion server服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的。 前面说过HBase会将数据保存到内存中,在内存中的数据是有序的,如果内存空间满了,会刷写到HFile中,而在HFile中保存的内容也是有序的。当数据写入HFile后,内存中的数据会被丢弃。 HFile文件为磁盘顺序读取做了优化,按页存储。下图展示了在内存中多个块存储并归并到磁盘的过程,合并写入会产生新的结果块,最终多个块被合并为更大块。 多次刷写后会产生很多小文件,后台线程会合并小文件组成大文件,这样磁盘查找会限制在少数几个数据存储文件中。HBase的写入速度快是因为它其实并不是真的立即写入文件中,而是先写入内存,随后异步刷入HFile。所以在客户端看来,写入速度很快。另外

浅谈缓存与Mysql的区别

試著忘記壹切 提交于 2019-11-29 11:05:00
缓存是互联网公司最常用的组件之一,面试中绝大多数的公司也都会问关于缓存的问题。缓存的作用想必不用说,大家随口就能说出来,存储过热数据,防止数据库访问量多大,加快数据访问速度。甚至有的业务可以拿缓存当数据库用,虽然很不建议这么用,但是既然能这么用,必然有这么用的好处。 缓存和关系型数据库之间的区别其实蛮大的,笔者认为有以下几点吧。 首先,在存储数据的数据结构上就有很大的差别,传统的关系型数据库,就是table、columns,存储数据的颜值比较高(比较符合我们观察数据的习惯),存储方式和格式也多种多样。缓存就不一样了,它是key/value结构的数据,虽然redis中可以支持多种数据格式,但是都是建立在key的基础上,所以从存储数据的多样性方面,关系型数据库暂时还是不可被缓存替代的。 其次,在查询速度方面,肯定是缓存高了,虽然数据库可以建立索引,以Mysql-InnoDB为例,大家都知道他的索引格式是B+Tree,时间复杂度是 O(log(n)) ,而缓存就很明显了,时间复杂度是O(1)。 那么问题来了,为什么k/v这种数据结构的时间复杂度低,Mysql去选择B+Tree这种格式的数据去存储索引呢。 这也和第一点,数据存储有关。原因有两个,次要原因是这种数据结构比较符合磁盘查找数据的动作(与盘片旋转和磁臂移动还有树的高度有关),而把key存在内存里就可以解决这个问题

3)SQL vs NOSQL

核能气质少年 提交于 2019-11-29 06:28:48
关系型数据库的提点: 1. 数据结构化存储在二维表中 2. 支持事务的原子性A,一致性C,隔离性I,持久性D特性(ACID) 3. 支持使用SQL语言对存储数据进行操作 关系型数据库的适用场景 1. 数据之间存在着关系,需要关联查询数据的场景 2. 需要事务支持的业务场景 3. 需要使用SQL语言灵活操作数据的场景,如对数据的统计分析等运算 优点: 1. 易于维护:都是使用表结构,格式一致; 2. 使用方便:SQL语言通用,可用于复杂查询; 3. 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 1. 读写性能比较差,尤其是海量数据的高效率读写; 2. 固定的表结构,灵活度稍欠; 3. 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈 非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。 特点: 1-存储结构灵活,没有固定的结构 2-对事务的支持比较弱,但对数据的并发处理性能高 3-大多不适用SQL语言操作数据 优点: 1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3、高扩展性; 4、成本低

redis总结及常用命令

血红的双手。 提交于 2019-11-29 05:53:04
1. 什么是redis redis是一个nosql(not only sql不仅仅只有sql)数据库.翻译成中文叫做非关系型型数据库. 关系型数据库:以二维表形式存储数据 非关系型数据库: 以键值对形式存储数据(key, value形式) 是一家意大利的创业公司出的,后来这家公司被VMware赞助. redis底层用C语句编写. redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中, redis优点:存取速度快,官方称读取会达到30万次每秒,写在10万次每秒,具体限制于硬件. 缺点:对持久化支持不够良好, 所以redis一般不作为数据的主数据库存储,一般配合传统的关系型数据库使用. 2. redis应用领域 分布式缓存 分布式session 论坛、评论首页或前几页 秒杀,抢购. 总之是用在数据访问量大,并发量高的情况下 3. 怎么用 redis主要就是使用命令来进行操作,java端在代码中可以使用Jedis来操作redis服务器 redis数据类型 字符串String 列表list redis中使用的是双向循环链表来实现的list,在redis中更像栈 散列Hash 一般应用于将redis作为分布式缓存,存储数据库中的数据对象 集合set set中数据是无序的并且不允许重复 有序集合zset redis会根据分数自动排序

数据库与缓存:3.mongodb

人走茶凉 提交于 2019-11-29 03:22:13
1. mongodb是什么? NoSQL 非关系型数据库,主要用于数据的海量存储。分为server数据存储端和client数据操作端。 关系型与非关系型数据库的区别? sql:数据库--表--数据 nosql:数据库---集合--文档 2.mongoddb优势 1. 扩展性 2. 大数据型,高性能 3. 灵活的数据模型 3.启动 1. 本地测试启动:功能受限,验证数据库的完整功能 + ps aux|grep mongodb + ps -- process 进程 + ps aux 显示所有进程 + grep --- 文件查询 + grep "#" /etc/mongodb.conf --- 把文件中所有带被注释的行显示出来 + grep -v "#" /etc/mongodb.conf --- 把文件中所有有用的行显示出来 sudo service mongodb start sudo service mongodb stop 2. 生产方式启动: 4.使用 4.1 数据库的操作 查看当前数据库: db 默认为test 查看磁盘上的数据库: show dbs/ show databases 注:db --- > test ---> show dbs ---> local 0.000GB 是因为test数据库不在磁盘上,在内存中。 4.2. 创建数据库 1.use python 2

MongDB概述

爱⌒轻易说出口 提交于 2019-11-28 23:19:14
1. 什么是NoSQl NoSQL:Not Only SQL,本质也是一种数据库的技术,相对于传统数据库技术NoSQL不会遵循一些SQL的约束,比如: 1.1SQL标准:select * from table_name update table_name set delete from table_name 这些传统关系型数据库(Oracle、Mysql,DB2)等关系型数据都遵循的sql标准。 1.2事务的ACID特性:A(Atomicity原子性) C(Consistency一致性)I(Isolation 隔离性)D(Durability持久性) 1.3表结构等(NoSQL没有所谓的表结构) 2. NoSQL优点: 2.1满足对数据库的高并发读写(一个应用中最先出现性能瓶颈的就是DB层,一般Mysql能支持的并发在机器硬盘上为300左右,固态硬盘上为700左右。因此高并发场景下很容易突破数据库的性能瓶颈,关系型数据库在高并发读写性能上用户体验较差或者当并发大到一定量是直接导致数据库崩溃) 2.2对海量数据的搞笑存储和访问(传统关系型数据库当单表数据超过700万的时候用户体验就会极差,当数据量大到一定程度的时候需要考虑分库分表分区分片,读写分离,集群等手段保证数据库的性能。传统关系型数据库的横向扩展或纵向扩展维护成本较高,以及分布式事务的处理难度较大) 2

数据库01 /Mysql初识以及基本命令操作

有些话、适合烂在心里 提交于 2019-11-28 23:01:37
目录 数据库01 /Mysql初识以及基本命令操作 1.数据库介绍 1.1 相关概念 1.2 数据库 1.3数据库管理系统(DBMS) 1.4结构化查询语言(SQL) 2.mysql的基本操作 2.1操作文件夹/库(增删改查) 2.2操作文件/表(增删改查) 2.3操作文件中的内容/记录(增删改查) 3.一些常见问题的设置 3.1永久修改字符串编码的方法 3.2.查看字符集编码的指令 3.3MySQL客户端连接服务端时的完整指令 3.4如果root密码忘了怎么办 3.5root用户密码设置以及修改密码的三种方式 3.6储存引擎 3.7 其它注意点 4.数据库的优势 数据库01 /Mysql初识以及基本命令操作 1.数据库介绍 1.1 相关概念 #1.相关概念: #数据库服务器: # 一台机器,安装了数据库管理软件 #数据库管理系统: # 软件 #库: # 相当于文件夹 #表: # 相当于文件 #记录: # 表里边的内容 #2.分类: # 关系型:每个字段之间的关系紧密,通过任何一个字段都可以查到该组数据 # 非关系型:只能通过key,去获取value 1.2 数据库 #数据库:数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 #所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度

MongoDB数据库--扩展Base64,算法

不羁岁月 提交于 2019-11-28 20:18:22
Python高级 非关系型数据库(NO-SQL:Not Only SQL) 非关系型数据库的诞生:随着IT的发展,变革,数据量越来越大,数据之间的关系越来越零散,松散,没有太大的关系,利用关系型数据库已不能更好的满足我们的需求,使用起来非常复杂,浪费大量的空间。为了解决这种问题就出现了一些能处理松散的,数据与数据之间没有太大关系的数据库,即NoSQL非关系型数据库,如MongoDB等 非关系型数据库适合存放结构松散,相互之间关系不明确的数据 常用产品: MongoDB (文档) Redis (键值对) HBase (一列列的数据) 缓存优化 能不用关系型数据库就不用,非要用就减少数据库的使用,将数据写入Redis NoSQL数据库的四大分类 1.键值型 2.列存储型 3.文档型,比如MongoDB等 4.图形 Base64编码 Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。 优点:速度快,ascii字符,肉眼不可理解 缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合 import base64 str1 = 'nihao,中国!' r = base64.b64encode(str1.encode()) print(r) r = base64

MariaDB基本知识点总结

ぃ、小莉子 提交于 2019-11-28 20:08:41
一.概念 1.数据库介绍: 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。 2.关系型数据库VS非关系型数据库 (1).关系型数据库: 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表) 如:oracle,db2,sqlserver,mysql,mariadb 优点: 易于维护:都是使用表结构,格式一致; 使用方便:SQL语言通用,可用于复杂查询; 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 读写性能比较差,尤其是海量数据的高效率读写; 固定的表结构,灵活度稍欠; 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。 (2).关系型数据库: 非关系型数据库也称之为nosql数据库,请注意,nosql的本意是“not only SQL”,指的是非关系型数据库,而不是“no SQL”的意思,因此nosql的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。 如:mongodb,redias 优点: 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等

关系型数据库与非关系型数据库的区别

老子叫甜甜 提交于 2019-11-28 16:13:10
一、关系型数据库与欸关系型数据库的主要区别: 二、关系型数据库 关系型数据库:指采用了关系模型来组织数据的数据库。 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 关系:一张二维表,每个关系都具有一个关系名,也就是表名 元组:二维表中的一行,在数据库中被称为记录 属性:二维表中的一列,在数据库中被称为字段 域:属性的取值范围,也就是数据库中某一列的取值限制 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成 关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构 关系型数据库的优点: 1.容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解 2.使用方便:通用的SQL语言使得操作关系型数据库非常方便 3.易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率 关系型数据库存在的问题 1.网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘 I/O 是一个很大的瓶颈 2.网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的 3.在基于web的结构当中