数据库设计技术指标大盘点 (数据库设计的技术指标有哪些)

随着互联网的快速发展,数据作为数字化时代的重要资源,更加受到各个行业的重视。而数据库作为存储和管理数据的工具,也成为了公司和企业进行业务管理的必要手段之一。但是对于数据库的设计而言,不同的业务需求需要不同的设计方案,而这其中涉及到的技术指标也是多种多样。因此,在这篇文章中,我们将对数据库设计涉及到的技术指标进行一个大盘点。

一、范式设计

范式设计主要是为了解决数据冗余的问题,进而优化数据库设计。范式分为之一范式、第二范式、第三范式、BCNF范式等,不同的范式会让设计方案更为精简,避免了冗余和不一致的数据。但范式设计需要注意的是,过度追求范式可能会导致数据访问的效率降低。因此需要在保证数据一致性的前提下,综合考虑范式的实际运用。

二、索引优化

索引是数据库中非常重要的组成部分,常常被用来加速数据检索的速度。数据库的索引优化方案在设计中就体现了它的重要性。常见的索引优化方式有B-Tree索引、Hash索引、Full-text索引等,这些方案针对不同的数据类型和查找方式进行优化。开发人员应该在设计之初根据数据量、查询频率、并发能力等方面进行全面考虑,选择合适的索引方案,从而达到优化查询效率的目的。

三、分区设计

当数据库数据量日渐增长之后,如何快速地进行检索和维护也成为了一个难题。而分区设计就可以很好地解决这个问题。分区设计是指将数据集按照一定规则划分成多个较小的存储区域进行管理,这样可以更快速地读取或更新部分数据,并提高整个系统的稳定性和并发能力。常见的分区模式有水平分区和垂直分区,通过合理的分区设计不仅可以改善查询速度,还可以缓解数据库扩容的时候带来的压力。

四、数据备份和恢复

数据备份和恢复是数据库设计中不可少的技术要素,在设计数据库时需要考虑到数据的安全和可恢复性。对于数据的备份方式有增量备份、差异备份、全量备份等,而在实际操作中需要考虑备份的频率和备份类型等。同样,对于数据恢复也需要有具体的恢复策略和方案,可以在系统出现故障或数据异常时进行快速恢复。

五、并发设计

并发设计是指在数据库中针对多线程操作做出的规划和调度。在单线程中,操作流程相对简单,但传统的单线程操作在高并况下就会出现效率极低的情况。为了提高并发能力,需要采用多线程操作。但是多线程操作中也会出现数据交错与数据互斥等问题,需要采用锁、事务处理等技术,解决线程之间的冲突,从而保证操作的正确性和稳定性。

结语

综上所述,数据库设计技术指标的选择和综合考虑,与业务需求、数据量、数据种类和数据访问频率等都紧密相关。在数据库设计过程中,开发人员需要按照具体需求采用适合的技术指标,不断追求数据库设计的完美,提高系统的稳定性和实用性。而数据库技术的发展,也是推动数字化时代的一个重要动力。

相关问题拓展阅读:

什么是计算机的最主要的技术指标

CPU 的时钟频率、运算速度、字长和存储容量

对于不同用途的计算机,其对不同部件的性能指标要求有所不同。例如:对于用作科学计算为主的计算机,其对主机的运算速度要求很高;对于用作大型数据库处理为主的计算机,其对主机的内存容量、存取速度和外存储器的读写速度要求较高;对于用作网络传输的计算机,则要求有很高的I/O速度,因此应当有高速的I/O总线和相应的I/O接口。

(l)、运算速度

计算机的运算速度是指计算机每秒钟执行的指令数。单位为每秒百万条指令(简称 MIPS)或者每秒百万条浮点指令(简称 MFPOPS)。它们都是用基准程序来测试的。影响运算速度的有如下几个主要因素:

①CPU的主频。指计算机的时钟频率。它在很大程度上决定了计算机的运算速度。例如,Intel公司的CPU主频更高己达3.20GHz以上,AMD公衫氏司的可达400MHz以上。

②字长。CPU进行运算和数据处理的最基本、最有效的信息位长度。PC机的字长,已由8088的准16位(运算用16位,I/O用8位)发展到现在的32位、64位。

③指令系统的合理性。每种机器都设计了一套指令,一般均有数十条到上百条,例如:加、浮点加、逻辑与、跳转……等等,组成了指令系统。

(2)、存储器的指标

①存取速度。内存储器完成一次读(取)或写(存)操作所需的时间称为存储器的存取时间或者访问时间。而连续两次读(或写)所需的最短时间称为存储周期。对于半导体存储器来说,存取周期约为几十到几百ns(10-9秒)。

