首页 > 编程知识 正文

建立数据库(海量数据的数据库)

时间:2023-05-05 10:49:32 阅读:77097 作者:1384

前言本文介绍了数据的概念和分类,以及如何使用数据处理思路和分区来提高性能,以及使用分区后的优缺点。 常用于解决大数据存储问题的分区; 分析关系数据库和nosql数据库的区别、优缺点。

数据概念和分类何为大数据 数据多、数据量大,记录数从千万级或亿级以上的数据数来说不准确。 存储容量一般在TB级或Pb级以上。 保存在一个或多个服务器上;跟“大数据”的区别 “大数据”是对大数据量进行分析和挖掘,挖掘数据中有意义的东西,例如法则、倾向、喜好等,然后通常涉及数据仓库、数据挖掘、人工智能AI、机器学习等技术。 数据推理与预测,数据仓库分析。 例如分析平台等,分析数据。 3358 www.Sina.com/http://www.Sina.com /服务器端APP应用程序在处理业务逻辑时多次处理数据。 如果数据量太大,每次处理数据都会消耗大量资源,性能也会下降,整个APP应用程序的性能也会下降。 最直接的影响是时间慢,查询速度慢,计算机锁定。大数据带来的影响 慢:业务处理变慢,响应时间变慢,整个APP应用程序变慢; 数据库在多次并发操作中崩溃的大数据量问题的本质是要操作的数据基数过大的http://www.Sina.com/http://www.Sina.com /面向事务的处理系统,数据立即计算处理结果http://www.Sina.com/的特点是需要在短时间内发出。不需要立即发出结果的OLTP需要立即处理成功,如银行取钱,因此需要较强的一致性。 OLAP弱事务要求最终一致性。 大数据处理思路大数据量带来的影响常用手段:分为使用和不使用,如常规不同类型的数据,分存数据库数据。 分区、分区、分区表是目前流行的数据库提供分区自带。 文件中存储的数据:分解文件考虑批处理是以下redis集群的处理方法之一

原则上,每次操作的数据基数应尽可能在大数据量带来的问题 读写缓存、本地缓存或远程缓存中使用。分类合理设计数据库结构合理构建索引数据库集群根据业务关系合理设置数据库联机事务处理(OLTP) 优化Sql检测临时表、中间表的使用还是数据库中的联机分析处理(OLAP) Mongodb、Redis、HBase等分流 Hadoop、Spark、Storm等3358 www.singodb DB2关系数据库是使用关系模型组织数据的数据库,以行和列的形式存储数据,以便用户更容易理解。 一组称为关系数据库的行和列称为表,一组表构成数据库。 用户使用查询检索数据库中的数据,该查询是限制数据库中特定区域的执行代码。 关系模型可以简单地视为二维表模型,但关系数据库由二维表及其关系组成的数据组织缓存技术 临时键值存储: Redis,Memcached永久键值存储

NoSQL,泛指非关系型的数据库。随着互联网 web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的 SNS类型的web2.0纯 动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

 

统一是它的特性导致了他的优缺点, 弱结果化的存储,这个对比关系型数据库,包括join事务等  事务查询。 分区理解 之前说过分区在流行数据库中一般都自带着的。 所谓分区就是将一个表分解成多个区块进行操作和保存,从而降低每次操作的数据,提高性能。 而对应用来说是透明的,从逻辑上看是只有一个表(这里跟分库分表的访问不一样),但在物理上这个表可能是由多个物理分区组成的,每个分区都是一个独立的对象,可以进行独立处理。

利用分区可以达到分类数据分别存储。降低查询压力,分块存储。

优点 • 进行逻辑数据分割,分割数据能够有多个不同的物理文件路径 • 可以存储更多的数据,突破系统单个文件最大限制 • 提升性能,提高每个分区的读写速度,提高分区范围查询的速度 • 可以通过删除相关分区来快速删除数据 • 通过跨多个磁盘来分散数据查询,从而提高磁盘I/O的性能 • 涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理 • 可以备份和恢复独立的分区,这对大数据量很有好处 分区能支持的引擎 MySQL支持大部分的存储引擎创建分区,如MyISAM、InnoDB等; 不支持MERGE和CSV等来创建分区。 同一个分区表中的所有分区必须是同一个存储引擎。 InnoDB 事务型数据库的首选引擎,支持ACID事务,支持行级锁定。InnoDB是为处理巨大数据量时的最大性能设计。 MyISAM是 MySQL的默认 数据库引擎(5.5版之前),由早期的 ISAM所改良。虽然性能极佳,但却有一个缺点:不支持 事务处理(transaction)。

在查询时,直接去那个区去查询,降低了数据量的存储大小。

一般数据库是我们创建表时设置,也是考虑到join 关联查询表时的效率,还是得根据我们具体得业务场景去处理。

分区类型 RANGE分区:一个给定连续区间的列值  根据时间 地域得。

 注意分区得名字不能重复

 LIST分区:LIST是列值匹配一个离散值集合中的某个值来进行选择

采用list进行分区 

 HASH分区:用户定义的表达式的返回值来进行hash计算之后选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算,这个函数必须产生非负整数值

 

 KEY分区:类似于按HASH分区,由MySQL服务器提供其自身的哈希函数

查询是列表是一样展示数据是一样的

如果像知道文件系统在那里 直接使用 show global variable '%datadir%'

 在分区过后 日志文件 存储的位置  查看 文件。

查询分区中具体的数据具体的存储详情

如果表中存在primary key或者unique key时,分区的列是两种中的一个组成部分 如果表中不存在任何的primary key或者unique key,则可以指定任何一个列作为分区列 5.5版本前的Range、List、Hash分区要求分区键必须是int;MySQL5.5及以上,支持非整型的Range和List分区,即:range columns 和list columns。 创建分区 分区命名 分区的名字基本上遵循其他MySQL标识符应当遵循的原则,例如用于表和数据库名字的标识符。但是应当注意,分区的名字是不区分大小写的。 无论使用何种类型的分区,分区总是在创建时就自动的顺序编号,且从0开始记录。 MySQL分区处理NULL值的方式 MySQL中的分区在禁止空值NULL上没有进行处理,无论它是一个列值还是一个用户定义表达式的值,一般而言,在这种情况下MySQL把NULL视为0。如果你希望回避这种做法,应该在设计表时声明列“NOT NULL” 分区管理

 可以对分区进行添加、删除、重新定义、合并或拆分等管理操作。

注意点 最大分区数目不能超过1024,一般建议对单表的分区数不要超过150个,其实一般分区也不会这样做。  如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键之内 不支持外键  不支持全文索引,对分区表的分区键创建索引,那么这个索引也将被分区  按日期进行分区很合适,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多  只有RANG和LIST分区能进行子分区,HASH和KEY分区不能进行子分区  分区表对于单条记录的查询没有优势  要注意选择分区的成本,每插入一行数据都需要按照表达式筛选插入的分区  分区字段尽量不要可以为null

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。