日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

YunTable 0.1版正式发布!!!(转载)

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YunTable 0.1版正式发布!!!(转载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

源地址:http://peopleyun.com/?p=731

?

經過兩個星期的努力(如果刨去學習C語言的時間),YunTable終于走完一個從無到有的歷程,今天,也就是2010年7月12日,YunTable正式對外發布其0.1版,在0.1版中YunTable雖然在特性,優化和內存管理這三方面還有很多的缺失,但是總體而言,已經實現了一個身為BigTable克隆的基本要求,也就是分布式查詢和管理,以及以column為核心的存儲。這是0.1版的下載鏈接(上次因為對Skydrive的存儲機制不熟,導致部分博友沒有第一時間拿到0.01版的源代碼,在這里向大家表示我的歉意)。

?

架構綜述

首先,請看下面是YunTable0.1版的架構圖:

圖1. YunTable架構(0.1版)

接下來,將按從上往下的順序給大家介紹YunTable的架構:

  • ?
  • Console:用于讓用戶輸入YunTable的命令,主要包括四種類型的命令(add,put,get和quit),并做一些簡單的解析。
  • Master:主要接收來自Console的請求,并將這個請求轉發給相應的Region。
  • Region:其作用主要是處理Master的請求,并存儲和管理大量的數據,其主要包括多個store,而存儲數據的目錄名為”datastore“。Region也就是BigTable論文中所提到的Tablet的服務器。
  • Store:每個Store對應一個相應的column family,系統在初始化的時候,會為默認的column_family(default_cf)創建一個store,store存儲的形式為datastore下的一個目錄,目錄名為其所對應的column_family,并主要包括四類文件:Memstore,YFile,YFile_data和WAL。
  • Memstore:其是緩存在內存的數據文件,主要存儲最新更新和添加的數據,每隔一段時間,在Memstore上緩存的數據都將會flush到YFile和YFile_data這兩個文件中,默認時間間隔應該為60分鐘,但0.1版為了測試方便,所以把設定的時間間隔暫定為10秒鐘。
  • YFile:其是持久化的文件,主要用于存儲數據的Index,系統會根據從YFile中得到的Index來訪問用于存儲數據的YFile_data文件中的相應部分,而且由于其體積比較小,所以會在系統運行的時候被載入至內存中。
  • YFile_data:這就是真正存儲數據的文件,由于其體積比較大,所以不大會被存入內存。YFile這個兩個文件參考了HBase的HFile格式和Google的SSTable格式,并做了相應的簡化。
  • WAL:全稱為“Write-Ahead Log”,用于暫存那些數據更新的請求,以避免當Memstore被意外關閉時所造成的數據丟失,當Memstore完成對數據的寫入時,WAL也會清空已經寫入的請求。
  • ?

    ?

    一些限定

    為了使YunTable在合理的時間內達到其0.1版,我在一些方面做了相應的范圍縮小,所以YunTable0.1版有下面一些限定:

  • ?
  • column_name和column_family_name的大小都被限制在16字節之內,如果輸入column_name或者column_family_name的大小超過16字節,系統會將多余的字節自動刪去。同時假設在輸入的時候,如果不為這個column設定相應的column_family,系統會認定其使用系統默認的column family,也就是default_cf。
  • 在分布式方面,為了縮小開發范圍,采用了偽分布式的方式,也就是將Master和Region綁定在一起,并且只有一個初始Region可供選擇。
  • 在查詢方面,暫不支持基于column的查詢,但是支持基于row key的查詢,具體可以看下面使用教程中的”Get“命令。
  • 在內存管理方面和性能優化方面,由于這兩方面在短期內并不關鍵,而且”過早的優化“也不是業界所推崇的,所以在0.1版中,沒有在這兩方面發力。
  • ?

    ?

    使用教程

    首先,使用make來編譯生成執行文件YunTable,可通過“./yuntable”來啟動YunTable,并進入YunTable的Console,也可使用make clean來清空之前生成的數據庫文件。

    接下來,將介紹YunTable Console所支持四種命令:

  • ?
  • add:這個命令,是為了創建新的Column Family存在的,格式是“add column_family:column_family_name”,在這里”column family”是關鍵詞,不可更改,而“column_family_name”則是等待用戶輸入的占位符,如果輸入的Column Family已經存在的了,Console會顯示相應的錯誤信息。例子:add column_family:address 。
  • put:主要是用于添加數據,其格式是”put? row:row_key column_name:column_name_value column_family_name.column_name:column_name_value“,在這里”row”是關鍵詞,在其冒號后輸入相應的row_key,比如在后面例子里面提到的”me“,在row之后那些,都不是關鍵字,只要按照那些占位符輸入相應參數就可以,具體也可以參看后面的例子,但要注意,如果這個column不屬于系統默認的column family,那么請在column family和column之間加入用于分割的“.”,例子:put row:me name:ike sex:male address.homeaddress:sh 。
  • get:可以通過這個命令來獲取數據,主要有兩個選擇:第一個是“get all”,這主要是列出數據庫中所有的數據,并安排row key大小的順序(字典順序)排列,但不會對輸出的數據進行過濾。另一個是“get row:row_key”,通過這個命令會獲得這個row的數據,并且會對其輸出的數據進行過濾,也就說,同一row同一column只會顯示最新的一個值,例子:get row:me。
  • quit:這個命令最簡單的,沒有附加的命令,只有在console中輸入“quit”就能退出YunTable Console。
  • ?

    ?

    還有,如果大家第一次使用YunTable的話,可以參考下面附錄里面的兩個Test Case,特別推薦Test Case1,也就是短的那一個。

    ?

    今后的安排

    關于YunTable的未來,首先,我將會在《剖析云計算》一書的實踐篇中,對YunTable的實現和其背后的理論進行詳細的講解。其次,關于YunTable未來的發展,我還沒有明確的規劃,所以如果大家有興趣在今后參與YunTable開發的話,可以直接在使用和分析YunTable之后將自己的想法發到我的郵箱ikewu83@gmail.com,等我有空了之后,大家可以一起來商量商量,同時也可以直接動手改代碼,來對YunTable進行更新和添加。

    ?

    附錄:

    下面是兩個YunTable的Test Case,一長一短,如果大家有興趣的話,可以試一下。

    Test Case1(短)?
    make?
    make clean?
    ./yuntable?
    1. add column_family:address?
    2. put row:me name:ike sex:male address.homeaddress:sh?
    3. get all?
    4. quit

    Test Case 2(長)?
    1) begin part?
    make?
    make clean?
    ./yuntable?
    1. get all

    2) add part?
    1. add column_family:address?
    *2. add column_family:address?
    3.? add? column_family:address2

    3) put part?
    1. put row:me name:ike sex:male address.homeaddress:sh?
    2. put row:m22 name:zhu sex:male address.homeaddress:sh address2.workaddress:bj?
    3. put row:m1 name:wu sex:male address.homeaddress:sh?
    *4. put row:m3 name:hua sex:male address3.playaddress:sh?
    5. put row:me name:wu sex:female address.homeaddress:bj

    4) test log part?
    1. quit?
    ./yuntable

    5) get part?
    1. get all?
    2. get row:me?
    *3. get row:wrong?
    4. quit

    *開頭的命令,應該返回相應的錯誤信息。

    ?

    轉載于:https://www.cnblogs.com/licheng/archive/2010/09/09/1821907.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的YunTable 0.1版正式发布!!!(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。