程序员不能不懂数据存储

程序员不能不懂数据存储

                      帅宏军

        从个人电脑到互联网时代的数据存储是如何演进的,原理是怎样的,了解了这些,有利于程序员更好的优化性能,系统架构,本文意在讨论这个话题。

一、硬盘

          一般情况下的电脑,主要存储设备是内存和硬盘,内存是带电存储,硬盘是持久化存储,内存的访问速度比硬盘快。应用软件或者信息化项目,在运行期间,所用到的数据有一部分运行在内存中,访问速度快;有一部分存储在硬盘上,用到的时候,才去访问,访问的效率由硬盘的性能决定。

          当然,CPU和硬盘也带有缓存。但这些缓存的访问速度都比硬盘速度快,所以应用软件或者信息化项目,不考虑其他因素,其运行效率瓶颈在于硬盘的性能。在过去10年里,CPU、内存、显卡等PC配件一直在高速发展,性能早已翻了几倍甚至几十倍。但硬盘是例外的,除了容量的大幅度提升外,传输速度没有质的飞跃,无论接口怎么变,从当初ATA 66/100/133,到SATA 1.5Gb/s还是目前的SATA 3.0Gb/s,硬盘速度提升并不是很明显,因此硬盘早已成为PC系统的性能瓶颈。  

           当然,硬盘发展缓慢的原因与客观因素有关,目前大多数硬盘还是采用机械结构,转速是影响硬盘速度的重要因素,由于成本限制,目前只有服务器上用15000RPM的硬盘,民用级的还是10年前推出的7200RPM,这样注定硬盘速度不能有革命性的提升。后来又发展出了固态硬盘

          硬盘按照接口划分为下面几种,下面是几种常见的硬盘性能对比及介绍

               

         1、IDE 硬盘

          IDE的英文全称为“IntegratedDrive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容。对用户而言,硬盘安装起来也更为方便。IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉、兼容性强的特点,为其造就了其它类型硬盘无法替代的地位。

          IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、UltraATA、DMA、Ultra DMA等接口都属于IDE硬盘。              

         2、SATA 接口硬盘

          SATA是SerialATA的缩写,即串行ATA。这是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而得名。SATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。   

         3、SCSI 接口硬盘

          SCSI的英文全称为“SmallComputer System Interface”(小型计算机系统接口),是同IDE(ATA)完全不同的接口,IDE接口是普通PC的标准接口,而SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。

  

         4、光纤通道

          光纤通道的英文拼写是Fibre Channel,和SCIS接口一样光纤通道最初也不是为硬盘设计开发的接口技术,是专门为网络系统设计的,但随着存储系统对速度的需求,才逐渐应用到硬盘系统中。光纤通道硬盘是为提高多硬盘存储系统的速度和灵活性才开发的,它的出现大大提高了多硬盘系统的通信速度。光纤通道的主要特性有:热插拔性、高速带宽、远程连接、连接设备数量大等,但价格昂贵,一般用于高端服务器。

         

         5、SAS接口硬盘

          SAS(Serial Attached SCSI)是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,提供与串行ATA(Serial ATA,缩写为SATA)硬盘的兼容性. SAS的接口技术可以向下兼容SATA.

         

         6、固态硬盘

          SSD(Solid State Disk) 固态硬盘,和传统机械硬盘采用的磁盘体、磁头、马达等机械零件不同,固态硬盘是由控制芯片和存储芯片(FLASH芯片或DRAM芯片)组成,简单来说,固态硬盘和我们熟悉的闪存盘、闪存卡较为相似。相比于传统的机械硬盘,固态硬盘有很多优点,如速度快、防震、体积小、零噪音等。

         

