数据存储 Data Storage

目的

如果您需要更多支持和帮助,欢迎随时联系我们: [email protected]

介绍

容量
性能

此为一如何选择存储设备之基本准则,请为您的环境及工作负载选择适当之设备类型。

特性传统硬盘SAS硬盘SSD硬盘
费用
性能
容量

最常量测的性能特性是随机访问及顺序访问时的运作次数。其单位为IOPS(每秒的读写次数)。一个读取或是写入的运作=1次IOPS。存储系统上的存储设备所能达到之IOPS决定于转速、平均延迟及寻址时间。

不同设备之IOPS及特性

设备类型IOPS界面
5400 (RPM) 转速之硬盘 HDD ~75-100 IOPS SATA III
7200 (RPM)转速之硬盘 HDD ~125-150 IOPS SATA III
10,000 (RPM)转速之硬盘 HDD ~140 IOPS SAS
15,000 (RPM)转速之硬盘 HDD ~175-210 IOPS SAS
SSD Drives SSD ~40K-100K+ IOPS* SATA III

*SSD的性能取决于SSD控制芯片和闪存存储单元。

传统数据访问的方式

SSD高速缓存数据访问的方式

应用

存储格式:

文件:txt,csv,XML,json。容量在MB - GB 级别。

   基础数据,以操作系统文件格式存放

数据库: SQL Server, Oracle,DB2,MySQL。容量在GB - TB 级别。

   生产数据,以雪花模式和第三范式设计存放 Snowflake Schema

数据仓库: SQL Server, Oracle,DB2。容量在GB - TB 级别。

   分析数据,以星形模式存放 Star Schema

NoSQL DB:Redis, MongoDB,HBase。容量在GB - PB 级别。

   Key-Value数据

分布式文件系统:HDFS。容量在TB - PB 级别。

  原始数据 Raw Data

网络存储:Amazon S3


存储介质:

  • 内存
  • 硬盘
  • 磁带

存储分析:

  • 冷数据
  • 热数据

学习

  • 介绍

传统的数据存储一般分为在线(On-line)存储和离线(Off-line)存储两级存储方式。

而在分级存储系统中,一般分为在线(On-line)存储、近线(Near-line)存储和离线(Off-line)存储三级存储方式。

在线存储是指将数据存放在高速的磁盘系统(如闪存存储介质、FC磁盘或SCSI磁盘阵列)等存储设备上,适合存储那些需要经常和快速访问的程序和文件,其存取速度快,性能好,存储价格相对昂贵。在线存储是工作级的存储,其最大特征是存储设备和所存储的数据时刻保持“在线”状态,可以随时读取和修改,以满足前端应用服务器或数据库对数据访问的速度要求。

近线存储是指将数据存放在低速的磁盘系统上,一般是一些存取速度和价格介于高速磁盘与磁带之间的低端磁盘设备。近线存储外延相对比较广泛,主要定位于客户在线存储和离线存储之间的应用。就是指将那些并不是经常用到(例如一些长期保存的不常用的文件归档),或者说访问量并不大的数据存放在性能较低的存储设备上。但对这些设备的要求是寻址迅速、传输率高。因此,近线存储对性能要求相对来说并不高,但又要求相对较好的访问性能。同时多数情况下由于不常用的数据要占总数据量的较大比重,这也就要求近线存储设备在需要容量上相对较大。近线存储设备主要有SATA磁盘阵列、DVD-RAM光盘塔和光盘库等设备。

离线存储则指将数据备份到磁带或磁带库上。大多数情况下主要用于对在线存储或近线存储的数据进行备份,以防范可能发生的数据灾难,因此又称备份级存储。离线存储通常采用磁带作为存储介质,其访问速度低,但价格低廉的海量存储。

分级存储设备是根据具体应用可以变化的,这种存储级别的划分是相对的,可以分为多种级别。如可以采取FC磁盘-SCSI磁盘-SATA磁盘这种三级存储结构,也可以采取SSD盘-FC磁盘-SCSI磁盘-SATA磁盘-磁带这种五级存储结构,具体采用哪些存储级别需要根据具体应用而定。

  • 原理

在分级数据存储结构中,存储设备一般有磁带库磁盘磁盘阵列等,而磁盘又可以根据其性能分为FC磁盘、SCSI磁盘、SATA磁盘等多种,而闪存存储介质(非易失随机访问存储器(NVRAM))也因为较高的性能可以作为分级数据存储结构中较高的一级。一般,磁盘或磁盘阵列等成本高、速度快的设备,用来存储经常访问的重要信息,而磁带库等成本较低的存储资源用来存放访问频率较低的信息。

  • 现状分析

