自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Amazon SimpleDB——網(wǎng)絡(luò)數(shù)據(jù)存儲的新選擇

存儲 容災(zāi)備份
Amazon SimpleDB給那些使用基于云技術(shù)應(yīng)用軟件的公司提供了一個存儲簡單數(shù)據(jù)場所。對用戶來說,這個產(chǎn)品特別適用于快速查找資料的場合。

    【W(wǎng)atchStor獨家譯文】12月,Amazon發(fā)布了SimpleDB產(chǎn)品的測試版。SimpleDB是Amazon Web Services——也就是AWS——工具套裝的一部分。Amazon SimpleDB給那些使用基于云技術(shù)應(yīng)用軟件的公司提供了一個存儲簡單數(shù)據(jù)場所。對用戶來說,這個產(chǎn)品特別適用于快速查找資料的場合。

    該公司的這項工作已經(jīng)開始了一段時間了;事實上早在一年前Amazon就推出了這個計劃的早期版本,一些用戶已經(jīng)從那個時候開始使用該產(chǎn)品了。在那之后,Amazon又對SimpleDB做了許多調(diào)整改進(jìn)工作,很明顯這是Amazon在聽從客戶建議之后所做的努力。

    現(xiàn)在推出的這個測試版(任何人都可以使用)與客戶理想中的最終產(chǎn)品越來越接近。我現(xiàn)在已經(jīng)決定試用一下,因為我是Visual Studio的研發(fā)者,我所選擇的工具是C#Visual Studio庫(Amazon也為其他包括Java,Perl和PHP在內(nèi)的平臺提供了幾種官方庫)。

    使用

    SimpleDB采用了一種很獨特的存儲方法,使人們可以在云基礎(chǔ)的應(yīng)用軟件上存儲簡單數(shù)據(jù)。這種方法與電子表格程序類似,并且一定是非關(guān)聯(lián)性的。(這讓我想起了Google的BigTable。這個軟件能通過Google App Engine運用到一個叫DataStore的小型表格中去。)當(dāng)SimpleDB不能滿足你的要求時,Amazon還提供許多其它的數(shù)據(jù)庫。 比如說公司提供Amazon Simple Storage用于存儲文件。EC2(彈性計算云)是這個軟件的主要云平臺,在這個平臺上,你可以運行任何數(shù)據(jù)庫服務(wù)器,其中也包括了SQL服務(wù)器。這就意味著你并不是只能選擇SimpleDB。

    總覽

    SimpleDB(與Google的DataStore相類似)的主要宗旨就是閱讀速度快。雖然并非全部的網(wǎng)站都需要快速進(jìn)行資料檢索,但至少絕大部分的網(wǎng)站有這樣的需求,而且它們對資料檢索速度的要求遠(yuǎn)遠(yuǎn)高于對資料存儲的要求。Amazon的自有網(wǎng)站就是一個典型的例子。人們在Amazon的網(wǎng)上瀏覽書籍和其它產(chǎn)品,一定希望很快就能打開相應(yīng)的網(wǎng)頁。此時,除了記錄下你的瀏覽歷史之外,基本上沒有什么資料存儲工作。人們可不想苦苦等待這些網(wǎng)頁慢慢打開。但又比如說當(dāng)人們在Amazon的論壇上發(fā)帖時,***的帖子發(fā)布過程會有延遲——這段時間雖然很短,但大家還是可以發(fā)現(xiàn)。可顯然大家對這個現(xiàn)象表現(xiàn)出了相當(dāng)?shù)膶捜???偟膩碚f,對絕大部分人來說,讓他們滿意的應(yīng)該是可以快的閱讀速度以及相對來說可能慢一些的書寫速度。這些就是SimpleDB(與Google DataStore)提供的主要功能。

    盡管現(xiàn)在市場上大部分的數(shù)據(jù)庫都是關(guān)系型的(并且采用的是SQL語言),可以肯定的是SimpleDB一定是非關(guān)聯(lián)性的。用戶并不是在表格相同的條條框框里創(chuàng)建資料,而是創(chuàng)建一個稱為域的資料集用于存放資料項。每一個資料項能夠有多種“屬性”,每一個屬性都可以單獨命名。

    這些就是SimpleDB與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫大不相同的地方。SimpleDB提供的樣本文件就是很好的例子。假定你想創(chuàng)建一個域用于存儲產(chǎn)品信息。對你來說,一項產(chǎn)品有可能是一件衣服,這件衣服可能會有多種屬性,比如說顏色,尺寸等等。另一項產(chǎn)品可能又是一件與衣服完全不同的產(chǎn)品,比如說是一個汽車引擎。汽車引擎的屬性里不包括顏色與尺寸,但是卻會有其他內(nèi)容,比如說型號、生產(chǎn)年份等等。

    在一個關(guān)系型數(shù)據(jù)庫里,上文所說的那種情況有兩種解決辦法。一種就是創(chuàng)建兩個不同的表格,另一個就是創(chuàng)建一個表格,但這個表格里會含有對某些產(chǎn)品來說并不存在的屬性名稱。(例如對汽車引擎來說,尺寸這一欄將留空。)但是在SimpleDB里,尺寸這一條在汽車引擎項里并不存在,同樣對套衫這一項來說,也不會出現(xiàn)品牌和型號這類的條款。但是汽車引擎和套衫可以同時存儲在一個單獨的域里。

    你可以在同一個域里創(chuàng)建下述數(shù)據(jù):   

 l  Item1: Category=Clothes; SubCategory=Sweater; Name=Cathair Sweater; Color=Siamese, Size=Small, Medium, Large.

 l  1Category=Clothes; SubCategory=Sweater; Name=Cathair Sweater; Color=Siamese, Size=Small, Medium, Large.

 l  Item2: Category=Car Parts; SubCategory=Engine; Name=Turbos; Make=Audi; Model=S4; Year=2000,2001,2002.

 l  2Category=Car Parts; SubCategory=Engine; Name=Turbos; Make=Audi; Model=S4; Year=2000,2001,2002.

    要注意的是,兩項產(chǎn)品同時擁有屬性目錄,支目錄以及品牌這三項。但是其它的屬性卻是各自產(chǎn)品特有的。同時還要注意的是同一個屬性值可以同時存儲多個數(shù)值。對項1套衫來說,尺寸這項就有三個值,分別是:小,中和大。對項2引擎來說,生產(chǎn)年份同樣有三個值:2000,2001和2002。

    庫以及訪問方法

    我提到過我選擇了C#庫。這里我想說明一點:這些庫是Amazon自己編寫的,但并不是唯一可供選擇的庫。SimpleDB的界面訪問可以從下面兩種方法中任意選一個:一是作為網(wǎng)絡(luò)服務(wù)器(運用SOAP),另一個是REST(Representational State Transfer,代表性狀態(tài)傳輸)。C#庫包括了許多不同的類型和方法,這些類和方法都可以和SimpleDB互動。這些庫會自動以一種隱蔽的方式創(chuàng)建URL,同時將它們發(fā)送到網(wǎng)絡(luò)服務(wù)器,等待反饋。反饋將以下面的形式出現(xiàn):(順便提一句,如果你對REST非常感興趣,網(wǎng)上有很多關(guān)于Amazon在創(chuàng)建自身界面時是否打破了非官方REST條例的討論。這篇文章里就這個問題我不打算做更深入的討論。但是如果你們對這些信息有興趣的話,上網(wǎng)以SimpleDB REST為關(guān)鍵詞用google搜索一下就可以找到這類信息。)

    既然C#庫可以簡單地創(chuàng)建了REST請求,同時也閱讀了反饋,事實上這個時候就可以開始著手創(chuàng)建你自己的類型庫了。我想隨著時間的推移,我們可以看到更多更好的庫,因為Amazon現(xiàn)在創(chuàng)建的這個并不是十分的復(fù)雜。但既然這只是一個面向REST訪問的庫,所以我并不打算以這一個庫為標(biāo)準(zhǔn)對SimpleDB的產(chǎn)品進(jìn)行評判(我建議你們也別這樣做)。

    但是我的確有一個很關(guān)心的問題,那就是:所有的反饋都是以

       
   
    Height
    1
   

   
    Width
    2
   

   

   
    12345678-1234-1234-1234-123456789012
    0.0000012345
   

   

    這樣要回到雙整數(shù)將要浪費很多空間。雙整數(shù)只需要幾個字節(jié)就可以存儲下來,而這樣的反饋大小卻超過了400字節(jié)。如果你要做的是大量的數(shù)據(jù)修補工作,上述說的差異將會對結(jié)果造成巨大的影響。(這就意味著你將要確認(rèn)自己將會批量訪問數(shù)據(jù)而并非單獨訪問。多項數(shù)據(jù)資料可以僅出現(xiàn)一項反饋)

    體驗SimpleDB

    C#庫可能的確是有一些過于簡單,但它運行良好。我可以很容易地把資料輸入到SimpleDB服務(wù)器上。我運行編碼創(chuàng)建域,從域里添加和移除資料,同時還可以將這些資料在域里進(jìn)行排列。這些工作都進(jìn)行得十分順利。事實上這些就足夠了,這也是SimpleDB所運求的——簡潔。它是用于存儲資料的。至于判定到底哪些是你的網(wǎng)站需要上傳的資料,這可就是你自己的任務(wù)了。

    當(dāng)然利用C#庫也給我們出了一個有趣的思考題:在處理網(wǎng)絡(luò)相關(guān)問題的時候,C#通常意義上是一個基于服務(wù)器的語言。這就表示你可能需要將你的網(wǎng)站的主機建立在Amazon的EC2或者是你自己的網(wǎng)站上。這個網(wǎng)站一定要是一個ASP.NET站點,同時你將要創(chuàng)建C#代碼以達(dá)到和AmazonDB服務(wù)器互動的目的。接下來你的客戶將會瀏覽你的網(wǎng)站,他們根本不會知道在后臺你的站點正在Amazon的服務(wù)器上存儲資料。

    但是這種現(xiàn)象合理嗎?你建了一個自己的網(wǎng)站,但用的卻不是自己的數(shù)據(jù)。你必須將你自己的服務(wù)器連接到位于另一個網(wǎng)絡(luò)里的另一臺服務(wù)器上才能獲取數(shù)據(jù)。這樣有意義嗎?這個問題的答案取決于你們自己,我不能代替你們做出回答,但是這個問題擺在我們面前,沒有辦法忽略。

    對基于服務(wù)器代碼來說還有另一個選擇,那就是把你網(wǎng)站的主機設(shè)在EC2上。這樣結(jié)果會比上面的方法好一些。EC2支持Windows服務(wù)器,你可以創(chuàng)建ASP.NET站點。(如果你不想用ASP.NET的話,你也可以在EC2上使用其它平臺和語言。)雖然這個方法比上面的方法好一些,但是你的服務(wù)器依舊需要連接上SimpleDB來進(jìn)行資料處理。

    當(dāng)然,還有另一種可能性就是轉(zhuǎn)向網(wǎng)絡(luò)2.0版,創(chuàng)建一個可以生成包涵JavaScript代碼網(wǎng)頁的網(wǎng)站;這些網(wǎng)頁可以利用AJAX連接上正確的網(wǎng)站。但這樣做的話,將會帶來很大的安全風(fēng)險,因為你不會希望你的客戶的瀏覽器可以直接從你的SimpleDB域上讀寫資料吧。此外,在默認(rèn)情況下瀏覽器甚至不允許JavaScript利用AJAX訪問那些擁有與主機不同URL域的網(wǎng)站。

    還有另一種選擇就是采用一種混合的辦法,你可以讓你的服務(wù)器先向SimpleDB服務(wù)器提出請求,然后再返回。

    如果你打算利用SimpleDB創(chuàng)建一個站點的話,上述問題都十分重要,需要好好思考。通常情況下,我認(rèn)識大家一般會將他們的基于服務(wù)器的代碼放在EC2這個主機上,顯然Amazon也是這樣想的。如果你真的這樣做的話,在考慮安全問題的同時,你還要就你應(yīng)該如何獲得這些數(shù)據(jù)以及利用瀏覽器可以干什么仔細(xì)權(quán)衡利弊。

    結(jié)論:一個特別的方法

    總的來說,SimpleDB對那些不需要進(jìn)行關(guān)聯(lián)的資料來說是一個非常好的方法。但這種方法是不是適用于每一種場合呢?答案是不。最普遍的例子就是,已經(jīng)完全規(guī)范化的客戶數(shù)據(jù)庫、產(chǎn)品數(shù)據(jù)庫和銷售數(shù)據(jù)庫將非常不適應(yīng)這樣的情況,除非你先從客戶數(shù)據(jù)庫中找到每一個客戶的ID,再從銷售域中找到每一個客戶所購買產(chǎn)品的ID,然后再去產(chǎn)品域中找到那個客戶所購買的產(chǎn)品列表,***人工將它們關(guān)聯(lián)起來。這個工作量極大,但通過一個關(guān)系型數(shù)據(jù)庫,一個簡單的兩線或者三級SQL連接就可以輕松把這個工作完成。

    不管怎么樣,如果你只是需要能夠快速查找資料,并不需要把這些資料關(guān)聯(lián)起來的話(比如說讓產(chǎn)品表單符合一些既定的標(biāo)準(zhǔn)),SimpleDB將是你最好的選擇?!網(wǎng)atchStor獨家譯稿,未經(jīng)許可禁止轉(zhuǎn)載。合作伙伴請注明原作者及出處為WatchStor.com】