二、磁盘阵列

         当一块硬盘的容量和安全、备份等不能满足要求时,就需要有更新的技术出现。如何增加磁盘的存取(access)速度,如何防止数据因磁盘的故障而失落及如何有效的利用磁盘空间,而大容量磁盘的价格非常昂贵。磁盘阵列技术的产生一举解决了这些问题。

         

          RAID: (Redundant Array of Inexpensive Disk廉价冗余磁盘阵列)

      是一种磁盘集群技术, 很早以前就开始使用在大型系统之中.用户可以自由定义数据的保存方式, 可以采用数据镜像(在不同磁盘上保存数据拷贝), 条带集(数据交叉保存在多个磁盘上), 还有奇偶校验保护(记录额外的数据以识别错误), 这些技术可以根据用户对性能和可靠性的要求单独或联合使用.

         

         1、架构

          基于不同的架构,RAID 又可以分为:        软件RAID (软件 RAID)        硬件RAID (硬件 RAID)        外置RAID (External RAID)  

        ·软件RAID

          很多情况下已经包含在系统之中,并成为其中一个功能,如微软的Windows NT/2000 Server/Server 2003和NetVoll的NetWare两种操作系统都可以提供软件阵列功能,其中Windows NT/2000 Server/Server 2003可以提供RAID 0、RAID 1、RAID 5;NetWare操作系统可以实现RAID 1功能。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降代还比较大,达30%左右。软件RAID中的所有操作皆由中央处理器负责,所以系统资源的利用率会很高,从而使系统性能降低。软件RAID是不需要另外添加任何硬件设备,因为它是靠你的系统——主要是中央处理器的功能——提供所有现成的资源。 

        ·硬件RAID

          通常是一张PCI卡,你会看到在这卡上会有处理器及内存。因为这卡上的处理器已经可以提供一切RAID所需要的资源,所以不会占用系统资源,从而令系统的表现可以大大提升。硬件RAID可以连接内置硬盘、热插拔背板或外置存储设备。无论连接何种硬盘,控制权都是在RAID卡上,亦即是由系统所操控。在系统里,硬件RAID PCI卡通常都需要安驱动程序,否则系统会拒绝支持。 

        ·外置式RAID

          也是属于硬件RAID的一种,区别在于RAID卡不会安装在系统里,而是安装在外置的存储设备内。而这个外置的储存设备则会连接到系统的SCSI卡上。系统没有任何的RAID功能,因为它只有一张SCSI卡;所有的RAID功能将会移到这个外置存储里。好处是外置的存储往往可以连接更多的硬盘,不会受系统机箱的大小所影响。而一些高级的技术,如双机容错,是需要多个服务器外连到一个外置储存上,以提供容错能力。

         2、RAID0(带区集)

                  

          RAID0是Data Striping(数据分割)技术的实现,它将所有硬盘构成一个磁盘阵列,可以同时对多个硬盘做读写动作,但是不具        备备份及容错能力,它价格便宜,硬盘使用效率最佳,但是可靠度是最差的。 

          以一个由三个硬盘组成的RAID0磁盘阵列为例,它把数据的第1和2位写入第一个硬盘,第三和第四位写入第二个硬盘……以此类推,所以叫“数据分割",因为各盘数据的写入动作是同时做的,所以它的存储速度可以比单个硬盘快几倍。 

          但是,这样一来,万一磁盘阵列上有一个硬盘坏了,由于它把数据拆开分别存到了不同的硬盘上,坏了一颗等于中断了数据的完整性,如果没有整个磁盘阵列的备份磁带的话,所有的数据是无法挽回的。因此,尽管它的效率很高,但是很少有人冒着数据丢失的危险采用这项技术。

          一般用在对数据安全要求不高,但对速度要求很高的场合,如:大型游戏、图形图像编辑等。此种RAID模式至少需要2个磁盘,而更多的磁盘则能提供更高效的数据传输。

         3、RAID1(镜像)

         

          RAID1使用的是Disk Mirror(磁盘映射)技术,就是把一个硬盘的内容同步备份复制到另一个硬盘里,所以具备了备份和容错能力,这样做的使用效率不高,但是可靠性高。每一个磁盘都有一个镜像磁盘,镜像磁盘随时保持与原磁盘的内容一致。RAID1具有最高的安全性,但只有一半的磁盘空间被用来存储数据。主要用在对数据安全性要求很高,而且要求能够快速恢复被损坏的数据的场合。此种RAID模式每组仅需要2个磁盘。

         4、RAID3(带专用校验驱动器的带区集)

         

          RAID 3采用Byte-interleaving(数据交错存储)技术,硬盘在SCSI控制卡下同时动作,并将用于奇偶校验的数据储存到特定硬盘机中,它具备了容错能力,它的可靠度较佳。

         5、RAID5(带分布校验位的带区集)

                 

         RAID 5使用的是Disk Striping(硬盘分割)技术,与RAID 3的不同之处在于它把奇偶校验数据存放到各个硬盘里,各个硬盘在SCSI控制卡的控制下平行动作,有容错能力。

         6、RAID10

         

          RAID0+1(也称RAID10)阵列中一半的驱动器采取RAID0的结构,可以并行传送来提高数据传输率。另一半则是前面提到的镜象磁盘,即是RAID1。这样可以有很高的可靠性。

三、网络存储

