首页技术文章正文

什么是数据库技术?数据库技术简介

更新时间:2021-09-30 来源:黑马程序员 浏览量:

IT培训班


数据库技术产生于20世纪60年代末70年代初,其主要主要研究如何存储,使用和管理数据。随着计算机硬件和软件的发展,数据库技术也不断地发展。数据库技术在理论研究和系统开发上都取得了辉煌的成就。
从数据管理的角度看,数据库技术到目前共经历了如下三个阶段:
1. 人工管理阶段-数据量小独立,用户直接管理
2. 文件系统阶段-使用文件存取数据,冗余度高,管理维护难
3. 数据库系统阶段-专门的数据库软件系统管理数据,高效方便,易于共享维护
 
按照数据模型发展的主线,数据库技术的形成过程和发展可分为如下三个阶段:
1. 层次和网状数据库管理系统-可以理解为使用指针来表示数据之间的联系
2. 关系数据库管理系统(RDBMS)-可以理解为理解为使用二维表来表示维护数据间的关系
3. 新一代数据库技术的研究和发展-针对关系型数据库存在数据模型,性能,扩展性,伸缩性等方面的缺点,出现了:
ORDBMS:面向对象数据库技术。如:PostGreSQL
NoSQL:非结构化数据库技术。如
1):键值存储数据库:Redis
2):列式储数数据库:HBase
3):文档型数据库:MongoDB
4):图形数据库:Neo4J
NewSQL:这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。如:TiDB

如今的数据库种类繁多,RDBMS(关系型数据库)、NoSQL(Not Only SQL)、NewSQL,在数据库领域均有一席之地,可谓百家争鸣之势。那么我们为什么要学习使用TiDB呢?接下来就从我们最熟悉的MySQL的使用说起!
假设现在有一个高速发展的互联网公司,核心业务库MySQL的数据量已经近亿行,且还在不断增长中,公司对于数据资产较为重视,所有数据要求多副本保存至少5年,且除了有对历史数据进行统计分析的离线报表业务外,还有一些针对用户数据实时查询的需求,如用户历史订单实时查询。


由此产生了下面的问题:
1.MySQL能否满足上述场景需求?
根据以往的MySQL使用经验,MySQL单表在 5000 万行以内时,性能较好,单表超过5000万行后,数据库性能、可维护性都会极剧下降。当然这时候可以做MySQL分库分表,如使用Mycat或Sharding-jdbc 
2.分库分表的能否解决问题?
分库分表的优点非常明显,如:
将大表拆分成小表,单表数据量控制在 5000 万行以内,使 MySQL 性能稳定可控。
将单张大表拆分成小表后,能水平扩展,通过部署到多台服务器,提升整个集群的 QPS、TPS、Latency 等数据库服务指标。
但是,此方案的缺点也非常明显:
分表跨实例后,产生分布式事务管理难题,一旦数据库服务器宕机,有事务不一致风险。
分表后,对 SQL 语句有一定限制,对业务方功能需求大打折扣。尤其对于实时报表统计类需求,限制非常之大。事实上,报表大多都是提供给高层领导使用的,其重要性不言而喻。
分表后,需要维护的对象呈指数增长(MySQL实例数、需要执行的 SQL 变更数量等)。
问题解决:
于以上核心痛点,我们需要探索新的数据库技术方案来应对业务爆发式增长所带来的挑战,为业务提供更好的数据库服务支撑。
调研市场上的各大数据库,我们可以考虑选用NewSQL技术来解决,因为NewSQL技术有如下显著特点:
- 无限水平扩展能力
- 分布式强一致性,确保数据 100% 安全
- 完整的分布式事务处理能力与 ACID 特性
而TiDB数据库 GitHub的活跃度及社区贡献者方面都可以算得上是国际化的开源项目,是NewSQL技术中的代表性产品,所以我们可以选择使用TiDB数据库!

总结

传统关系型数据库历史比较久,目前RDBMS的代表为Oracle、MySQL、PostgreSQL,在数据库领域也是“辈份”比较高的,其广泛应用在各行各业,RDBMS大多为本地存储或共享存储。
但是此类数据库存在着一些问题,如自身容量的限制。随着业务量不断增加,容量渐渐成为瓶颈,此时DBA会通过多次的库表sharding,以此来缓解容量问题。大量的分库分表,不仅耗费了大量人力,还使得业务访问数据库的路由逻辑变得复杂。除此之外,RDBMS伸缩性比较差,通常集群扩容缩容成本较高,且不满足分布式的事务。
NoSQL类数据库的代表为Hbase、Redis、MongoDB、Cassandra等,这类数据库解决了 RDBMS伸缩性差的问题,集群容量扩容变得方便很多,但是由于存储方式为多个KV存储,所以对SQL的兼容性就大打折扣。对于NoSQL类数据库来说,只能满足部分分布式事务的特点。
NewSQL领域的代表是Google的spanner和F1,其号称可以实现全球数据中心容灾,且完全满足分布式事务的ACID,但是只能在Google云上使用。
TiDB诞生在大背景下,也弥补了国内在NewSQL领域中的空缺。TiDB自2015年5月写下第一行代码以来,至今已发布大小版本几十次,版本迭代十分迅速





猜你喜欢:

什么是数据库事务?

使用MySQL数据库,实现你的第一个JDBC程序

使用Django开发网站,如何优化数据库?

黑马程序员python大数据开发课程

分享到:
在线咨询 我要报名
和我们在线交谈!