②存储容量。存储容量一般用字节(Byte)数来度量。PC机的内存储器已由286机配置的1MB,发展到现在P4(奔腾4)配置256MB,甚至512MB以上。内存容量的加大,对于运行大型软件十分必要,否则会感到慢得无法忍受。

(3)、I/O的速度或敬散

主机I/O的速度,取决于I/O总线的设计。这对于慢速设备(例如键盘、打印稿罩机)关系不大,但对于高速设备则效果十分明显。例如对于当前的硬盘,它的外部传输率已可达20MB/S、

什么是数据仓库,数据仓库在哪里保存数据。BI项目需要用到哪些技术

数据仓库还是数据库,数据还是在数据库里放着呢,不过是按照数据仓库的理念去设竖漏扒计架构和开发数据库.BI项目余昌主要运用搜告数据仓库,OLAP,和数据挖掘的技术,细分下来又有主流数据库的开发,如oracle,db2,sqlserver, java,cognos,bo,biee,sas,spss,clementine,weka等等

一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧。我一直是在互联网行业,就以互联网行业来说。先大概列一下互联网行业数据仓库、数据平台的用途:

整合公司所有业务数据,建立统一的数据中心;

提供各种报表,有给高层的,有给各个业务的;

为网站运营提供运营上的数据支持,就是通过数据,让运营及时了解网站和产品的运营效果;

为各个业务提供线上或线下的数据支持,成为公司统一的数据交换与提供平台;

分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;比如广告定向精准投放、用户个性化推荐等;

开发数据产品,直接或间接为公司盈利;

建设开放数据平台,开放公司数据;

。。。。。。

上面列出的内容看上去和传统行业数据仓库用途差不多,并且都要求数据仓库/数据平台有很好的稳定性、可靠性;但在互联网行业,除了数据量大之外,越来越多的业务要求时效性,甚至很多是要求实时的 ,另外,互联网行业的业务变化非常快,不可能像传统行业一样,可以使用自顶向下的方法建立数据仓库,一劳永逸,它要求新岩渗的业务很快能融入数据仓库中来,老的下线的业务,能很方便的从现有的数据仓库中下线;

其实,互联网行如枣纳业的数据仓库就是所谓的敏捷数据仓库,不但要求能快速的响应数据,也要求能快速的响应业务;

建设敏捷数据仓库,除了对架构技术上的要求之外,还有一个很重要的方面,就是数据建模,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。应对这种情况,一般是先将核心的持久化的业务进行深度建模(比如:基于网站日志建立的网站统计分析模型和用户浏览轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务一般都采用维度+宽表的方式来建立数据模型。这块是后话。

整体架构下面的图是我们目前使用的数据平台架构图,其实大多公司应该都差不多:

请点击输入图片描述

逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。

我们从下往上看:

数据采集数据采集层的任渣没务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。

数据源的种类比较多:

网站日志:

作为互联网行业,网站日志占的份额更大,网站日志存储在多台网站日志服务器上,

一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;

业务数据库:

业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapReduce来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案(可参考文章 《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以基于DataX之上做二次开发,就能非常好的解决,我们目前使用的DataHub也是。

当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。

来自于Ftp/Http的数据源:

有可能一些合作伙伴提供的数据,需要通过Ftp/Http等定时获取,DataX也可以满足该需求;

其他数据源:

比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;

数据存储与分析毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。

离线数据分析与计算,也就是对实时性要求不高的部分,在我看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapReduce要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;

当然,使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapReduce来做分析与计算;Spark是这两年非常火的,经过实践,它的性能的确比MapReduce要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群,关于Spark On Yarn的相关文章,可参考:《Spark On Yarn系列文章》

实时计算部分,后面单独说。

数据共享这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;

前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据; 和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。

另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。

数据应用

业务产品

业务产品所使用的数据,已经存在于数据共享层,他们直接从数据共享层访问即可;

报表

同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;

即席查询

即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;

这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。

即席查询一般是通过SQL完成,更大的难度在于响应速度上,使用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。

当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。

OLAP

目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;

这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;

比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。

其它数据接口

这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。

实时计算现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。

我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。

做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。

任务调度与监控在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;

这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始; 这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。

前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。

总结在我看来架构并不是技术越多越新越好,而是在可以满足需求的情况下,越简单越稳定越好。目前在我们的数据平台中,开发更多的是关注业务,而不是技术,他们把业务和需求搞清楚了,基本上只需要做简单的SQL开发,然后配置到调度系统就可以了,如果任务异常,会收到告警。这样,可以使更多的资源专注于业务之上。

请点击输入图片描述

请点击输入图片描述

关于数据库设计的技术指标有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 数据库设计技术指标大盘点 (数据库设计的技术指标有哪些)