存储设备包括高性能的磁盘或磁盘阵列,存储技术如RAID磁盘、复制、定时拷贝、多级备份等。当数据已经不再为企业带来效益时,将这类数据迁移到较便宜的存储介质上;最后,当数据过时或一段时期不再访问时,应考虑将其删除或者迁移,如果是法律要求或政府规定要保留多年的数据,应将其迁移到近线磁盘或者离线磁带上进行归档,既安全又节省费用。

  • 信息生命周期管理

信息生命周期管理(InformationLifecycleManagement,ILM)是StorageTek公司针对不断变化的存储环境推出的先进存储管理理念,ILM试图实现根据数据在整个生命周期过程中不断变化的数据访问需求而进行数据的动态分布。分级存储和ILM在存储体系结构上基本相同,目标也都是使不同级别的数据在给定时间和不同级别的存储资源能够更好的匹配。二者本质差别是数据分级的标准不同:前者标准为数据近期被访问的概率;后者标准为数据近期对企业的价值。

  • 存储方式

传统的数据存储一般分为在线(On-line)存储和离线(Off-line)存储两级存储方式。

而在分级存储系统中,一般分为在线(On-line)存储、近线(Near-line)存储和离线(Off-line)存储三级存储方式。

在线存储是指将数据存放在高速的磁盘系统(如闪存存储介质、FC磁盘或SCSI磁盘阵列)等存储设备上,适合存储那些需要经常和快速访问的程序和文件,其存取速度快,性能好,存储价格相对昂贵。在线存储是工作级的存储,其最大特征是存储设备和所存储的数据时刻保持“在线”状态,可以随时读取和修改,以满足前端应用服务器或数据库对数据访问的速度要求。

近线存储是指将数据存放在低速的磁盘系统上,一般是一些存取速度和价格介于高速磁盘与磁带之间的低端磁盘设备。近线存储外延相对比较广泛,主要定位于客户在线存储和离线存储之间的应用。就是指将那些并不是经常用到(例如一些长期保存的不常用的文件归档),或者说访问量并不大的数据存放在性能较低的存储设备上。但对这些设备的要求是寻址迅速、传输率高。因此,近线存储对性能要求相对来说并不高,但又要求相对较好的访问性能。同时多数情况下由于不常用的数据要占总数据量的较大比重,这也就要求近线存储设备在需要容量上相对较大。近线存储设备主要有SATA磁盘阵列、DVD-RAM光盘塔和光盘库等设备。

离线存储则指将数据备份到磁带或磁带库上。大多数情况下主要用于对在线存储或近线存储的数据进行备份,以防范可能发生的数据灾难,因此又称备份级存储。离线存储通常采用磁带作为存储介质,其访问速度低,但价格低廉的海量存储。

分级存储设备是根据具体应用可以变化的,这种存储级别的划分是相对的,可以分为多种级别。如可以采取FC磁盘-SCSI磁盘-SATA磁盘这种三级存储结构,也可以采取SSD盘-FC磁盘-SCSI磁盘-SATA磁盘-磁带这种五级存储结构,具体采用哪些存储级别需要根据具体应用而定。

以上内容来自:自动分级存储

实践

AWS S3的读写:

Once you have a bucket, presumably you will want to store some data in it. S3 doesn’t care what kind of information you store in your objects or what format you use to store it. All you need is a key that is unique within your bucket.

The Key object is used in boto to keep track of data stored in S3. To store new data in S3, start by creating a new Key object:

>>> from boto.s3.key import Key
>>> k = Key(bucket)
>>> k.key = 'foobar'
>>> k.set_contents_from_string('This is a test of S3')

The net effect of these statements is to create a new object in S3 with a key of “foobar” and a value of “This is a test of S3”. To validate that this worked, quit out of the interpreter and start it up again. Then:

>>> import boto
>>> c = boto.connect_s3()
>>> b = c.get_bucket('mybucket') # substitute your bucket name here
>>> from boto.s3.key import Key
>>> k = Key(b)
>>> k.key = 'foobar'
>>> k.get_contents_as_string()
'This is a test of S3'

So, we can definitely store and retrieve strings. A more interesting example may be to store the contents of a local file in S3 and then retrieve the contents to another local file.

>>> k = Key(b)
>>> k.key = 'myfile'
>>> k.set_contents_from_filename('foo.jpg')
>>> k.get_contents_to_filename('bar.jpg')

小结


如果您有数据分析咨询实施的需求,欢迎随时和我们联系!

email:[email protected]


微信扫码支持
友情支持 自由赞助

results matching ""

    No results matching ""