責(zé)任編輯:劉強 來源: WatchStor編譯
相關(guān)推薦

2010-06-23 09:41:17

Amazon Simp

2016-09-09 00:32:57

數(shù)據(jù)中心軟件定義存儲

2009-08-27 10:45:03

ibmdw云計算

2012-02-08 10:31:04

FCoE

2009-08-27 10:51:15

ibmdw云計算

2020-01-08 10:30:24

網(wǎng)絡(luò)硬盤百度鼠標(biāo)

2017-11-29 13:47:43

AWSAmazon Sume

2009-10-29 11:01:52

Amazon RDSMySQL關(guān)系數(shù)據(jù)庫

2016-12-02 16:35:34

安卓版Office

2012-09-26 10:42:11

大數(shù)據(jù)

2013-07-24 10:26:40

華為數(shù)據(jù)存儲華為存儲華為

2012-03-02 16:16:21

Beca博科網(wǎng)絡(luò)

2020-05-14 09:42:15

數(shù)據(jù)操縱網(wǎng)絡(luò)阻擊數(shù)據(jù)泄露

2015-08-05 13:25:04

網(wǎng)絡(luò)運維

2011-03-08 09:58:21

海量數(shù)據(jù)

2012-05-22 09:26:02

虛擬化vmwarevSphere5

2017-06-12 16:38:20

數(shù)據(jù)中心云計算網(wǎng)絡(luò)

2021-08-05 13:55:05

網(wǎng)絡(luò)保護網(wǎng)絡(luò)安全數(shù)據(jù)保護

2019-09-26 10:25:32

AI數(shù)據(jù)存儲

2012-07-20 09:47:29

數(shù)據(jù)中心中網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)架構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號