gibson.yang 的部落格

Tokyo Tyrant - part 1. (備份/還原)

 Tokyo Tyrant 是一個為底層資料庫 (Tokyo Cabinet) 所提供的高並發網路接口。

目前在許多網路相關的場景都可以看到它被廣泛地應用。

本文將簡介 Tokyo Tyrant 備份與還原的功能。


Backup (備份)


figure 1.

接下來的例子示範了如何備份一個 ttserver,與如何從先前備份的資料庫來還原 ttserver,如圖一所示。

 - 首先,啟動一個 ttserver
ttserver /tmp/ex1.tch

 - 開啟另外一個終端,並寫入一些資料
tcrmgr put localhost "foo" "bar"

 - 檢查資料是否寫入成功
tcrmgr get localhost "foo"

 - 備份資料庫
tcrmgr copy localhost /tmp/backup.tch

 - 接著模擬 ttserver crash,在第一個終端按下ctrl-c

 - 模擬資料庫檔案毀壞

rm /tmp/ex1.tch

 - 從備份資料庫檔案還原 ttserver,只需要拷貝資料庫檔案並重啟 ttserver
cp /tmp/backup.tch /tmp/ex1.tch
ttserver /tmp/ex1.tch

 - 檢查資料是否已還原
tcrmgr get localhost "foo"


定期地執行備份動作可以避免資料遺失(每天一次或數分鐘一次,取決於寫入操作有多頻繁)。但是我們仍然會失去介於上次備份與下次備份之間的所有修改操作。Tokyo Tyrant 也提供了另外的方法來還原這些修改操作。

Restore (還原)


figure 2.

接下來的例子示範了如何從 update log 來還原對資料庫的修改動作,如圖二所示。

 - 建立一個資料夾以存放 update log
mkdir /tmp/ulog

 - 啟動一個 ttserver 並開啟 update log 功能
ttserver -ulog /tmp/ulog /tmp/ex2.tch

 - 開啟另外一個終端,並寫入一些資料
tcrmgr put localhost "foo2" "bar2"

 - 檢查資料是否寫入成功
tcrmgr get localhost "foo2"

 - 接著模擬 ttserver crash,在第一個終端按下ctrl-c

 - 模擬資料庫檔案毀壞
rm /tmp/ex2.tch

 - 除了從備份資料庫檔案還原,我們還可以藉由重新執行紀錄在 update log 中的修改操作來還原資料庫

 - 如果需要的話,可以先將 update log 備份到別處
mv /tmp/ulog /tmp/ulog-back

 - 重新啟動 ttserver
ttserver /tmp/ex2.tch

 - 從 update log 還原
tcrmgr restore localhost /tmp/ulog-back

 - 檢查資料是否已還原
tcrmgr get localhost "foo2"

Diaspora - the privacy aware, personally controlled, do-it-all distributed open source social network

這個最近宣佈的 project 被報導在 New York Times 5/12 的一篇文章 - "Four Nerds and a Cry to Arms Against Facebook" (四個宅男發起的反Facebook計畫)。文章的第一句說 "How angry is the world at Facebook for devouring every morsel of personal information we are willing to feed it?"
("對於Facebook一點一滴地吞噬著每位使用者自願奉上的個人隱私,人們到底有多憤怒?")。

現今存在的社交網路服務如Facebook、Twitter、Orkut等,幾乎都是中心化的社交網路。我們以個人資訊來註冊為使用者,將訊息與資料交給這些服務商的主機才能和朋友們溝通,我們交出去的所有東西都是個人隱私,我們應該對於所張貼的資訊更加小心。

幾個月前,四個就讀於紐約大學的書呆子(Mr. Salzberg and Mr. Grippi are Raphael Sofaer, 19, and Ilya Zhitomirskiy, 20),決定開始打造一個全新的社交網路,不需強迫任何人繳交個人隱私以換取使用網站的權限。他們將此計畫命名為Diaspora, 準備將軟體免費發布,並且公開提供所有程式碼讓其他開發者可以自由使用。

Diaspora計畫的發想來自於他們聽了一位哥倫比亞大學法律教授的演講。當越來越多的日常生活與身份認證數位化的同時,將所有個人資訊交給提供服務的公司,並放在"雲端"的方便性,正訓練著我們越來越不痛不癢地犧牲個人隱私。使用中心化的社交網路服務意味著被"免費監視",為什麼沒有其他更好的選擇?

他們認為中心化的社交網路(如Facebook)是不需要的。
"當你傳送資料出去時,就等於永遠放棄了這些資料。"
"在現實生活中,我們可以直接跟對方對話,不需要將訊息傳給一個中繼站再由它轉交。"
"我們的真實生活不需要一個社交中心管理員,我們的虛擬生活也不需要。"  — Diaspora 團隊

此計畫可描述為一個完全分散式的網路,每個人都可以安裝自己的"種子" (一個伺服器,包含了所有使用者想要分享的東西,如照片,影片等等),這個種子由使用者完全掌控,如此一來使用者才能在分享之餘仍然保有資料的掌控權。

撰寫程式估計需要三到四個月,而這段期間他們每個人各需要幾千塊美金來過生活。他們給自己39天的時間在Kickstarter募款網站來募集一萬美金。計畫宣佈於4/24,他們在12天內就達到了目標一萬美金,而且資金仍持續增加,到了今天(5/24)已經超過了十八萬美金。

對於將腦海中的新概念付諸實現來說,他們已經邁出成功的第一步。是否能取代Facebook成為下一個最大的社交網路,現在還言之過早,不過從成熟的時機點與數量驚人的支持者來看,可能真的有機會。