数据库系统是怎样降低冗余度的?
数据库是一组数据,按照一定的数据模型组织并存储在辅助存储器中。
此类数据集具有以下特点:尽可能不重复,以最佳方式服务于特定组织的各种应用程序。它的数据结构独立于使用它的应用程序。数据的添加、删除、修改和检索由统一的软件进行管理和控制。从发展历史来看,数据库是数据管理的高级阶段,它是由文件管理系统开发的。数据库的基本结构分为三个层次,反映了观察数据库的三种不同视角。(1)物理数据层。它是数据库的最内层,是实际存储在物理存储设备上的数据的集合。这些数据是由用户处理的原始数据,由内部模式描述的指令操作处理的位串、字符和字组成。(2)概念数据层。它是数据库的中间层,是数据库的整体逻辑表示。指出每个数据的逻辑定义和数据之间的逻辑联系是存储记录的集合。它指的是数据库中所有对象的逻辑关系,而不是它们的物理条件。它是数据库管理员概念下的数据库。(3)逻辑数据层。它是用户看到和使用的数据库,表示一个或一些特定用户使用的数据集,即逻辑记录集。通过映射实现了不同层次数据库之间的关系转换。该数据库具有以下主要特点:(1)实现数据共享。数据共享包括所有用户可以同时访问数据库中的数据,用户可以通过接口以各种方式使用数据库,并提供数据共享。(2)减少数据冗余。与文件系统相比,由于数据库实现了数据共享,避免了用户建立自己的应用文件。它减少了大量重复数据,减少了数据冗余,保持了数据的一致性。(3)数据的独立性。数据的独立性包括数据库和应用程序逻辑结构的独立性,数据物理结构的变化不影响数据的逻辑结构。(4)数据集中控制。在文件管理模式下,数据处于分散状态,不同用户或同一用户不同处理的文件之间没有关系。利用数据库对数据进行集中控制和管理,用数据模型表示各种数据的组织和关系。(5)数据一致性和可维护性,确保数据的安全性和可靠性。主要包括:①安全控制:防止数据丢失、错误更新和未经授权的使用;②完整性控制:确保数据的正确性、有效性和兼容性;③并发控制:允许在同一时间段内对数据进行多次访问,防止用户之间的异常交互;④故障发现与恢复:通过数据库管理系统,系统提供了一套及时发现和修复故障的方法,防止数据被破坏
主要有四个缺点:1。无法存储数据结构
2。按行存储,即使只操作一列,也需要将整行读入内存
3。表结构扩展不方便,模式固定
4。对全文搜索功能的支持较弱
针对以上四个缺点,提供了不同的数据库解决方法。
1.k-v存储不能存储数据结构
以redis为例,值可以是数据结构,如字符串、哈希、列表、集合、sortedset、位图等。列存储可以解决在操作hbase
3表示的列
时,将整行读入内存导致的高io问题。文档存储可以解决mongodb
4表示的表结构扩展不方便的问题。全文搜索引擎解决了全文搜索功能的问题
以elasticsearch为例
以上解决方案虽然解决了关系数据库的不足,但不能很好的支持acid功能。在某些场景下,关系数据库是一个很好的选择,因此这些数据库只是关系数据库的一个很好的补充,不能替代关系数据库。
现在newsql也是大数据时代的一个发展趋势,即可以支持事务,具有良好的可扩展性来支持大数据。以oceanbase、tidb和扳手/f1为例。
国庆节当天,中国蚂蚁金融自主研发的金融级分布式关系数据库oceanbase在被称为“数据库世界杯”的tpc-c基准测试中,打破了美国甲骨文公司9年来的世界纪录,成为第一个登上榜首的中文数据库产品。
在大数据时代,关系型数据库有哪些缺点?
在正常配置下,mysql只能承载2000万数据(同时读写,表中有大文本字段,单服务器)。现在已经超过1亿,而且还在增加,建议按以下方式处理:
1子表。它可以按时间或一定的规则进行拆分,以便尽可能地查询子表中的数据库。这是最有效的方法。特别是写,放入一个新表,并定期同步。如果记录不断更新,最好将写入的数据放在redis中,并定期同步表3的大文本字段,将它们分隔成一个新的独立表。对于较大的文本字段,可以使用nosql数据库
4优化体系结构,或者优化sql查询,避免联合表查询,尽量不要使用count(*)、in、recursion等性能消耗语句
5使用内存缓存,或者在前端读取时增加缓存数据库。重复读取时,直接从缓存中读取。
以上是一种低成本的管理方法,基本上几个服务器就可以做到,但是管理起来有点麻烦。
当然,如果总体数据量特别大,并且您不关心投资成本,请使用集群或tidb
原文标题:数据库冗余怎么解决 数据库系统是怎样降低冗余度的?,如若转载,请注明出处:https://www.saibowen.com/tougao/23826.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。