Ricky Wu 的部落格

Intro to MongoDB

Ricky Wu 的照片

NoSQL」是不同於關聯式資料庫的一類資料庫,他不具備SQL語法的介面來進行資料的查詢或是處理。NoSQL資料庫可分為:「Column-orientedKey-value pairs」與「Document-oriented」等三大範疇,以下介紹的MongoDB則是屬於Document-oriented的資料庫系統。

Document-oriented資料庫中,一筆資料不再是以固定大小的方式處存於表格裡,取而代之的是無論多少欄位或是不同大小的欄位都能夠被放置入資料庫中。每個欄位更可細分為更小的資料片段,形成巢狀的資料結構。以下為一段PHP描述person物件定義的程式碼:

$person = array(

    "name" => "Cesar Rodas",
    "country" => "Paraguay",
    "languages" => array("Spanish", "English", "Guarani"),
);

MongoDB是一套由C++所編寫出擁有高效能且具高延展性的開放原始碼文件導向資料庫系統。其最主要的目標是將「Key-Value stores」及傳統RDBMS系統的優點結合起來,因此他具有「Key-Value stores」快速且具高度擴充性的儲存功能,也具備RDBMS所提供豐富的查詢方式及功能強大的查詢功能。在實作上,MongoDB具備以下幾點有趣的特性:

  • It uses JSON, instead of XML
  • It is fast, as it is written in C++
  • Supports index definitions
  • Provides an easy to use query interface, very similar to some database abstraction layers
  • Supports operations with sub-documents
  • Provides a native PHP extension
  • Supports auto-sharding
  • Supports map-reduce for data transformation

安裝及配置上,MongoDB可支援如PHPRubyPythonJAVAC++多種主流程式語言,因此在使用上相對的方便而簡單。在MongoDB官方網站的下載頁面裡,有提供適用於各種作業系統平台已編譯完成的可執行檔包裝,也一併提供使用者對應版本的MongoDB原始碼。

Linux上安裝MongoDB相當的簡單,首先在http://www.mongodb.org/display/DOCS/Downloads下載頁面裡下載對應平台的壓縮檔,解壓縮後執行Mongod,以預設模式啟動MongoDB

mkdir -p /data/db tar -xvzf PACKAGE   ./mongodb-xxxxxxx/bin/mongod

./mongodb-xxxxxxx/bin/mongo  

執行後Database Daemon便開始監聽主機的27017埠,資料預設儲存路徑為 /data/dbWindows底下為c:\data\db),再來便可以執行Mongo來進入MongoDB的命令列下,操作資料庫。

Ref.

Developing scalable PHP applications using MongoDB - PHP Classes blog

Opera unite: Your Browser is Now a Web Server

Ricky Wu 的照片

隨著 Opera 10.10 版本的正式發表,新的 Opera Unite 技術模糊了server與 client 之間的界線,透過簡單幾個步驟的設定,便可讓您的網頁瀏覽器變身為專屬於您的網頁伺服器,透過 Opera Unite 您不但可以擁有屬於自己的網站空間,其他網路使用者更能經由您在 Opera Unit 註冊的個人網址,共同分享您所提供的文件影片照片等資訊,當然前提是您必須開啟著 Opera Unit,才能在您的個人電腦上實現這些服務。

安裝 Opera Unite 後的個人電腦,同時存在具有用戶端及伺服器端的特性,簡易的設定使您在架設個人網頁伺服器時,不需困擾於傳統伺服器架設方式,不僅須經過各種繁複的設定步驟,網路上的設定更令使用者卻步,例如防火牆內的 port forwarding 等…,opera unite 讓您分享資料就如同打開瀏覽器瀏覽網路一樣的簡單方便,對於網路開發者而言,Opera Unit 跨平台的特性,以及基於各開放式網路標準構成的架構,更能夠大幅縮減網路服務開發的複雜度。

目前 Opera Unit 所提供的服務有檔案分享、網路伺服器、媒體播放器、相片分享、The lounge 以及電冰箱留言板等服務,他所提供的檔案分享服務打破了傳統檔案分享模式,讓您能夠不受檔案大小時效等限制,輕鬆的與其他人分享您提供的檔案。媒體播放器則實現了個人數位媒體串流服務的功能,讓您在各地,只要手邊有網路,就可透過瀏覽器即時撥放您家中的影音檔案。The lounge以及電冰箱留言板,則提供了一個簡易安全的互動平台,讓您能跟您的家人朋友在私密且安全的環境下,作互動留言。

在未來的發展上,Opera Unit 提供了一個開放式的平台,打破了舊有的主從是電腦架構,簡易的使用操作或許能夠提供目前網路使用者另一種社群模式,甚至未來在網路的發展下能夠取代掉目前中心化的社群網路,對於個人的資訊以及資料能夠完全性的在使用者操作下,有效的有限分享於他人。對於開發者而言,低門檻的伺服器需求,更能夠加速網路服務的開發,例如許多現存的社群網路遊戲(如開心農場),能否如同過去的許多遊戲(如Ogame)在開放式的架構下,有更多元的發展。

參考:

unite.opera.com

Read White Web: Your Browser is Now a Web Server: Opera Includes Opera Unite in Opera 10.10

Drupal Introduction

Ricky Wu 的照片

