① 數據結構
何謂數據結構
?
數據結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數據的內部構成,即一個數據由那些成分數據構成,以什麼方式構成,呈什麼結構。數據結構有邏輯上的數據結構和物理上的數據結構之分。邏輯上的數據結構反映成分數據之間的邏輯關系,而物理上的數據結構反映成分數據在計算機內部的存儲安排。數據結構是數據存在的形式。 數據結構是信息的一種組織方式,其目的是為了提高演算法的效率,它通常與一組演算法的集合相對應,通過這組演算法集合可以對數據結構中的數據進行某種操作。
?
數據結構主要研究什麼?
?
數據結構作為一門學科主要研究數據的各種邏輯結構和存儲結構,以及對數據的各種操作。因此,主要有三個方面的內容:數據的邏輯結構;數據的物理存儲結構;對數據的操作(或演算法)。通常,演算法的
?
設計取決於數據的邏輯結構,演算法的實現取決於數據的物理存儲結構。
?
什麼是數據結構?什麼是邏輯結構和物理結構?
?
數據是指由有限的符號(比如,"0"和"1",具有其自己的結構、操作、和相應的語義)組成的元素的集合。結構是元素之間的關系的集合。通常來說,一個數據結構DS 可以表示為一個二元組:
?
DS=(D,S), //i.e., data-structure=(data-part,logic-structure-part) 這里D是數據元素的集合(或者是「結點」,可能還含有「數據項」或「數據域」),S是定義在D(或其他集合)上的關系的集合,S = { R | R : D×D×...},稱之為元素的邏輯結構。 邏輯結構有四種基本類型:集合結構、線性結構、樹狀結構和網路結構。表和樹是最常用的兩種高效數據結構,許多高效的演算法可以用這兩種數據結構來設計實現。表是線性結構的(全序關系),樹(偏序或層次關系)和圖(局部有序(weak/local orders))是非線性結構。
?
數據結構的物理結構是指邏輯結構的存儲鏡像(image)。數據結構 DS 的物理結構 P對應於從 DS 的數據元素到存儲區M(維護著邏輯結構S)的一個映射:
?
(PD,S) -- > M 存儲器模型:一個存儲器 M 是一系列固定大小的存儲單元,每個單元 U 有一個唯一的地址 A(U),該地址被連續地編碼。每個單元 U 有一個唯一的後繼單元 U'=succ(U)。 P 的四種基本映射模型:順序(sequential)、鏈接(linked)、索引(indexed)和散列(hashing)映射。
?
因此,我們至少可以得到4×4種可能的物理數據結構:
?
sequential (sets)
linked lists
indexed trees
hash graphs
?
(並不是所有的可能組合都合理)
?
??? 數據結構DS上的操作:所有的定義在DS上的操作在改變數據元素(節點)或節點的域時必須保持DS的邏輯和物理結構。
?
DS上的基本操作:任何其他對DS的高級操作都可以用這些基本操作來實現。最好將DS和他的所有基本操作看作一個整體——稱之為模塊。我們可以進一步將該模塊抽象為數據類型(其中DS的存儲結構被表示為私有成員,基本操作被表示為公共方法),稱之為ADT。作為ADT,堆棧和隊列都是一種特殊的表,他們擁有表的操作的子集。 對於DATs的高級操作可以被設計為(不封裝的)演算法,利用基本操作對DS進行處理。
?
好的和壞的DS:如果一個DS可以通過某種「線性規則」被轉化為線性的DS(例如線性表),則稱它為好的DS。好的DS通常對應於好的(高效的)演算法。這是由計算機的計算能力決定的,因為計算機本質上只能存取邏輯連續的內存單元,因此如何沒有線性化的結構邏輯上是不可計算的。比如對一個圖進行操作,要訪問圖的所有結點,則必須按照某種順序來依次訪問所有節點(要形成一個偏序),必須通過某種方式將圖固有的非線性結構轉化為線性結構才能對圖進行操作。
?
樹是好的DS——它有非常簡單而高效的線性化規則,因此可以利用樹設計出許多非常高效的演算法。樹的實現和使用都很簡單,但可以解決大量特殊的復雜問題,因此樹是實際編程中最重要和最有用的一種數據結構。樹的結構本質上有遞歸的性質——每一個葉節點可以被一棵子樹所替代,反之亦然。實際上,每一種遞歸的結構都可以被轉化為(或等價於)樹形結構。
?
從機器語言到高級語言的抽象
?
我們知道,演算法被定義為一個運算序列。這個運算序列中的所有運算定義在一類特定的數據模型上,並以解決一類特定問題為目標。這個運算序列應該具備下列四個特徵。 有限性,即序列的項數有限,且每一運算項都可在有限的時間內完成;確定性,即序列的每一項運算都有明確的定義,無二義性;可以沒有輸入運算項,但一定要有輸出運算項;可行性,即對於任意給定的合法的輸入都能得到相應的正確的輸出。這些特徵可以用來判別一個確定的運算序列是否稱得上是一個演算法。 但是,我們現在的問題不是要判別一個確定的運算序列是否稱得上是一個演算法,而是要對一個己經稱得上是演算法的運算序列,回顧我們曾經如何用程序設計語言去表達它。
?
演算法的程序表達,歸根到底是演算法要素的程序表達,因為一旦演算法的每一項要素都用程序清楚地表達,整個演算法的程序表達也就不成問題。
?
作為運算序列的演算法,有三個要素。 作為運算序列中各種運算的運算對象和運算結果的數據;運算序列中的各種運算;運算序列中的控制轉移。這三種要素依序分別簡稱為數據、運算和控制。 由於演算法層出不窮,變化萬千,其中的運算所作用的對象數據和所得到的結果數據名目繁多,不勝枚舉。最簡單最基本的有布爾值數據、字元數據、整數和實數數據等;稍復雜的有向量、矩陣、記錄等數據;更復雜的有集合、樹和圖,還有聲音、圖形、圖像等數據。 同樣由於演算法層出不窮,變化萬千,其中運算的種類五花八門、多姿多彩。最基本最初等的有賦值運算、算術運算、邏輯運算和關系運算等;稍復雜的有算術表達式和邏輯表達式等;更復雜的有函數值計算、向量運算、矩陣運算、集合運算,以及表、棧、隊列、樹和圖上的運算等:此外,還可能有以上列舉的運算的復合和嵌套。 關於控制轉移,相對單純。在串列計算中,它只有順序、分支、循環、遞歸和無條件轉移等幾種。
?
我們來回顧一下,自從計算機問世以來,演算法的上述三要素的程序表達,經歷過一個怎樣的過程。
?
最早的程序設計語言是機器語言,即具體的計算機上的一個指令集。當時,要在計算機上運行的所有演算法都必須直接用機器語言來表達,計算機才能接受。演算法的運算序列包括運算對象和運算結果都必須轉換為指令序列。其中的每一條指令都以編碼(指令碼和地址碼)的形式出現。與演算法語言表達的演算法,相差十萬八千里。對於沒受過程序設計專門訓練的人來說,一份程序恰似一份"天書",讓人看了不知所雲,可讀性
?
極差。
?
用機器語言表達演算法的運算、數據和控制十分繁雜瑣碎,因為機器語言所提供的指令太初等、原始。機器語言只接受算術運算、按位邏輯運算和數的大小比較運算等。對於稍復雜的運算,都必須一一分解,直到到達最初等的運算才能用相應的指令替代之。機器語言能直接表達的數據只有最原始的位、位元組、和字三種。演算法中即使是最簡單的數據如布爾值、字元、整數、和實數,也必須一一地映射到位、位元組和字
中,還得一一分配它們的存儲單元。對於演算法中有結構的數據的表達則要麻煩得多。機器語言所提供的控制轉移指令也只有無條件轉移、條件轉移、進入子程序和從子程序返回等最基本的幾種。用它們來構造循環、形成分支、調用函數和過程得事先做許多的准備,還得靠許多的技巧。 直接用機器語言表達演算法有許多缺點。
?
大量繁雜瑣碎的細節牽制著程序員,使他們不可能有更多的時間和精力去從事創造性的勞動,執行對他們來說更為重要的任務。如確保程序的正確性、高效性。程序員既要駕馭程序設計的全局又要深入每一個局部直到實現的細節,即使智力超群的程序員也常常會顧此失彼,屢出差錯,因而所編出的程序可靠性差,且開發周期長。 由於用機器語言進行程序設計的思維和表達方式與人們的習慣大相徑庭,只有經過
較長時間職業訓練的程序員才能勝任,使得程序設計曲高和寡。因為它的書面形式全是"密"碼,所以可讀性差,不便於交流與合作。因為它嚴重地依賴於具體的計算機,所以可移植性差,重用性差。這些弊端造成當時的計算機應用未能迅速得到推廣。
?
克服上述缺點的出路在於程序設計語言的抽象,讓它盡可能地接近於演算法語言。 為此,人們首先注意到的是可讀性和可移植性,因為它們相對地容易通過抽象而得到改善。於是,很快就出現匯編語言。這種語言對機器語言的抽象,首先表現在將機器語言的每一條指令符號化:指令碼代之以記憶符號,地址碼代之以符號地址,使得其含義顯現在符號上而不再隱藏在編碼中,可讓人望"文"生義。其次表現在這種語言擺脫了具體計算機的限制,可在不同指令集的計算機上運行,只要該計算機配上匯編語言的一個匯編程序。這無疑是機器語言朝演算法語言靠攏邁出的一步。但是,它離演算法語言還太遠,以致程序員還不能從分解演算法的數據、運算和控制到匯編才能直接表達的指令等繁雜瑣碎的事務中解脫出來。 到了50年代中期,出現程序設計的高級語言如Fortran,Algol60,以及後來的PL/l, Pascal等,演算法的程序表達才產生一次大的飛躍。
?
誠然,演算法最終要表達為具體計算機上的機器語言才能在該計算機上運行,得到所需要的結果。但匯編語言的實踐啟發人們,表達成機器語言不必一步到位,可以分兩步走或者可以築橋過河。即先表達成一種中介語言,然後轉成機器語言。匯編語言作為一種中介語言,並沒有獲得很大成功,原因是它離演算法語
?
言還太遠。這便指引人們去設計一種盡量接近演算法語言的規范語言,即所謂的高級語言,讓程序員可以用它方便地表達演算法,然後藉助於規范的高級語言到規范的機器語言的"翻譯",最終將演算法表達為機器語言。而且,由於高級語言和機器語言都具有規范性,這里的"翻譯"完全可以機械化地由計算機來完成,就像匯編語言被翻譯成機器語言一樣,只要計算機配上一個編譯程序。 上述兩步,前一步由程序員去完成,後一步可以由編譯程序去完成。在規定清楚它們各自該做什麼之後,這兩步是完全獨立的。它們各自該如何做互不相干。前一步要做的只是用高級語言正確地表達給定的演算法,產生一個高級語言程序;後一步要做的只是將第一步得到的高級語言程序翻譯成機器語言程序。至於程序員如何用高級語言表達演算法和編譯程序如何將高級語言表達的演算法翻譯成機器語言表達的演算法,顯然毫不相干。
?
處理從演算法語言最終表達成機器語言這一復雜過程的上述思想方法就是一種抽象。匯編語言和高級語言的出現都是這種抽象的範例。 與匯編語言相比,高級語言的巨大成功在於它在數據、運算和控制三方
?
面的表達中引入許多接近演算法語言的概念和工具,大大地提高抽象地表達演算法的能力。 在運算方面,高級語言如Pascal,除允許原封不動地運用演算法語言的四則運算、邏輯運算、關系運算、算術表達式、邏輯表達式外,還引入強有力的函數與過程的工具,並讓用戶自定義。這一工具的重要性不僅在於它精簡了重復的程序文本段,而且在於它反映出程序的兩級抽象。
?
在函數與過程調用級,人們只關心它能做什麼,不必關心它如何做。只是到函數與過程的定義時,人們才給出如何做的細節。用過高級語言的讀者都知道,一旦函數與過程的名稱、參數和功能被規定清楚,那麼,在程序中調用它們便與在程序的頭部說明它們完全分開。你可以修改甚至更換函數體與過程體,而不影響它們的被調用。如果把函數與過程名看成是運算名,把參數看成是運算的對象或運算的結果,那麼
?
,函數與過程的調用和初等運算的引用沒有兩樣。利用函數和過程以及它們的復合或嵌套可以很自然地表達演算法語言中任何復雜的運算。
?
在數據方面,高級語言如Pascal引人了數據類型的概念,即把所有的數據加以分類。每一個數據(包括表達式)或每一個數據變數都屬於其中確定的一類。稱這一類數據為一個數據類型。 因此,數據類型是數據或數據變數類屬的說明,它指示該數據或數據變數可能取的值的全體。對於無結構的數據,高級語言如Pascal,除提供標準的基本數據類型--布爾型、字元型、整型和實型外,還提供用戶可自定義的枚舉類、子界類型和指針類型。這些類型(除指針外),其使用方式都順應人們在演算法語言中使用的習慣。對於有結構的數據,高級語言如Pascal,提供了數組、記錄、有限制的集合和文件等四種標準的結構數據類型。其中,數組是科學計算中的向量、矩陣的抽象;記錄是商業和管理中的記錄的抽象;有限制的集合是數學中足夠小的集合的勢集的抽象;文件是諸如磁碟等外存儲數據的抽象。
?
人們可以利用所提供的基本數據類型(包括標準的和自定義的),按數組、記錄、有限制的集合和文件的構造規則構造有結構的數據。 此外,還允許用戶利用標準的結構數據類型,通過復合或嵌套構造更復雜更高層的結構數據。這使得高級語言中的數據類型呈明顯的分層。 高級語言中數據類型的分層是沒有窮盡的,因而用它們可以表達演算法語言中任何復雜層次的數據。 在控制方面,高級語言如Pascal,提供了表達演算法控制轉移的六種方式。
?
(1)預設的順序控制";"。
?
(2)條件(分支)控制:"if表達式(為真)then S1 else S2;" 。
?
(3)選擇(情況)控制:
?
"Case 表達式 of
?
值1: S1
值2: S2
...
值n: Sn
end"
?
(4)循環控制:
?
"while 表達式(為真) do S;" 或
"repeat S until 表達式(為真);" 或
"for變數名:=初值 to/downto 終值do S;"
?
(5)函數和過程的調用,包括遞歸函數和遞歸過程的調用。
?
(6)無條件轉移goto。
這六種表達方式不僅覆蓋了演算法語言中所有控製表達的要求,而且不再像機器語言或匯編語言那樣原始、那樣繁瑣、那樣隱晦,而是如上面所看到的,與自然語言的表達相差無幾。 程序設計語言從機器語言到高級語言的抽象,帶來的主要好處是: 高級語言接近演算法語言,易學、易掌握,一般工程技術人員只要幾周時間的培訓就可以勝任程序員的工作;高級語言為程序員提供了結構化程序設計的環境和工具,使得設計出來的程序可讀性好,可維護性強,可靠性高;高級語言遠離機器語言,與具體的計算機硬體關系不大,因而所寫出來的程序可移植性好,重用率高; 由於把繁雜瑣碎的事務交給了編譯程序去做,所以自動化程度高,開發周期短,且程、序員得到解脫,可以集中時間和精力去從事對於他們來說更為重要的創造性勞動,以提高、程序的質量。
?
數據結構、數據類型和抽象數據類型
?
數據結構、數據類型和抽象數據類型,這三個術語在字面上既不同又相近,反映出它們在含義上既有區別又有聯系。
?
數據結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數據的內部構成,即一個數據由哪些成分數據構成,以什麼方式構成,呈什麼結構。數據結構有邏輯上的數據結構和物理上的數據結構之分。邏輯上的數據結構反映成分數據之間的邏輯關系,物理上的數據結構反映成分數據在計算機內的存儲安排。數據結構是數據存在的形式。
?
數據是按照數據結構分類的,具有相同數據結構的數據屬同一類。同一類數據的全體稱為一個數據類型。在程序設計高級語言中,數據類型用來說明一個數據在數據分類中的歸屬。它是數據的一種屬性。這個屬性限定了該數據的變化范圍。為了解題的需要,根據數據結構的種類,高級語言定義了一系列的數據類型。不同的高級語言所定義的數據類型不盡相同。Pascal語言所定義的數據類型的種類。
?
其中,簡單數據類型對應於簡單的數據結構;構造數據類型對應於復雜的數據結構;在復雜的數據結構里,允許成分數據本身具有復雜的數據結構,因而,構造數據類型允許復合嵌套;指針類型對應於數據結構中成分數據之間的關系,表面上屬簡單數據類型,實際上都指向復雜的成分數據即構造數據類型中的數據,因此這里沒有把它劃入簡單數據類型,也沒有劃入構造數據類型,而單獨劃出一類。
?
數據結構反映數據內部的構成方式,它常常用一個結構圖來描述:數據中的每一項成分數據被看作一個結點,並用方框或圓圈表示,成分數據之間的關系用相應的結點之間帶箭號的連線表示。如果成分數據本身又有它自身的結構,則結構出現嵌套。這里嵌套還允許是遞歸的嵌套。
?
由於指針數據的引入,使構造各種復雜的數據結構成為可能。按數據結構中的成分數據之間的關系,數據結構有線性與非線性之分。在非線性數據結構中又有層次與網狀之分。 由於數據類型是按照數據結構劃分的,因此,一類數據結構對應著一種數據類型。數據類型按照該類型中的數據所呈現的結構也有線性與非線性之分,層次與網狀之分。一個數據變數,在高級語言中的類型說明必須是讀變數所具有的數據結構所對應的數據類型。最常用的數據結構是數組結構和記錄結構。數組結構的特點是:
?
成分數據的個數固定,它們之間的邏輯關系由成分數據的序號(或叫數組的下標)來體現。這些成分數據按照序號的先後順序一個挨一個地排列起來。每一個成分數據具有相同的結構(可以是簡單結構,也可以是復雜結構),因而屬於同一個數據類型(相應地是簡單數據類型或構造數據類型)。這種同一的數據類型稱為基類型。所有的成分數據被依序安排在一片連續的存儲單元中。 概括起來,數組結構是一個線性的、均勻的、其成分數據可隨機訪問的結構。
?
由於這、種結構有這些良好的特性,所以最常被人們所採用。在高級語言中,與數組結構相對應的、數據類型是數組類型,即數組結構的數據變數必須說明為array [i] of T0 ,其中i是數組、結構的下標類型,而T0是數組結構的基類型。 記錄結構是另一種常用的數據結構。它的特點是:與數組結構一樣,成分數據的個數固定。但成分數據之間沒有自然序,它們處於平等地位。每一個成分數據被稱為一個域並賦予域名。不同的域有不同的域名。不同的域允許有不同的結構,因而允許屬於不同的數據類型。與數組結構一樣,它們可以隨機訪問,但訪問的途徑靠的是域名。在高級語言中記錄結構對應的數據類型是記錄類型。記錄結構的數據的變數必須說明為記錄類型。
?
抽象數據類型的含義在上一段已作了專門敘述。它可理解為數據類型的進一步抽象。即把數據類型和數據類型上的運算捆在一起,進行封裝。引入抽象數據類型的目的是把數據類型的表示和數據類型上運算的實現與這些數據類型和運算在程序中的引用隔開,使它們相互獨立。對於抽象數據類型的描述,除了必須描述它的數據結構外,還必須描述定義在它上面的運算(過程或函數)。抽象數據類型上定義的過程和函
數以該抽象數據類型的數據所應具有的數據結構為基礎。
?
泛型設計和數據結構與演算法
?
下面我想再說說關於泛型程序設計模型對於數據結構和演算法方面的最新推動,泛型思想已經把數據結
?
構和演算法方面的基本思想抽象到了一個前所未有的高度,現在有多種程序設計語言支持泛型設計,比如
ADA,C++,而且據說在JAVA的下一版本和C#中也將對泛型設計進行全面的支持。
?
先說說泛型設計的基本思想:泛型編程(generic programming,以下直接以GP稱呼)是一種全新的程序設計思想,和OO,OB,PO這些為人所熟知的程序設計想法不同的是GP抽象度更高,基於GP設計的組件之間偶合度底,沒有繼承關系,所以其組件間的互交性和擴展性都非常高。我們都知道,任何演算法都是作用在一種特定的數據結構上的,最簡單的例子就是快速排序演算法最根本的實現條件就是所排序的對象是存
貯在數組裡面,因為快速排序就是因為要用到數組的隨機存儲特性,即可以在單位時間內交換遠距離的對象,而不只是相臨的兩個對象,而如果用聯表去存儲對象,由於在聯表中取得對象的時間是線性的既O[n],這樣將使快速排序失去其快速的特點。也就是說,我們在設計一種演算法的時候,我們總是先要考慮其應用的數據結構,比如數組查找,聯表查找,樹查找,圖查找其核心都是查找,但因為作用的數據結構不同
?
將有多種不同的表現形式。數據結構和演算法之間這樣密切的關系一直是我們以前的認識。泛型設計的根本思想就是想把演算法和其作用的數據結構分離,也就是說,我們設計演算法的時候並不去考慮我們設計的演算法將作用於何種數據結構之上。泛型設計的理想狀態是一個查找演算法將可以作用於數組,聯表,樹,圖等各種數據結構之上,變成一個通用的,泛型的演算法。這樣的理想是不是很誘惑人?
?
泛型編程帶來的是前所未有的彈性以及不會損失效率的抽象性,GP和OO不同,它不要求你通過額外的間接層來調用函數:它讓你撰寫完全一般化並可重復使用的演算法,其效率與針對特定數據結構而設計的演算法旗鼓相當。我們大家都知道數據結構在C++中可以用用戶定義類型來表示,而C++中的模板技術就是以類型作為參數,那麼我可以想像利用模板技術可以實現我們開始的GP思想,即一個模板函數可以對於各種傳遞進來的類型起作用,而這些類型就可以是我們定義的各種數據結構。
?
泛型演算法抽離於特定類型和特定數據結構之外,使得其適應與盡可能的一般化類型,演算法本身只是為了實現演算法其需要表達的邏輯本質而不去被為各種數據結構的實現細節所干擾。這意味著一個泛型演算法實際具有兩部分。1,用來描敘演算法本質邏輯的實際指令;2,正確指定其參數類型必須滿足的性質的一組需求條件。到此,相信有不少人已經開始糊塗了,呵呵,不要緊。畢竟GP是一種抽象度非常高的程序設計思想,裡面的核心就是抽象條件成為成為程序設計過程中的核心,從而取代了類型這在OO裡面的核心地位,正是因為類型不在是我們考慮的重點,類型成為了抽象條件的外衣,所以我們稱這樣的程序思想為泛型思想------把類型泛化。
滿意請採納。
② 傲騰內存是什麼是內存還是固態硬碟
傲騰是Optane中文名,是英特爾公司發明的一種超高速內存新技術,兼容NVMe(非易失性存儲器)存儲協議,傲騰內存則是該項技術的具體應用。傲騰內存雖叫內存,但並非作為DRAM內存的替代品,傲騰內存是用於提升機械硬碟速度體驗的緩存設備。傲騰內存通過基於3D XPoint的英特爾傲騰技術以及英特爾快速存儲技術驅動程序,可以為傳統機械硬碟提供更高的性能和響應能力,這也讓低成本高容量高速存儲解決方案成為了可能。
同時,對於硬碟需容納大體積軟體、文件數據,缺因為高容量SSD價格高昂而卻步的用戶,傲騰內存也將成為首選方案。
從傲騰工作原理可以看出,傲騰是一個讓高容量和高速響應魚和熊掌兼得的高性價比解決方案。藉助全新的傲騰內存搭配英特爾快速存儲技術,數據存儲於大容量機械硬碟中也能更快速地調用。當然要體驗這項全新的黑科技,用戶平台必須先升級到7代或8代酷睿i系列處理器並搭配英特爾200系或300系新主板,並安裝全新Windows10操作系統,相信這一系列全新產品的結合能讓傲騰技術發揮最優的性能。
③ 大數據存儲與應用特點及技術路線分析
大數據存儲與應用特點及技術路線分析
大數據時代,數據呈爆炸式增長。從存儲服務的發展趨勢來看,一方面,對數據的存儲量的需求越來越大;另一方面,對數據的有效管理提出了更高的要求。大數據對存儲設備的容量、讀寫性能、可靠性、擴展性等都提出了更高的要求,需要充分考慮功能集成度、數據安全性、數據穩定性,系統可擴展性、性能及成本各方面因素。
大數據存儲與應用的特點分析
「大數據」是由數量巨大、結構復雜、類型眾多數據構成的數據集合,是基於雲計算的數據處理與應用模式,通過數據的整合共享,交叉復用形成的智力資源和知識服務能力。其常見特點可以概括為3V:Volume、Velocity、Variety(規模大、速度快、多樣性)。
大數據具有數據規模大(Volume)且增長速度快的特性,其數據規模已經從PB級別增長到EB級別,並且仍在不斷地根據實際應用的需求和企業的再發展繼續擴容,飛速向著ZB(ZETA-BYTE)的規模進軍。以國內最大的電子商務企業淘寶為例,根據淘寶網的數據顯示,至2011年底,淘寶網最高單日獨立用戶訪問量超過1.2億人,比2010年同期增長120%,注冊用戶數量超過4億,在線商品數量達到8億,頁面瀏覽量達到20億規模,淘寶網每天產生4億條產品信息,每天活躍數據量已經超過50TB.所以大數據的存儲或者處理系統不僅能夠滿足當前數據規模需求,更需要有很強的可擴展性以滿足快速增長的需求。
(1)大數據的存儲及處理不僅在於規模之大,更加要求其傳輸及處理的響應速度快(Velocity)。
相對於以往較小規模的數據處理,在數據中心處理大規模數據時,需要服務集群有很高的吞吐量才能夠讓巨量的數據在應用開發人員「可接受」的時間內完成任務。這不僅是對於各種應用層面的計算性能要求,更加是對大數據存儲管理系統的讀寫吞吐量的要求。例如個人用戶在網站選購自己感興趣的貨物,網站則根據用戶的購買或者瀏覽網頁行為實時進行相關廣告的推薦,這需要應用的實時反饋;又例如電子商務網站的數據分析師根據購物者在當季搜索較為熱門的關鍵詞,為商家提供推薦的貨物關鍵字,面對每日上億的訪問記錄要求機器學習演算法在幾天內給出較為准確的推薦,否則就丟失了其失效性;更或者是計程車行駛在城市的道路上,通過GPS反饋的信息及監控設備實時路況信息,大數據處理系統需要不斷地給出較為便捷路徑的選擇。這些都要求大數據的應用層可以最快的速度,最高的帶寬從存儲介質中獲得相關海量的數據。另外一方面,海量數據存儲管理系統與傳統的資料庫管理系統,或者基於磁帶的備份系統之間也在發生數據交換,雖然這種交換實時性不高可以離線完成,但是由於數據規模的龐大,較低的數據傳輸帶寬也會降低數據傳輸的效率,而造成數據遷移瓶頸。因此大數據的存儲與處理的速度或是帶寬是其性能上的重要指標。
(2)大數據由於其來源的不同,具有數據多樣性的特點。
所謂多樣性,一是指數據結構化程度,二是指存儲格式,三是存儲介質多樣性。對於傳統的資料庫,其存儲的數據都是結構化數據,格式規整,相反大數據來源於日誌、歷史數據、用戶行為記錄等等,有的是結構化數據,而更多的是半結構化或者非結構化數據,這也正是傳統資料庫存儲技術無法適應大數據存儲的重要原因之一。所謂存儲格式,也正是由於其數據來源不同,應用演算法繁多,數據結構化程度不同,其格式也多種多樣。例如有的是以文本文件格式存儲,有的則是網頁文件,有的是一些被序列化後的比特流文件等等。所謂存儲介質多樣性是指硬體的兼容,大數據應用需要滿足不同的響應速度需求,因此其數據管理提倡分層管理機制,例如較為實時或者流數據的響應可以直接從內存或者Flash(SSD)中存取,而離線的批處理可以建立在帶有多塊磁碟的存儲伺服器上,有的可以存放在傳統的SAN或者NAS網路存儲設備上,而備份數據甚至可以存放在磁帶機上。因而大數據的存儲或者處理系統必須對多種數據及軟硬體平台有較好的兼容性來適應各種應用演算法或者數據提取轉換與載入(ETL)。
大數據存儲技術路線最典型的共有三種:
第一種是採用MPP架構的新型資料庫集群,重點面向行業大數據,採用Shared Nothing架構,通過列存儲、粗粒度索引等多項大數據處理技術,再結合MPP架構高效的分布式計算模式,完成對分析類應用的支撐,運行環境多為低成本 PC Server,具有高性能和高擴展性的特點,在企業分析類應用領域獲得極其廣泛的應用。
這類MPP產品可以有效支撐PB級別的結構化數據分析,這是傳統資料庫技術無法勝任的。對於企業新一代的數據倉庫和結構化數據分析,目前最佳選擇是MPP資料庫。
第二種是基於Hadoop的技術擴展和封裝,圍繞Hadoop衍生出相關的大數據技術,應對傳統關系型資料庫較難處理的數據和場景,例如針對非結構化數據的存儲和計算等,充分利用Hadoop開源的優勢,伴隨相關技術的不斷進步,其應用場景也將逐步擴大,目前最為典型的應用場景就是通過擴展和封裝 Hadoop來實現對互聯網大數據存儲、分析的支撐。這裡面有幾十種NoSQL技術,也在進一步的細分。對於非結構、半結構化數據處理、復雜的ETL流程、復雜的數據挖掘和計算模型,Hadoop平台更擅長。
第三種是大數據一體機,這是一種專為大數據的分析處理而設計的軟、硬體結合的產品,由一組集成的伺服器、存儲設備、操作系統、資料庫管理系統以及為數據查詢、處理、分析用途而特別預先安裝及優化的軟體組成,高性能大數據一體機具有良好的穩定性和縱向擴展性。
以上是小編為大家分享的關於大數據存儲與應用特點及技術路線分析的相關內容,更多信息可以關注環球青藤分享更多干貨
④ 大數據時代的數據怎麼挖掘
3月13日下午,南京郵電大學計算機學院、軟體學院院長、教授李濤在CIO時代APP微講座欄目作了題為《大數據時代的數據挖掘》的主題分享,深度詮釋了大數據及大數據時代下的數據挖掘。
眾所周知,大數據時代的大數據挖掘已成為各行各業的一大熱點。
一、數據挖掘
在大數據時代,數據的產生和收集是基礎,數據挖掘是關鍵,數據挖掘可以說是大數據最關鍵也是最基本的工作。通常而言,數據挖掘也稱為DataMining,或知識發現Knowledge Discovery from Data,泛指從大量數據中挖掘出隱含的、先前未知但潛在的有用信息和模式的一個工程化和系統化的過程。
不同的學者對數據挖掘有著不同的理解,但個人認為,數據挖掘的特性主要有以下四個方面:
1.應用性(A Combination of Theory and Application):數據挖掘是理論演算法和應用實踐的完美結合。數據挖掘源於實際生產生活中應用的需求,挖掘的數據來自於具體應用,同時通過數據挖掘發現的知識又要運用到實踐中去,輔助實際決策。所以,數據挖掘來自於應用實踐,同時也服務於應用實踐,數據是根本,數據挖掘應以數據為導向,其中涉及到演算法的設計與開發都需考慮到實際應用的需求,對問題進行抽象和泛化,將好的演算法應用於實際中,並在實際中得到檢驗。
2.工程性(An Engineering Process):數據挖掘是一個由多個步驟組成的工程化過程。數據挖掘的應用特性決定了數據挖掘不僅僅是演算法分析和應用,而是一個包含數據准備和管理、數據預處理和轉換、挖掘演算法開發和應用、結果展示和驗證以及知識積累和使用的完整過程。而且在實際應用中,典型的數據挖掘過程還是一個交互和循環的過程。
3.集合性(A Collection of Functionalities):數據挖掘是多種功能的集合。常用的數據挖掘功能包括數據探索分析、關聯規則挖掘、時間序列模式挖掘、分類預測、聚類分析、異常檢測、數據可視化和鏈接分析等。一個具體的應用案例往往涉及多個不同的功能。不同的功能通常有不同的理論和技術基礎,而且每一個功能都有不同的演算法支撐。
4.交叉性(An Interdisciplinary Field):數據挖掘是一門交叉學科,它利用了來自統計分析、模式識別、機器學習、人工智慧、信息檢索、資料庫等諸多不同領域的研究成果和學術思想。同時一些其他領域如隨機演算法、資訊理論、可視化、分布式計算和最優化也對數據挖掘的發展起到重要的作用。數據挖掘與這些相關領域的區別可以由前面提到的數據挖掘的3個特性來總結,最重要的是它更側重於應用。
綜上所述,應用性是數據挖掘的一個重要特性,是其區別於其他學科的關鍵,同時,其應用特性與其他特性相輔相成,這些特性在一定程度上決定了數據挖掘的研究與發展,同時,也為如何學習和掌握數據挖掘提出了指導性意見。如從研究發展來看,實際應用的需求是數據挖掘領域很多方法提出和發展的根源。從最開始的顧客交易數據分析(market basket analysis)、多媒體數據挖掘(multimedia data mining)、隱私保護數據挖掘(privacy-preserving data mining)到文本數據挖掘(text mining)和Web挖掘(Web mining),再到社交媒體挖掘(social media mining)都是由應用推動的。工程性和集合性決定了數據挖掘研究內容和方向的廣泛性。其中,工程性使得整個研究過程里的不同步驟都屬於數據挖掘的研究范疇。而集合性使得數據挖掘有多種不同的功能,而如何將多種功能聯系和結合起來,從一定程度上影響了數據挖掘研究方法的發展。比如,20世紀90年代中期,數據挖掘的研究主要集中在關聯規則和時間序列模式的挖掘。到20世紀90年代末,研究人員開始研究基於關聯規則和時間序列模式的分類演算法(如classification based on association),將兩種不同的數據挖掘功能有機地結合起來。21世紀初,一個研究的熱點是半監督學習(semi-supervised learning)和半監督聚類(semi-supervised clustering),也是將分類和聚類這兩種功能有機結合起來。近年來的一些其他研究方向如子空間聚類(subspace clustering)(特徵抽取和聚類的結合)和圖分類(graph classification)(圖挖掘和分類的結合)也是將多種功能聯系和結合在一起。最後,交叉性導致了研究思路和方法設計的多樣化。
前面提到的是數據挖掘的特性對研究發展及研究方法的影響,另外,數據挖掘的這些特性對如何學習和掌握數據挖掘提出了指導性的意見,對培養研究生、本科生均有一些指導意見,如應用性在指導數據挖掘時,應熟悉應用的業務和需求,需求才是數據挖掘的目的,業務和演算法、技術的緊密結合非常重要,了解業務、把握需求才能有針對性地對數據進行分析,挖掘其價值。因此,在實際應用中需要的是一種既懂業務,又懂數據挖掘演算法的人才。工程性決定了要掌握數據挖掘需有一定的工程能力,一個好的數據額挖掘人員首先是一名工程師,有很強大的處理大規模數據和開發原型系統的能力,這相當於在培養數據挖掘工程師時,對數據的處理能力和編程能力很重要。集合性使得在具體應用數據挖掘時,要做好底層不同功能和多種演算法積累。交叉性決定了在學習數據挖掘時要主動了解和學習相關領域的思想和技術。
因此,這些特性均是數據挖掘的特點,通過這四個特性可總結和學習數據挖掘。
二、大數據的特徵
大數據(bigdata)一詞經常被用以描述和指代信息爆炸時代產生的海量信息。研究大數據的意義在於發現和理解信息內容及信息與信息之間的聯系。研究大數據首先要理清和了解大數據的特點及基本概念,進而理解和認識大數據。
研究大數據首先要理解大數據的特徵和基本概念。業界普遍認為,大數據具有標準的「4V」特徵:
1.Volume(大量):數據體量巨大,從TB級別躍升到PB級別。
2.Variety(多樣):數據類型繁多,如網路日誌、視頻、圖片、地理位置信息等。
3.Velocity(高速):處理速度快,實時分析,這也是和傳統的數據挖掘技術有著本質的不同。
4.Value(價值):價值密度低,蘊含有效價值高,合理利用低密度價值的數據並對其進行正確、准確的分析,將會帶來巨大的商業和社會價值。
上述「4V」特點描述了大數據與以往部分抽樣的「小數據」的主要區別。然而,實踐是大數據的最終價值體現的唯一途徑。從實際應用和大數據處理的復雜性看,大數據還具有如下新的「4V」特點:
5.Variability(變化):在不同的場景、不同的研究目標下數據的結構和意義可能會發生變化,因此,在實際研究中要考慮具體的上下文場景(Context)。
6.Veracity(真實性):獲取真實、可靠的數據是保證分析結果准確、有效的前提。只有真實而准確的數據才能獲取真正有意義的結果。
7.Volatility(波動性)/Variance(差異):由於數據本身含有噪音及分析流程的不規范性,導致採用不同的演算法或不同分析過程與手段會得到不穩定的分析結果。
8.Visualization(可視化):在大數據環境下,通過數據可視化可以更加直觀地闡釋數據的意義,幫助理解數據,解釋結果。
綜上所述,以上「8V」特徵在大數據分析與數據挖掘中具有很強的指導意義。
三、大數據時代下的數據挖掘
在大數據時代,數據挖掘需考慮以下四個問題:
大數據挖掘的核心和本質是應用、演算法、數據和平台4個要素的有機結合。
因為數據挖掘是應用驅動的,來源於實踐,海量數據產生於應用之中。需用具體的應用數據作為驅動,以演算法、工具和平台作為支撐,最終將發現的知識和信息應用到實踐中去,從而提供量化的、合理的、可行的、且能產生巨大價值的信息。
挖掘大數據中隱含的有用信息需設計和開發相應的數據挖掘和學習演算法。演算法的設計和開發需以具體的應用數據作為驅動,同時在實際問題中得到應用和驗證,而演算法的實現和應用需要高效的處理平台,這個處理平台可以解決波動性問題。高效的處理平台需要有效分析海量數據,及時對多元數據進行集成,同時有力支持數據化對演算法及數據可視化的執行,並對數據分析的流程進行規范。
總之,應用、演算法、數據、平台這四個方面相結合的思想,是對大數據時代的數據挖掘理解與認識的綜合提煉,體現了大數據時代數據挖掘的本質與核心。這四個方面也是對相應研究方面的集成和架構,這四個架構具體從以下四個層面展開:
應用層(Application):關心的是數據的收集與演算法驗證,關鍵問題是理解與應用相關的語義和領域知識。
數據層(Data):數據的管理、存儲、訪問與安全,關心的是如何進行高效的數據使用。
演算法層(Algorithm):主要是數據挖掘、機器學習、近似演算法等演算法的設計與實現。
平台層(Infrastructure):數據的訪問和計算,計算平台處理分布式大規模的數據。
綜上所述,數據挖掘的演算法分為多個層次,在不同的層面有不同的研究內容,可以看到目前在做數據挖掘時的主要研究方向,如利用數據融合技術預處理稀疏、異構、不確定、不完整以及多來源數據;挖掘復雜動態變化的數據;測試通過局部學習和模型融合所得到的全局知識,並反饋相關信息給預處理階段;對數據並行分布化,達到有效使用的目的。
四、大數據挖掘系統的開發
1.背景目標
大數據時代的來臨使得數據的規模和復雜性都出現爆炸式的增長,促使不同應用領域的數據分析人員利用數據挖掘技術對數據進行分析。在應用領域中,如醫療保健、高端製造、金融等,一個典型的數據挖掘任務往往需要復雜的子任務配置,整合多種不同類型的挖掘演算法以及在分布式計算環境中高效運行。因此,在大數據時代進行數據挖掘應用的一個當務之急是要開發和建立計算平台和工具,支持應用領域的數據分析人員能夠有效地執行數據分析任務。
之前提到一個數據挖掘有多種任務、多種功能及不同的挖掘演算法,同時,需要一個高效的平台。因此,大數據時代的數據挖掘和應用的當務之急,便是開發和建立計算平台和工具,支持應用領域的數據分析人員能夠有效地執行數據分析任務。
2.相關產品
現有的數據挖掘工具
有Weka、SPSS和SQLServer,它們提供了友好的界面,方便用戶進行分析,然而這些工具並不適合進行大規模的數據分析,同時,在使用這些工具時用戶很難添加新的演算法程序。
流行的數據挖掘演算法庫
如Mahout、MLC++和MILK,這些演算法庫提供了大量的數據挖掘演算法。但這些演算法庫需要有高級編程技能才能進行任務配置和演算法集成。
最近出現的一些集成的數據挖掘產品
如Radoop和BC-PDM,它們提供友好的用戶界面來快速配置數據挖掘任務。但這些產品是基於Hadoop框架的,對非Hadoop演算法程序的支持非常有限。沒有明確地解決在多用戶和多任務情況下的資源分配。
3.FIU-Miner
為解決現有工具和產品在大數據挖掘中的局限性,我們團隊開發了一個新的平台——FIU-Miner,它代表了A Fast,Integrated,and User-Friendly System for Data Miningin Distributed Environment。它是一個用戶友好並支持在分布式環境中進行高效率計算和快速集成的數據挖掘系統。與現有數據挖掘平台相比,FIU-Miner提供了一組新的功能,能夠幫助數據分析人員方便並有效地開展各項復雜的數據挖掘任務。
與傳統的數據挖掘平台相比,它提供了一些新的功能,主要有以下幾個方面:
A.用戶友好、人性化、快速的數據挖掘任務配置。基於「軟體即服務」這一模式,FIU-Miner隱藏了與數據分析任務無關的低端細節。通過FIU-Miner提供的人性化用戶界面,用戶可以通過將現有演算法直接組裝成工作流,輕松完成一個復雜數據挖掘問題的任務配置,而不需要編寫任何代碼。
B.靈活的多語言程序集成。允許用戶將目前最先進的數據挖掘演算法直接導入系統演算法庫中,以此對分析工具集合進行擴充和管理。同時,由於FIU-Miner能夠正確地將任務分配到有合適運行環境的計算節點上,所以對這些導入的演算法沒有實現語言的限制。
C.異構環境中有效的資源管理。FIU-Miner支持在異構的計算環境中(包括圖形工作站、單個計算機、和伺服器等)運行數據挖掘任務。FIU-Miner綜合考慮各種因素(包括演算法實現、伺服器負載平衡和數據位置)來優化計算資源的利用率。
D.有效的程序調度和執行。
應用架構上包括用戶界面層、任務和系統管理層、邏輯資源層、異構的物理資源層。這種分層架構充分考慮了海量數據的分布式存儲、不同數據挖掘演算法的集成、多重任務的配置及系統用戶的交付功能。一個典型的數據挖掘任務在應用之中需要復雜的主任務配置,整合多種不同類型的挖掘演算法。因此,開發和建立這樣的計算平台和工具,支持應用領域的數據分析人員進行有效的分析是大數據挖掘中的一個重要任務。
FIU-Miner系統用在了不同方面:如高端製造業、倉庫智能管理、空間數據處理等,TerraFly GeoCloud是建立在TerraFly系統之上的、支持多種在線空間數據分析的一個平台。提供了一種類SQL語句的空間數據查詢與挖掘語言MapQL。它不但支持類SQL語句,更重要的是可根據用戶的不同要求,進行空間數據挖掘,渲染和畫圖查詢得到空間數據。通過構建空間數據分析的工作流來優化分析流程,提高分析效率。
製造業是指大規模地把原材料加工成成品的工業生產過程。高端製造業是指製造業中新出現的具有高技術含量、高附加值、強競爭力的產業。典型的高端製造業包括電子半導體生產、精密儀器製造、生物制葯等。這些製造領域往往涉及嚴密的工程設計、復雜的裝配生產線、大量的控制加工設備與工藝參數、精確的過程式控制制和材料的嚴格規范。產量和品質極大地依賴流程管控和優化決策。因此,製造企業不遺餘力地採用各種措施優化生產流程、調優控制參數、提高產品品質和產量,從而提高企業的競爭力。
在空間數據處理方面,TerraFly GeoCloud對多種在線空間數據分析。對傳統數據分析而言,其難點在於MapQL語句比較難寫,任務之間的關系比較復雜,順序執行之間空間數據分許效率較低。而FIU-Miner可有效解決以上三個難點。
總結而言,大數據的復雜特徵對數據挖掘在理論和演算法研究方面提出了新的要求和挑戰。大數據是現象,核心是挖掘數據中蘊含的潛在信息,並使它們發揮價值。數據挖掘是理論技術和實際應用的完美結合。數據挖掘是理論和實踐相結合的一個例子。
⑤ 大數據時代下的三種存儲架構
大數據時代下的三種存儲架構_數據分析師考試
大數據時代,移動互聯、社交網路、數據分析、雲服務等應用的迅速普及,對數據中心提出革命性的需求,存儲基礎架構已經成為IT核心之一。政府、軍隊軍工、科研院所、航空航天、大型商業連鎖、醫療、金融、新媒體、廣電等各個領域新興應用層出不窮。數據的價值日益凸顯,數據已經成為不可或缺的資產。作為數據載體和驅動力量,存儲系統成為大數據基礎架構中最為關鍵的核心。
傳統的數據中心無論是在性能、效率,還是在投資收益、安全,已經遠遠不能滿足新興應用的需求,數據中心業務急需新型大數據處理中心來支撐。除了傳統的高可靠、高冗餘、綠色節能之外,新型的大數據中心還需具備虛擬化、模塊化、彈性擴展、自動化等一系列特徵,才能滿足具備大數據特徵的應用需求。這些史無前例的需求,讓存儲系統的架構和功能都發生了前所未有的變化。
基於大數據應用需求,「應用定義存儲」概念被提出。存儲系統作為數據中心最核心的數據基礎,不再僅是傳統分散的、單一的底層設備。除了要具備高性能、高安全、高可靠等特徵之外,還要有虛擬化、並行分布、自動分層、彈性擴展、異構資源整合、全局緩存加速等多方面的特點,才能滿足具備大數據特徵的業務應用需求。
尤其在雲安防概念被熱炒的時代,隨著高清技術的普及,720P、1080P隨處可見,智能和高清的雙向需求、動輒500W、800W甚至上千萬更高解析度的攝像機面市,大數據對存儲設備的容量、讀寫性能、可靠性、擴展性等都提出了更高的要求,需要充分考慮功能集成度、數據安全性、數據穩定性,系統可擴展性、性能及成本各方面因素。
目前市場上的存儲架構如下:
(1)基於嵌入式架構的存儲系統
節點NVR架構主要面向小型高清監控系統,高清前端數量一般在幾十路以內。系統建設中沒有大型的存儲監控中心機房,存儲容量相對較小,用戶體驗度、系統功能集成度要求較高。在市場應用層面,超市、店鋪、小型企業、政法行業中基本管理單元等應用較為廣泛。
(2)基於X86架構的存儲系統
平台SAN架構主要面向中大型高清監控系統,前端路數成百上千甚至上萬。一般多採用IPSAN或FCSAN搭建高清視頻存儲系統。作為監控平台的重要組成部分,前端監控數據通過錄像存儲管理模塊存儲到SAN中。
此種架構接入高清前端路數相對節點NVR有了較高提升,具備快捷便利的可擴展性,技術成熟。對於IPSAN而言,雖然在ISCSI環節數據並發讀寫傳輸速率有所消耗,但其憑借擴展性良好、硬體平台通用、海量數據可充分共享等優點,仍然得到很多客戶的青睞。FCSAN在行業用戶、封閉存儲系統中應用較多,比如縣級或地級市高清監控項目,大數據量的並發讀寫對千兆網路交換提出了較大的挑戰,但應用FCSAN構建相對獨立的存儲子系統,可以有效解決上述問題。
面對視頻監控系統大文件、隨機讀寫的特點,平台SAN架構系統不同存儲單元之間的數據共享冗餘方面還有待提高;從高性能伺服器轉發視頻數據到存儲空間的策略,從系統架構而言也增加了隱患故障點、ISCSI帶寬瓶頸導致無法充分利用硬體數據並發性能、接入前端數據較少。上述問題催生了平台NVR架構解決方案。
該方案在系統架構上省去了存儲伺服器,消除了上文提到的性能瓶頸和單點故障隱患。大幅度提高存儲系統的寫入和檢索速度;同時也徹底消除了傳統文件系統由於供電和網路的不穩定帶來的文件系統損壞等問題。
平台NVR中存儲的數據可同時供多個客戶端隨時查詢,點播,當用戶需要查看多個已保存的視頻監控數據時,可通過授權的視頻監控客戶端直接查詢並點播相應位置的視頻監控數據進行歷史圖像的查看。由於數據管理伺服器具有監控系統所有監控點的錄像文件的索引,因此通過平台CMS授權,視頻監控客戶端可以查詢並點播整個監控系統上所有監控點的數據,這個過程對用戶而言也是透明的。
(3)基於雲技術的存儲方案
當前,安防行業可謂「雲」山「物」罩。隨著視頻監控的高清化和網路化,存儲和管理的視頻數據量已有海量之勢,雲存儲技術是突破IP高清監控存儲瓶頸的重要手段。雲存儲作為一種服務,在未來安防監控行業有著客觀的應用前景。
與傳統存儲設備不同,雲存儲不僅是一個硬體,而是一個由網路設備、存儲設備、伺服器、軟體、接入網路、用戶訪問介面以及客戶端程序等多個部分構成的復雜系統。該系統以存儲設備為核心,通過應用層軟體對外提供數據存儲和業務服務。
一般分為存儲層、基礎管理層、應用介面層以及訪問層。存儲層是雲存儲系統的基礎,由存儲設備(滿足FC協議、iSCSI協議、NAS協議等)構成。基礎管理層是雲存儲系統的核心,其擔負著存儲設備間協同工作,數據加密,分發以及容災備份等工作。應用介面層是系統中根據用戶需求來開發的部分,根據不同的業務類型,可以開發出不同的應用服務介面。訪問層指授權用戶通過應用介面來登錄、享受雲服務。其主要優勢在於:硬體冗餘、節能環保、系統升級不會影響存儲服務、海量並行擴容、強大的負載均衡功能、統一管理、統一向外提供服務,管理效率高,雲存儲系統從系統架構、文件結構、高速緩存等方面入手,針對監控應用進行了優化設計。數據傳輸可採用流方式,底層採用突破傳統文件系統限制的流媒體數據結構,大幅提高了系統性能。
高清監控存儲是一種大碼流多並發寫為主的存儲應用,對性能、並發性和穩定性等方面有很高的要求。該存儲解決方案採用獨特的大緩存順序化演算法,把多路隨機並發訪問變為順序訪問,解決了硬碟磁頭因頻繁尋道而導致的性能迅速下降和硬碟壽命縮短的問題。
針對系統中會產生PB級海量監控數據,存儲設備的數量達數十台上百台,因此管理方式的科學高效顯得十分重要。雲存儲可提供基於集群管理技術的多設備集中管理工具,具有設備集中監控、集群管理、系統軟硬體運行狀態的監控、主動報警,圖像化系統檢測等功能。在海量視頻存儲檢索應用中,檢索性能尤為重要。傳統文件系統中,文件檢索採用的是「目錄-》子目錄-》文件-》定位」的檢索步驟,在海量數據的高清視頻監控,目錄和文件數量十分可觀,這種檢索模式的效率就會大打折扣。採用序號文件定位可以有效解決該問題。
雲存儲可以提供非常高的的系統冗餘和安全性。當在線存儲系統出現故障後,熱備機可以立即接替服務,當故障恢復時,服務和數據回遷;若故障機數據需要調用,可以將故障機的磁碟插入到冷備機中,實現所有數據的立即可用。
對於高清監控系統,隨著監控前端的增加和存儲時間的延長,擴展能力十分重要。市場中已有友商可提供單純針對容量的擴展櫃擴展模式和性能容量同步線性擴展的堆疊擴展模式。
雲存儲系統除上述優點之外,在平台對接整合、業務流程梳理、視頻數據智能分析深度挖掘及成本方面都將面臨挑戰。承建大型系統、構建雲存儲的商業模式也亟待創新。受限於寬頻網路、web2.0技術、應用存儲技術、文件系統、P2P、數據壓縮、CDN技術、虛擬化技術等的發展,未來雲存儲還有很長的路要走。
以上是小編為大家分享的關於大數據時代下的三種存儲架構的相關內容,更多信息可以關注環球青藤分享更多干貨
⑥ 存儲器的主要功能是什麼為什麼要把存儲系統分成若干個不同層次
一、存儲器的主要功能:
1、隨機存取存儲器(RAM)。
2、只讀存儲器(ROM)。
3、快閃記憶體(Flash Memory)。
4、先進先出存儲器(FIFO)。
5、先進後出存儲器(FILO)。
二、存儲器分為若干個層次主要原因:
1、合理解決速度與成本的矛盾,以得到較高的性能價格比。
磁碟存儲器價格較便宜,可以把容量做得很大,但存取速度較慢,因此用作存取次數較少,且需存放大量程序、原始數據(許多程序和數據是暫時不參加運算的)和運行結果的外存儲器。
2、使用磁碟作為外存,不僅價格便宜,可以把存儲容量做得很大,而且在斷電時它所存放的信息也不丟失,可以長久保存,且復制、攜帶都很方便。
(6)分層存儲演算法擴展閱讀:
存儲器可做處理器,未來裝置有望更加輕薄短小:
有一群跨國研究團隊做了實驗,並真的成功運用存儲器執行一般電腦晶元的運算任務,倘若技術成熟,將有望使手機與電腦等裝置更加輕薄。
新加坡南洋理工大學、德國亞琛阿亨工業大學和歐洲最大的跨學科研究中心德國尤利希研究中心組成的研究團隊發現,在調整演演算法後,存儲器能如英特爾、高通等傳統處理器一般,進行運算處理。
目前市面上的裝置或電腦都是透過CPU從存儲器提取資訊進行運算處理,以二進制0跟1來實現指令,如字母A是用「01000001」這樣8位元的形式來處理或紀錄。而存儲器ReRAM透過不同電阻態代表0或1的數據狀態儲存資訊,其實還可實現更高基數的數據狀態記錄。
研究團隊就將ReRAM原型(prototype)調整為0、1、2的三進制,透過這樣的高基數運算系統可加速運算任務,並於存儲器就可進行邏輯運算。也節省了處理器與存儲器間數據傳輸的時間與功耗的消耗。
研究參與人之一、南洋理工大學資訊工程學系助理教授Chattopadhyay解釋,這就像一段很長的會話卻只用一個極小的翻譯器來轉換,是一段耗時且費力的過程,團隊所做的就是增加這個小型翻譯器的處理容量,使其能更有效的處理數據。