当一个机房无法容纳更多的存储设备,有了异地存储等需要时,就出现了网络存储技术。

         1、DAS

           DAS(Direct Attached Storage):即“直接连接存储”

           DAS是指将存储设备通过SCSI线缆或光纤通道直接连接到服务器上。优点-操作维护简便,价格低廉;DAS方式实现了机内存储到存储子系统的跨越,但是缺点依然有很多:
           1、扩展性差,服务器与存储设备直接连接的方式导致出现新的应用需求时,只能为新增的服务器单独配置存储设备,造成重复投资。
           2、浪费资源,DAS方式的存储长期来看存储空间无法充分利用,存在浪费。不同的应用服务器面对的存储数据量是不一致的,同时业务发展的状况也决定这存储数据量的变化。因此,出现了部分应用对应的存储空间不够用,另一些却有大量的存储空间闲置。
           3、管理分散,DAS方式数据依然是分散的,不同的应用各有一套存储设备。管理分散,无法集中。
           4、异构化严重,DAS方式使得企业在不同阶段采购了不同型号不同厂商的存储设备,设备之间异构化现象严重,导致维护成本据高不下。

         2、NAS

           NAS:(Network Attached Storage):即“网络连接存储”

           NAS即将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。NAS实际上是一种应用服务器, 其内部集成了处理器和磁盘设备,有自己专用的操作系统和网络文件系统,可以直接连入TCP/IP的网络, 透过TCP/IP协议向其他的计算机提供文件共享服务。

           NAS的优点:
           1、NAS可以即插即用。
           2、NAS通过TCP/IP网络连接到应用服务器,因此可以基于已有的企业网络方便连接。
           3、专用的操作系统支持不同的文件系统,提供不同操作系统的文件共享。

           NAS缺点:

           1、NAS设备与客户机通过企业网进行连接,因此数据备份或存储过程中会占用网络的带宽。这必然会影响企业内部网络上的其他网络应用;共用网络带宽成为限制NAS性能的主要问题。
           2、NAS的可扩展性受到设备大小的限制。增加另一台NAS设备非常容易,但是要想将两个NAS设备的存储空间无缝合并并不容易,因为NAS设备通常具有独特的网络标识符,存储空间的扩大上有限。
           3、NAS访问需要经过文件系统格式转换,所以是以文件一级来访问。不适和Block级的应用,尤其是要求使用裸设备的数据库系统。

         3、SAN

           SAN:(Storage Area Network):即“存储区域网”                 

           

           SAN, 在最纯粹的意义上, 是一个专门用于数据传输的单独的计算机网络,FC SAN 特点是基于光纤通道技术(Fibre Channel)的电缆, 交换机和集线器,  将很多的存储设备连接起来,再与有很多不同的服务器组成的网络相连接, 以多点对多点的方式进行管理。

           利用光纤通道技术,SAN可以在存储和服务器之间传输海量数据块,SAN提供了数据备份的有效方式。SAN克服了传统上与SCSI相连的线缆限制,极大地拓展了服务器和存储之间的距离,SAN也带来了开放性和高扩展性也使SAN网络可以方便的加入存储设备和服务器。因此,传统上用于数据备份的网络带宽可以节约下来用于其他应用。

           它又分为IP-SAN和FC-SAN两种:

           IP-SAN适用环境:异地间的数据交换及容灾,备份,非关键应用的集中存储。

           FC-SAN适用环境:关键应用的集中存储、备份及容灾。

          

四、云存储服务

         作为云时代的IT基础架构,云中的存储资源应该是可以无限扩展的,而且可以随时按需获取,可以被理解成是一种按需提供的服务。这样企业不需要自己组建存储网络,规避了成本和技术问题;按需使用云存储,不需要时,停止租借,避免了浪费。目前国内已经有很多,云存储提供商,这里不再详细介绍。

转载请注明出处:http://blog.csdn.net/shuaihj/article/details/17092627

时间: 2024-12-22 10:30:10

程序员不能不懂数据存储的相关文章