Drupal 是一套由 PHP 所撰寫之優秀的網站內容管理系統。簡單化的安裝方式能夠快速的建立基礎的網站環境,以多樣化的模板套用模式,簡易的將網站轉換為客製化的風格。

Drupal 具有以下各項優點 :

  • 簡易的安裝及使用方式 – 使用者手冊提供了清楚的安裝及使用步驟宮使用者參考
  • 具有多項特色,包含 Search Engine Friendly URLs(SEF), categories, search function 等
  • 可擴充性–透過各項延伸模組來強化網站的功能性
  • 可塑性 – 不只能夠透過 Drupal 建立網站,更能簡易的轉換為論壇、部落格、wiki 等各種形式的網站
  • 免費使用–開放式原始碼,讓您能夠免費使用 Drupal 架構網站,您更能自行修改內部原始碼讓網站功能更符合您的需求
  • 龐大的使用者及使用群組– 來自世界各地的使用者,能夠協助您更快的為您的問題尋求正確的解答

多樣化的延伸模組,提供了 Drupal 強大的擴充能力,以簡單的步驟將需求模組放置入對應的資料夾結構下,透過網站管理者模式去開啟模組的功能並對模組依照客戶的需求做設定,便能建立起知識庫管理、網站發佈以及社群交流等具有不同功能的網站。

  • Content management – 使用者能夠透過簡單的 browser-based 介面去發佈個人的文章、部落格、照片、影像等。管理者也能夠簡單的管理網站風格
  • Drupal 特有的分類管理系統,能夠讓您以階層式的架構、交互式的內容指標去管理多種分類的內容類型。更可透過管理者定義的角色分類來管控網站內容的存取權限
  • Weblog – Drupal 能夠將單一網站透過設定,提供單一或多使用者所使用的 Weblog。 Blogger API,提供個別使用者 RSS 新聞發布功能,使用者發布的個人文章可存在使用者特定的個別資料夾下
  • Discussion-based community – Drupal 能夠成功的用來做為論壇網站的架設平台。每個網頁內容都有獨立的回應版塊,內建的分享功能,更能將每個網頁內容分享至您常用的社群平台上做分享討論
  • Collaboration – Drupal 提供的專案管理,適用於各式開放原始碼的專案開發。他的 wiki-like collaborative book 模組包含了版本控制,讓開發小組簡單的創建、更新管理專案文件

Drupal 是一種被應用於架設複雜網站的工具,它功能強大且較適用於高階開發人員,它需要足夠的專業知識與經驗去使用管理 Drupal。是一種較不適合於初階使用者的網站內容管理系統。

參考文件:

Drupal - Official website

Server and Desktop Virtualization

Ricky Wu 的照片

虛擬化是一種電腦硬體及軟體資源應用的抽象化概念。它隱藏了電腦資源的實體特性,令使用者或是執行其上的應用程式無法察覺,就形同於執行於獨立的系統上。它可以將單獨的電腦資源同時運行多個作業系統,也可將多個電腦資源聯結起來,成為一個獨立的環境提供作業系統使用。
虛擬化技術分別應用在不同的概念上,包含:

  • Server Virtualization
  • Desktop Virtualization
  • Network Virtualization
  • Storage Virtualization
  • Application Infrastructure Virtualization

在這篇文章中,我們將針對伺服器虛擬化以及桌面虛擬化技術做討論。

伺服器與桌面虛擬化技術,單從字面上去看而沒有深入了解時,可能會很容易混淆兩者之間的差異,伺服器虛擬化是一種將一台實體伺服器,經過分割管理成多台較小型的虛擬伺服器的技術。大多數的網頁伺服器,都是應用伺服器虛擬化技術在實體伺服器上所建置的虛擬機器,取代原本硬體的限制,伺服器虛擬化技術能夠讓多個伺服器系統共存於一台實體機器上。伺服器虛擬化技術提供了以下幾點優點:

  • 提高硬體使用率 – 減少硬體及能源的消耗,減低管理的成本
  • 安全性 – 虛擬機可以隨時以映像檔的方式保存,一旦系統出現問題,可以馬上回復
  • 開發 – 安裝及設定都可以簡單的程序重覆執行

桌面虛擬化,有時也可以稱為連線端虛擬化技術,它的主要觀念在於使用者可以使用由共用的硬體伺服器提供出來的虛擬桌面環境。維基百科上對桌面虛擬化的解釋為,桌面虛擬化是一種就傳統使用者端運算輕量化所衍生出的伺服器端運算模型,它的設計提供了管理者在中央伺服器上管理每個使用者桌面虛擬機的能力,以及提供了每個使用者完整的個人電腦使用感受。
桌面虛擬化技術提供了獨立的作業環境且無須個別的硬體環境或是作業系統甚至於電腦軟體,而是透過中央的伺服器系統提供了所有的功能,除此之外,他更包含有以下各項優點:

  • 使用者可以任意的由各處登入屬於自己的桌面環境,而無須安裝個別的作業系統
  • 使用者登入登出時,可隨時更新桌面環境的現有的作業狀態,隨時備份現有桌面環境
  • 虛擬機器的狀態快照,能夠保持桌面環境的穩定性
  • 個人化設定與加密,使個別使用者的資料與工作狀態保有安全性

參考文件:
Wikipedia – Desktop virtualization
Wikipedia – Hardware virtualization
WEBOPEDIA – The Difference Between Server and Client Virtualization
InfoQ – An Introduction to Virtualization