① 数据存储形式有哪几种
【块存储】
典型设备:磁盘阵列,硬盘
块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了。例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘。)
接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操作系统会识别到有5块硬盘,但是操作系统是区分不出到底是逻辑还是物理的,它一概就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操作系统没有区别的,至少操作系统感知上没有区别。
此种方式下,操作系统还需要对挂载的裸硬盘进行分区、格式化后,才能使用,与平常主机内置硬盘的方式完全无异。
优点:
1、 这种方式的好处当然是因为通过了Raid与LVM等手段,对数据提供了保护。
2、 另外也可以将多块廉价的硬盘组合起来,成为一个大容量的逻辑盘对外提供服务,提高了容量。
3、 写入数据的时候,由于是多块磁盘组合出来的逻辑盘,所以几块磁盘可以并行写入的,提升了读写效率。
4、 很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
缺点:
1、采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要买光纤交换机,造价成本高。
2、主机之间的数据无法共享,在服务器不做集群的情况下,块存储裸盘映射给主机,再格式化使用后,对于主机来说相当于本地盘,那么主机A的本地盘根本不能给主机B去使用,无法共享数据。
3、不利于不同操作系统主机间的数据共享:另外一个原因是因为操作系统使用不同的文件系统,格式化完之后,不同文件系统间的数据是共享不了的。例如一台装了WIN7/XP,文件系统是FAT32/NTFS,而Linux是EXT4,EXT4是无法识别NTFS的文件系统的。就像一只NTFS格式的U盘,插进Linux的笔记本,根本无法识别出来。所以不利于文件共享。
【文件存储】
典型设备:FTP、NFS服务器
为了克服上述文件无法共享的问题,所以有了文件存储。
文件存储也有软硬一体化的设备,但是其实普通拿一台服务器/笔记本,只要装上合适的操作系统与软件,就可以架设FTP与NFS服务了,架上该类服务之后的服务器,就是文件存储的一种了。
主机A可以直接对文件存储进行文件的上传下载,与块存储不同,主机A是不需要再对文件存储进行格式化的,因为文件管理功能已经由文件存储自己搞定了。
优点:
1、造价交低:随便一台机器就可以了,另外普通以太网就可以,根本不需要专用的SAN网络,所以造价低。
2、方便文件共享:例如主机A(WIN7,NTFS文件系统),主机B(Linux,EXT4文件系统),想互拷一部电影,本来不行。加了个主机C(NFS服务器),然后可以先A拷到C,再C拷到B就OK了。(例子比较肤浅,请见谅……)
缺点:
读写速率低,传输速率慢:以太网,上传下载速度较慢,另外所有读写都要1台服务器里面的硬盘来承担,相比起磁盘阵列动不动就几十上百块硬盘同时读写,速率慢了许多。
【对象存储】
典型设备:内置大容量硬盘的分布式服务器
对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后再额外搞几台服务作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。
之所以出现了对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬它俩各自的优点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写快,利 于共享的出来呢。于是就有了对象存储。
首先,一个文件包含了了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(以下简称数据)。
以往像FAT32这种文件系统,是直接将一份文件的数据与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(如4M的文件,假设文件系统要求一个块4K,那么就将文件打散成为1000个小块),再写进硬盘里面,过程中没有区分数据/metadata的。而每个块最后会告知你下一个要读取的块的地址,然后一直这样顺序地按图索骥,最后完成整份文件的所有块的读取。
这种情况下读写速率很慢,因为就算你有100个机械手臂在读写,但是由于你只有读取到第一个块,才能知道下一个块在哪里,其实相当于只能有1个机械手臂在实际工作。
而对象存储则将元数据独立了出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。
这时候由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过此种方式,实现了读写快的目的。
另一方面,对象存储软件是有专门的文件系统的,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。
所以对象存储的出现,很好地结合了块存储与文件存储的优点。
最后为什么对象存储兼具块存储与文件存储的好处,还要使用块存储或文件存储呢?
1、有一类应用是需要存储直接裸盘映射的,例如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对裸盘进行格式化的,所以是不能够采用其他已经被格式化为某种文件系统的存储的。此类应用更适合使用块存储。
2、对象存储的成本比起普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储的形式好了,性价比高。
② 目前主要三种数据存储方式
三种存储方式:DAS、SAN、NAS
三种存储类型:块存储、文件存储、对象存储
块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。
本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景。
分布式存储的应用场景相对于其存储接口,现在流行分为三种:
对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、又拍、Swift、S3
块存储: 这种接口通常以QEMU Driver或者Kernel Mole的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)
文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。
③ 数据结构的存储方式有哪几种
数据结构的存储方式有顺序存储方法、链接存储方法、索引存储方法和散列存储方法这四种。
1、顺序存储方式:顺序存储方式就是在一块连续的存储区域一个接着一个的存放数据,把逻辑上相连的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接挂安息来体现。顺序存储方式也称为顺序存储结构,一般采用数组或者结构数组来描述。
2、链接存储方法:它比较灵活,其不要求逻辑上相邻的结点在物理位置上相邻,结点间的逻辑关系由附加的引用字段表示。一个结点的引用字段往往指导下一个结点的存放位置。链接存储方式也称为链接式存储结构,一般在原数据项中增加应用类型来表示结点之间的位置关系。
3、索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。它细分为两类:稠密索引:每个结点在索引表中都有一个索引项,索引项的地址指示结点所在的的存储位置;稀疏索引:一组结点在索引表中只对应一个索引项,索引项的地址指示一组结点的起始存储位置。
4、散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。
(3)两种存储方式分别适应于哪种情况扩展阅读
顺序存储和链接存储的基本原理
在顺序存储中,每个存储空间含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来的线性表的顺序存储,若一个元素存储在对应数组中的下标位置为i,则它的前驱元素在对应数组中的下标位置为i-1,它的后继元素在对应数组中的下标位置为i+1。
在链式存储结构中,存储结点不仅含有所存元素本身的信息,还含有元素之间逻辑关系的信息。数据的链式存储结构可用链接表来表示。其中data表示值域,用来存储节点的数值部分。Pl,p2,…,Pill(1n≥1)均为指针域,每个指针域为其对应的后继元素或前驱元素所在结点的存储位置。
在数据的顺序存储中,由于每个元素的存储位置都可以通过简单计算得到,所以访问元素的时间都相同;而在数据的链接存储中,由于每个元素的存储位置保存在它的前驱或后继结点中,所以只有当访问到其前驱结点或后继结点后才能够按指针访问到,访问任一元素的时间与该元素结点在链式存储结构中的位置有关。
④ 线性表的顺序存储结构和链式存储结构分别适用于什么场合
预先能够确定线性表长度;数据间有一定的依赖关系;数据和位置有关系时一般工顺序存储方便,否则,动态分配空间,链式存储方便,
⑤ 数据结构线性表两种存储结构的主要优缺点以及各自适用场合是什么
链式:优点:插入和删除不需要移动,空间有效利用缺点:大量访问操作时不如顺序存储结构。顺序:优点:可随机存取表中任一元素。缺点:插入或删除操作时,需大量移动元素。合适在很少进行插入和删除运算的情况下。
⑥ 队列的两种存储方式对比
队列的两种存储方式分为消息投递实时性:使用短轮询方式,实时性取决于轮询间隔时间:使用长轮询,同写入实时性一致,消息的写入延时通常在几个毫秒。总结:短轮询:周期性的向服务提供方发起请求,获取数据优点:前后端程序编写比较容易。缺点:请求中有大半是无用,难于维护,浪费带宽和服务器资源;响应的结果没有顺序(因为是异步请求,当发送的请求没有返回结果的时候,后面的请求又被发送。而此时如果后面的请求比前面的请 求要先返回结果,那么当前面的请求返回结果数据时已经是过时无效的数据了)。长轮询:客户端向服务器发送请求,服务器接到请求后保持住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。优点:在无消息的情况下不会频繁的请求,耗费资源小。缺点:服务器hold连接会消耗资源,难于管理维护。消费失败重试Kafka:消费失败不支持重试RocketMQ:消费失败支持定时重试,每次重试间隔时间顺延总结:kafka也可以通过编写代码来实现写入和消费失败的重试机制,这种要求需要用户来编写代码实现,kafka只是提供了这种方式,但并不是他推荐的使用方式,他的设计模式上只是兼顾了这种情况,并不是重点。RocketMQ在设计上就考虑了这种情况,在提供的官方api中提供了重试的设置,用户可以选择多种模式的重试机制,以及自定义的重试逻辑,简单场景下用户只用设置一下参数即可。关于需要重试的场景例如充值类应用,当前时刻调用运营商网关,充值失败,可能是对方压力过多,稍后在调用就会成功,如支付宝到银行扣款也是类似需求。这里的重试需要可靠的重试,即失败重试的消息不因为Consumer宕机导致丢失。
⑦ 计算机内存储器分为哪两种,谈谈其主要作用
1、磁芯存储器:
是随机存取计算机存储器的主要形式。这种存储器通常被称为核心存储器,或者非正式地称为核心存储器。
核心使用微小的磁环(环),核心通过线程来写入和读取信息。
每个核心代表一点信息。 磁芯可以以两种不同的方式(顺时针或逆时针)磁化,存储在磁芯中的位为零或一,取决于磁芯的磁化方向。
布线被布置成允许单个芯被设置为1或0,并且通过向所选择的导线发送适当的电流脉冲来改变其磁化。 读取内核的过程会导致内核重置为零,从而将其擦除。
这称为破坏性读数。 在不进行读写操作时,即使关闭电源,内核也会保持最后的值。 这使它们成为非易失性的。
2、半导体存储器(semi-conctor memory):
是一种以半导体电路作为存储媒体的存储器,内存储器就是由称为存储器芯片的半导体集成电路组成。
按其功能可分为:随机存取存储器(简称RAM)和只读存储器(只读ROM)。体积小、存储速度快、存储密度高、与逻辑电路接口容易。
(7)两种存储方式分别适应于哪种情况扩展阅读
早期的计算机最常见的存储器是各种磁芯制成的。这种磁芯存储器已被微型集成电路块上的半导体存储器所取代。磁芯存储器是华裔王安于1948年发明的(注)。最初的磁芯存储器只有几百个字节的容量。
磁芯的英文名称就是core,磁芯存储器就叫作core memory。虽然磁芯存储器已经被淘汰,但一些人还是出于习惯把内存叫做core。
在铁氧体磁环里穿进一根导线,导线中流过不同方向的电流时,可使磁环按两种不同方向磁化,代表“1”或“0”的信息便以磁场形式储存下来。
最常见的核心存储器形式,X /
Y线重合电流,用于计算机的主存储器,由大量小环形亚铁磁陶瓷铁氧体(磁芯)组成网格结构(组织为“堆叠“称为平面的层”,电线穿过核心中心的孔。
在早期系统中有四条线:X,Y,Sense和Inhibit,但后来的核心将后两条线组合成一条Sense
/
Inhibit线。每个环形线圈存储一位(0或1)。每个平面中的一个位可以在一个周期内被访问,因此一个字数组中的每个机器字被分布在一堆“平面”上。
每个平面将并行操作一个字的一位,允许在一个周期内读取或写入完整的字。
⑧ 比较das和nas两种数据存储技术,两者分别具有哪些优缺点适合哪种场合
来连接所存储设备,自形成一个网络。这样数据存储就不再是服务器的附属,而是作为独立网络节点而存在于网络之中,可由所有的网络用户共享。
同时NAS存储真正做到了即插即用,并且部署起来也相对灵活,再加上管理成本低,是目前企业选择较多的,但它同时也有存储性能低和可靠度不高等缺点。
二、DAS存储特点(直连存储)
DAS这种存储方式与我们普通的PC存储架构一样,外部存储设备都是直接挂接在服务器内部总线上,数据存储设备是整个服务器结构的一部份,DAS存储方式主要适用于小型网络、地理位置分散的网络和特殊服务器上。
DAS已经存在了很长时间,并且在很多情况下仍然是一种不错的存储选择。由于这种存储方式在磁盘系统和服务器之间具有很快的传输速率,因此,虽然在一些部门中一些新的SAN设备已经开始取代DAS,但是在要求快速磁盘访问的情况下,DAS仍然是一种理想的选择。更进一步地,在DAS环境中,运转大多数的应用程序都不会存在问题,所以你没有必要担心应用程序问题,从而可以将注意力集中于其他可能会导致问题的领域。
⑨ 线性表的链式存储结构与顺序存储结构比较有何特点这两种结构分别适合在什么情况下使用
链式存储结构适用于数据更改(添加,删除)较多的情况。
而顺序存储结构更适用于数据查询(改变某位置上数据的值,查找某位置上的值),各有各的优点,他们的缺点是:
链式结构上查找(查找第几个位置上的值)花的系统开销(主要是时间上的开销)要比顺序结构上的多,
而顺序结构上要删除某位置上的值或者在某位置添加数据时花的系统开销要比在链式上多。
所以在选用存储结构之前就要先考虑到以后对数据的操作主要是查询多还是更改多!
⑩ 字符串通常采用的两种存储方式是什么
字符串的两种最基本的存储方式是顺序存储方式和链接存储方式,选第三个啦