看看这个常常被初级程序员弄不懂的 “事件”

       众所周知在面试中,经常有些崽子面试官会问些"事件和委托"的关系,也许一路走来的程序员大多都会被问到这个,那么对于这个 高频的"事件和委托"问题,如何回击呢?首先我从最经典的一套面试题说起,用事件来实现 "猫爪老鼠",这是一个从网上copy过来的一 个例子. static void Main(string[] args) { Mouse mouse = new Mouse(); Cat cat = new Cat(); cat.OnC

一张图帮助你从程序员晋升为数据科学家

前段时间,Opensource.com进行了一项"最好的初学者编程语言投票活动",我们也对此进行了报道(具体内容请戳:最受初学者青睐的编程语言是Python),调查结果显示Python是最受初学者欢迎的编程语言,甚至Python已经成为了入门级计算机科学课程的首选语言. Python不仅学习起来很简单,可以应用的范围也很广,许多专业领域都有涉及.所以将Python语言作为职业晋升或者职位转变的敲门砖是再合适不过了. DataCamp搜集了很多信息,整理了一张Python开发者和数据科学

草根狂欢:程序员对《大数据时代》感悟

文章讲的是草根狂欢:程序员对<大数据时代>感悟,2012年被称作中国的大数据元年,有两本书功不可没.前有涂子沛的<大数据>(从美国政府的数据信仰.政策和实践娓娓道来,让中国政坛和知识精英接受了一次思维洗礼),后有舍恩伯格的<大数据时代>(此书是系统论述大数据理念的奠基之作).如果说前者着力于启蒙--大数据可以做什么,那么后者则注重解惑--大数据该怎么做. 大数据的引爆点在2011年,对大数据的认知也随即经历了一个拨云见雾的过程,先是体量(Volume)大,到类型杂(Va

《程序员度量:改善软件团队的分析学》一有价值的数据

有价值的数据 本书后续章节将讨论一些特定的程序员度量.某些度量相当简单,基于产品bug这类原子数据:而有些度量相对更复杂一些,它们需要利用公式以及多个数据元素的组合. 无论如何,在深入探究特定的度量之前,我们都应考虑各种可用于程序员度量的数据类型,并思考这些数据是否有用处.我们需要广泛而深入地思考那些令人关注的.新的数据元素,因为它们能够带来更有意义的度量.同样,程序员和软件团队的工作需要关联到团队和组织的目标.我们也同样需要认真地思考如何确定这些数据. 下面的列表是我发现的一些有用的数据示例,

程序员想玩转大数据:需要知晓的12种工具

无论是在构建大数据的应用程序,还是仅仅只想从开发的移动应用中得到一点点启发,程序员现在比以往任何时候都需要数据分析工具.这绝对是一个好东西,所以很多公司从程序员的需求和技能出发,构建了一些数据分析工具.GigaOm的记者Derrick Harris列举了十二个工具: 在过去的几年里,Derrick看到了很多初创公司,各类项目以及开发工具等等,它们都旨在为程序员带来先进的数据分析能力.有时候,程序员们会使用简单的脚本开发出强大的显示效果,或者在http://www.aliyun.com/zixun

Java程序员学习一天半C++的感想

大学期间,学了一学期的C语言,当然包括学习数据结构时,用的也是C语言.当时刚刚接触计算机,对于编程更是一无所知.上课学习学习,偶尔会照着 书上敲一下代码.大二下学期,就丢掉了不用了.最近由于工作的需要,要使用Java Native Interface,所以就学习了1天半的C++,对C++有了一点点的了解,写一下自己的理解. 一天半时间,也学不多少东西,我主要就搞明白了下面几个问题: 1)指针 这么多年了,还记得在C语言时,最难以理解的,应该属于指针了.还记得谭浩强的那本C语言书(书名是啥,真的忘

SQL Server 2005 Compact Edition 的数据存储体系结构

摘要: SQL Server 2005 Compact Edition (SSCE) 为构建多种应用程序类型提供功能强大并且轻型的数据存储引擎.本文介绍了客户端应用程序和小规模服务器应用程序的数据存储问题.文章讨论了 SSCE 的功能集以及该功能集如何解决数据存储问题.全文对各种与 SSCE 相适用的应用程序体系结构进行了介绍,重点讲解了应用程序类型的属性以及 SSCE 如何满足每种应用程序类型的要求. 简介 为应用程序选择合适的数据存储体系结构可以说是件令人望而生畏的任务.可供选择的数据存储技

技术变化那么快,程序员如何做到不被淘汰?

阿里妹导读:写了这么多年的代码,你是否曾经有过这样的迷茫和困惑--技术发展日新月异,奋力追赶的我们,究竟是技术的主人还是技术的奴隶?今天,我们邀请到了蚂蚁金服的技术专家空融,一起来聊聊技术人的软件世界观. 在浩大的软件世界里,作为一名普通程序员,显得十分渺小,甚至会感到迷茫.我们内心崇拜技术,却也对日新月异的技术抱有深深的恐惧.有时候我会思考难道在技术领域内不断紧跟新潮,不断提升技能就是我的价值所在?那么我是技术的主人还是技术的奴隶? 人之所以迷茫往往是找不到工作生活的重心,感受不到工作或生活的

S.O. 推出程序员身价计算器,看看自己值多少钱?

近日,Stack Overflow 推出了一个程序员薪水计算器.它可以通过你所拥有的技能.工作地区.教育程度.工作经验等,估算出你在编程界值多少钱.该工具将根据各类因素给出直观图形化的显示,从而来衡量自己的薪资是否达到自己工作的一般水平,保障自己的利益,并且让开发人员进行一般的财务处理工作. 如果你有打算去国外就业,那么就不妨用这个"计算器"估算一下自己的薪资. 当然,在国内一些程序员依然可以混得风生水起.特别是那些北上广的程序员,生活可谓滋润. 根据2017年程序员薪水的数据统计,j