精华内容
下载资源
问答
  • 数据库作为信息技术的存储介质,其本身也伴随着信息技术的发展而发展。...业界急需一些新的数据存储技术来满足业务的发展。尤其是大数据、云计算、移动互联网的兴起,促使了一些非关系型数据库(如:Mon...

    数据库作为信息技术的存储介质,其本身也伴随着信息技术的发展而发展。随着互联网技术的发展,数据库技术也从原来以关系型数据库为主的阶段,发展到如今的仅依靠关系数据库无法解决问题的阶段。从2008年左右以web2.0的兴起,互联网呈现爆炸式增长,传统的关系数据库开始显露出自身的不足。业界急需一些新的数据存储技术来满足业务的发展。尤其是大数据、云计算、移动互联网的兴起,促使了一些非关系型数据库(如:MongoDB、ElasticSearch、HBASE、Hadoop等)乘势兴起,这些非关系型数据库能很好的支撑业务的发展。2015年,国家提出“互联网+”战略,这是互联网首次上升到国家战略层面。随着“互联网+”战略的提出,越来越多的行业都将触“网”,需存储的数据会越来越多,场景越来越复杂。对传统的数据存储技术提出新的挑战,为了满足各类复杂的场景,Google研发了全球级的分布式数据库Spanner,但由于其未开源,外界对他的掌握并不是很深入。针对Spanner还发布了一篇论文《Spanner: Google's Globally-Distributed Database》。Spanner虽然有外部一致性、类SQL接口和常见事务支持,但和传统关系型数据库相比功能仍不够丰富。所以,Google在Spanner的基础上又开发了F1,扩展Spanner已有特性使其成为现在很火的NewSQL数据库。但无论是Spanner还是F1,Google都未开源,都仅限内部使用。在国内,PingCAP公司在研究了Google的论文后,自研并开源了新的数据库TiDB,功能媲美Spanner/F1。下图按时间顺序分别对每个阶段的具有代表的数据存储技术做一个介绍。

    一、关系数据库

    在关系数据库时期,对应的IT技术主要服务于大组织,大公司的信息管理系统,功能主要用于记录公司的各类数据,并能出一些简单的报表为主。系统多以内网部署为主,部署在公网上的系统主要以信息展示,信息宣传为主。数据库在这个时期主要以单库为主。但随着电商、互联网的发展,开始出现数据的激增,传统企业IT管理系统出现数据存储瓶颈,原有的数据库存储方案不能满足业务的发展,加之电商、互联网多为创新创业型企业,无法付出高昂的费用在数据存储上。基于此,对数据库进行分库、分表的技术在这一时期得以发展。尤其是针对MySQL数据库的分库分表技术。

    分库分表暂时解决了数据的存储问题,随之而来的问题是分库分表时,非拆分键(partition key)的查询又无法满足业务查询的问题。比如:一个表里有订单号、运单号、下单时间及其他信息,当把运单号做为拆分键分库分表后,如果需要按照订单号直接查询就没法查询。此时,针对按订单号查询,可以把订单号和运单号做一个关联表,按订单号查询时先查询关联表,查询出运单号,再按运单号查询运单信息;或者是订单号和运单号生成时,针对分库分表规则,把订单号、运单号的单号上带上满足分库分表规则的基因(假如单号是long类型,分成64个表,long总共8字节占64位,可以把低8位取模得到分表的下标),这样按订单号查询时,也可按运单号的分库分表规则进行查询。

    在上述的分库分表查询中,还有一类查询,按下单时间查询的。按下单时间查询我们不能说再按下单时间做一个下单时间和运单号的映射关系。在实际业务中,如果真有按下单时间查询类似的需求,其本质也是一个报表查询,或者说是一个OLAP类的场景,需要用到非关系型数据库技术来解决。我们传统的关系型数据库主要解决的还是OLTP类的场景。

    二、非关系数据库

    在08年以后,随着web2.0的到来,传统的关系数据库已经无法满足业务的发展。业内逐步发展起来的文档型存储技术得到了极大的发展。这其中比较具代表性的如:MongoDB、ElasticSearch、Hadoop等技术得到了广泛的应用。如我们上述的例子如果按下单时间查询,我们可以用ElasticSearch来存储我们的运单相关的信息,利用ElasticSearch的全文检索特性,很方便的就满足了业务的需求。再如,运单报表,运单数据分析,借助Hadoop,把数据同步到Hadoop后,利用Hadoop的高效、高可靠、低成本等特点能很好的满足业务需求。而且Hadoop对数据的类型无任何要求,无论是什么类型的数据,Hadoop都会转换为key/value键值对进行存储,key/value是其基本的数据单元。

    无论是ElasticSearch还是Hadoop,亦或是其他的非关系数据库,其主要应用场景还是OLAP。由于电商、互联网的快速发展,每一个组织、企业对同一份数据需要存储多份,以满足不同业务场景的使用。而这些海量数据存储一份就得很多存储资源,更何况要存储多份,这对存储资源来说是较大的浪费,无论是强事务性的场景还是弱事务或无需事务场景,如果能用一份或两份数据存储就能满足该两类需求,那对组织、企业来说存储资源将节约一半,甚至更多。同时,该类数据库一般不支持SQL工业标准,事务处理能力弱,没join等复杂的连接操作。基于此,急需一类新的数据库存储技术,即能满足OLTP需求的场景也能支持OLAP的需求场景,此时NewSQL就应运而生。

    三、NewSQL数据库

    在上面讲到的无论是关系数据库还是非关系数据库,都各自有自己的缺点。为了满足既支持OLTP类需求,也支持OLAP类需求,一种新型的数据库NewSQL呼之欲出。目前比较有代表性的为:Spanner/F1,CockroachDB,TiDB。Spanner/F1仅Google内部使用;CockroachDB在国内运用得不是很多;TiDB目前在国内运用的企业较多,已知的美团、滴滴、58等都有在使用。TiDB是PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式数据库,他是一个不仅适合 OLTP 场景还适OLAP 场景的混合数据库。

    TiDB的架构如下,下面分别对每一部分的作用进行说明。

    TiDB Server:TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。

    PD Server:Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。

    PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

    TiKV Server:TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

    TiSpark:TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。

    至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。TiDB更多的资料,可到https://pingcap.com/查阅。

           本文把整个数据库的发展历程做了一个简单的回顾、整理,便于理清未来数据库发展的方向,查缺补漏,对一些不熟悉的存储技术做出学习,以便用于工作中,提升工作效率。

     

     

    展开全文
  • 三、数据库存储技术

    2018-03-24 19:51:00
    一、数据存储与文件结构 ... 数据库存储空间的分配:  创建用户数据库时,moldel数据库被自动复制到新建库。  数据存储的最小单位:数据页(Page,简称页)。  1页是一块8KB的连续磁盘空间。...

    一、数据存储与文件结构

      .mdf:主要数据文件,只有一个,大小不得小于3MB

      .ndf:次要数据文件,有0个或多个,可在一个磁盘或多个磁盘存放

      .ldf:事务日志文件,至少有一个日至文件

     

      数据库存储空间的分配:

      创建用户数据库时,moldel数据库被自动复制到新建库。

      数据存储的最小单位:数据页Page,简称页)。

      1页是一块8KB的连续磁盘空间。

      页的大小决定了数据库表中一行数据的最大大小。

      行不能跨页存储。

     

      数据库文件组:

      ① 主文件组PRIMARY),系统定义,包含主要数据文件和任何没有明确分配的其他文件组的其他数据文件,系统表所有页均分配在主文件组中

      ② 用户定义文件组,在定义或修改数据库时,用FILEGROUP关键字指定

    .

      分离和附加数据库:

      ① 分离数据库

        作用:实现将数据库从一台数据库服务器移到另一台,不需要重建

        从实例中删除,不删除数据文件和日志文件,保持了数据文件和日志文件完整性

      ② 附加数据库

        将分离的数据库重新附加到数据库管理系统中

        必须指定必要数据文件的物理存储位置和文件名

     

      架构schema),是数据库下的一个逻辑命名空间,是数据库对象的容器,一个数据库包含一个或多个架构,用一个数据库内架构名唯一

     

      分区表是将表中的数据按水平分割成不同子集,并将数据子集存储在数据库一个或多个文件组中。物理上将一个大表分成多个小表,逻辑上还是一个大表。

      合理使用分区能提高数据库性能

      分区函数的LEFTRIGHT关键字作用是用来指定当间隔值由数据库引擎按从左到右排序时,边界值是属于边界左侧区域还是右侧区域

     

    二、索引技术

    转载于:https://www.cnblogs.com/akakakkk/p/8641155.html

    展开全文
  • 数据库数据存储技术

    2011-10-23 21:15:08
    共计175页ppt ,系统讲述数据库存储技术
  • 存储数据库关键技术综述
  • 在微信公众号开发中,使用html5本地数据库存储技术,对服务器的数据进行缓存到 手机上。经电脑谷歌浏览器测试能正常插入数据,也能查出数据。布署到微信上发现sql语句执行了,但没有查出数据。 ``` //这里输出的...
  • 数据库存储与文件存储

    千次阅读 2017-05-18 12:18:42
    其区别在于:(1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据。(2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离。(3)文件系统用操作系统中的存取方法对数据进行...
    其区别在于:(1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据。(2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离。(3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据。(4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
     其联系在于:(1)均为数据组织的管理技术。(2)均由数据管理软件管理数据,程序与数据之间用存取方法进行转换。(3)数据库系统是在文件系统的基础上发展而来的。
    
    展开全文
  • 数据库存储类型

    2019-11-22 16:52:14
    --存储引擎其实就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。 --又可称为表类型,即储存和操作表的类型。 --orcal,SqlServer只有一种存储类型;mysql有多种。 --可自行...

    什么是存储引擎?

    --存储引擎其实就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

    --又可称为表类型,即储存和操作表的类型。

    --orcal,SqlServer只有一种存储类型;mysql有多种。

    --可自行选择存储引擎,也可以自定义存储引擎。

    --MySQL的核心就是插件式存储引擎。

     

    什么是MySQL的存储引擎?

    --mysql数据不同的技术储存在文件或者内存中,每一种技术都使用不同的存储机制,索引技巧,锁机制,能提供不同的功能和能力。合理的选择可以提升处理速度和能力,从而改善你的应用的整体功能。

    --mysql支持的所有索引类型查询语句:SHOW ENGINES;

    --查询默认的存储引擎的SQL语句:SHOW VARIABLES LIKE 'default_storage_engine';

     

    常用的存储引擎?

    1.innodb

          InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。

     

    2.MyISAM

      插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用

    3.MEMORY

     所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

     

    同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

    展开全文
  • /我挥舞着键盘和本子,发誓要把世界写个明明白白/安卓提供了三种数据持久化技术,分别为:文件存储、SharedPreference、数据库存储。三、数据库存储前面所学的文件存储和SharedPreferences存储只适用于去保持一些...
  • MySQL数据库存储引擎与数据库优化

    千次阅读 2016-06-26 21:09:02
    存储引擎(1)MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就成为存储引擎。每种存数引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。(2)使用不同的存储引擎也可以说不同...
  • Android中SQLite数据库存储

    千次阅读 2016-03-21 12:57:19
    常见的有SharePreference、数据库存储、SD卡存储、IO流。这里我只说用数据库存储,SharePerference虽说好用,但是不适合存储一些数据量比较大的数据。像这种”累活”还是交给数据库比较好SQLite数据库的
  • 数据库存储引擎与三大范式 一、数据库的存储引擎 数据库使用不同的存储技术将数据存储在数据库之中。目前mysql的常用存储引擎为:Myisam和InnoDB两种。 1.存储引擎是数据库的组件之一,负责为数据库执行I/O(input/...
  • 数据库存储引擎介绍

    2019-05-26 18:21:43
    B树(B-tree)存储引擎是B树的持久化实现,不仅支持单条记录的增删改读操作,还指出顺序扫描,对应的存储系统为关系数据库; LSM树存储引擎和B树存储引擎一样,支持增删改随机读取以及顺序扫描,它通过批量转储技术...
  • 数据库存储原理技术基础:RAID

    千次阅读 2010-07-20 15:17:00
    RAID - Redundant Array of Independent Disk. 冗余磁盘阵列 <br />RAID 0: 将数据跨磁盘存放,提高访问、写入效率,但不提供冗余备份,适用于需要快速访问的应用,如视频服务。 RAID 1: 1+1磁盘...
  • 前两篇文章说到了文件存储和SharedPreferences存储,它们用来存储简单的数据还是很方便的,但当要存储的数据变的很复杂时,用文件存储和SharedPreferences就很麻烦了,这个时候,我们就要用到SQLite数据库了。
  • 作为自研高性能、低成本存储引擎X-Engine的负责人,曲山眼中的优秀关系型数据库存储引擎应该具备哪些能力呢? 正文 数据库内核按层次来分,就是两层:SQL &amp; Storage。SQL Layer负责将你输入的SQL ...
  • 保存到内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久化之间进行转换。2.Android系统提供了三种方式来简单的实现数据持久化...
  • Oracle数据库存储结构

    2013-05-10 17:31:58
    1. 存储结构  Oracle数据库存储结构分为逻辑存储结构和物理存储结构.    图 3 ... 逻辑存储结构主要描述Oracle数据库的内部存储结构,即从技术概念上描述在Oracle数据库种如何组织、管理数据.
  • 数据库 概述 优势 按需服务 随时服务 通用性 高可靠性 廉价 超大规模 动态可扩展 安全 易用 高性能 系统架构 UMP系统概述 保持着单一的对外访问入口 清楚单点故障,保证服务的高可靠性 具有良好的可伸缩...
  • 开篇之语:开始研究InnoDB,MongoDB相关数据库方面的技术,也希望记录自己的学习过程中 能给跟多的新手 提供一些阅读知识。  1、MySQl表存储引擎  MySQL数据库是一种插件式体系,这个就不多说了 学PHP的相信非常...
  • 基于Hypertable数据库XML存储和查询技术研究
  • 数据库存储引擎学习

    2015-03-08 14:26:04
    MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的相关功能在MySQL中称为存储引擎...
  • Mysql数据库存储引擎

    2010-12-08 12:37:00
    这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。    例如,...
  • 开放式超高性能数据库存储...在2015年中国数据库技术大会上来自云和恩墨的联合创始人之一的张乐奕为我们分享了关于降低成本、提升速度-开放式超高性能数据库存储平台实践的内容。 详细解读 和小伙伴们一起来吐槽
  • 几种数据库存储模型的对比

    千次阅读 2017-06-12 16:28:05
    而像redis这种的又是非关系型数据库,这类技术被称之为NoSQL,还有新出现的一类数据库,NewSQL,NewSQL是不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库对ACID和SQL特性的支持。 数据库行业真可谓...
  • SSM框架实现数据库存储图片及读取图片需求说明项目实现数据库设计类型转换页面显示数据库中的图片总结 需求说明 这个案例纯粹是研究用的,以备日后查看,实际中暂时还没接触过此类应用。 需求:在数据库中存储图片...
  • HTML5的发展得如火如荼,各位技术人员都在深入的研究和试图掌握此项技术,Webkit就做到了HTML5方式的客户端数据库存储。且先看下Webkit是如何实现的吧! 目 前正在规划的HTML5标准中有很多令人兴奋的特性,我们非常...
  • 基于数据库存储的多人聊天室

    千次阅读 2019-03-03 22:45:59
    支持私聊、群聊,以数据库的方式存储用户信息 使用技术 java基础 多线程 My SQL数据库 JDBC编程 项目功能 注册 登录 私聊 群聊 退出 项目实现 客户端:采用线程池调度执行服务端与客户端的业务处理逻辑 客户端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,285
精华内容 9,314
关键字:

数据库存储技术