[Couchbase] Couchbase 介紹 - Server - 1

因為工作上的需要, 一直在研究NoSQL - Document類型的資料庫

本來最常使用的是MongoDB

但是我一直覺的他的UI實在相當的不friendly

啟動服務或者是做sharding or replica, 都有一定的麻煩

雖然提供很多api, 可是常常總覺的都些地方不是很方便

而因為以前學校研究習慣, 常常會去找尋跟評比我要做的東西的其他資源

所以又花了不少時間去找尋其他NoSQL資料庫

也測試過Apache cassandra, 不過太慢, 不是我要的

CouchDB, 嗯以web為主體的NoSQL, 我也不太需要...

後來發現, 疑?有一個叫做Couchbase的看起來好像很強很厲害, 之前很紅的Draw something也有在用, 那就乾脆來試試看吧

PS: NoSQL其實有一個比較完整的網站: http://nosql-database.org/


官網: http://www.couchbase.com/

我一開始測試的時候2.0還沒出來, 不過依目前最新版本已經是Couchbase v2.0

簡單講一下我個人體會的Couchbase, 我完全是自己google跟找資料或是去他們論壇問問題

沒有上過他們的任何課程所以底下可能有誤請多原諒

Couchbase是由Membase發展過來的NoSQL database, 並且是從C & C++ & Erlang所組成的Server

他比別人強大的幾個我個人觀點是

  1. 簡易的安裝 
  2. Server的穩定 
  3. 簡易的UI(相當重要) 
  4. 利用Javascript 和 JSON格式 和 Map&Reduce 來達到很多MySql的語法功能 
  5. 簡易的sharding 和 replication, 這點大概是很多企業都很需要的, 而且他要做到這個真的是相當相當的容易(對比大多數DB備份都相當的麻煩)
  6. 支援command指令(CLI), 因為Couchbase原生自Membase, 他背後有滿大一部份都可以靠command完成, 但在這麼完整的UI界面, 需要指令的部份實在不多

Couchbase source download page: http://www.couchbase.com/download


我基本上都是在Linux下使用couchbase, 所以知道Linux下安裝軟體有多麻煩的人, 應該會很感動他的容易安裝跟一個具有web界面的NoSql server, 不懂的人幾乎可以一直按下一步就完成了...

當然安裝上我也曾經碰到些許問題, 不過我個人覺的還是算很容易了, 這邊要稍微解釋一下, 如果只是安裝Couchbase, 只是有基本的Server服務, 但是如果要透過API去控制, 例如C&C++, PHP...etc 都是需要另外安裝library的, 首先講Server怎麼裝起來

Install

  1. Download: 這邊我安裝過在Ubuntu 12 & CentOS 5上, 所以Ubuntu & Red Hat的版本都試過, 用deb or rpm都算好裝, 不過目前還沒有試過從source安裝

  2. Enterprise Edition跟Community Edition目前我碰到的差異是, Enterprise通常是穩定版, 實驗版都會在Community, 像之前2.0還沒出來時, Community會是v2.0-beta, 而Enterprise是v1.8穩定版

    另外一個差異是License, Enterprise是Apache License, Community則是有限制
    這裡有Couchbase License的完整內容: Couchbase License Detail

  3. 安裝其實很容易, 如果是Ubuntu系列
    dpkg -i couchbase-server-enterprise_x86_2.0.0.deb
    

    or Rat Hat系列
    rpm -ivh couchbase-server-enterprise_x86_2.0.0.rpm
    

    裝完之後, 他理應會自動啟動Erlang Server服務, 接下來可在http://localhost:8091開始使用Couchbase的服務, 這邊要提醒一下, 安裝完畢他會提醒你一段話
    Please note that you have to update your firewall configuration to allow connections to the following ports: 11211, 11210, 11209, 4369, 8091 and from 21100 to 21299
    
    也就是記得要把一些port開啟, 不然會無法運作, 這些port涵蓋了couchbase server跟memcache還有erlang server所需要使用的port, 當然如果一般機器沒有刻意限制網路port, 就先不要理會這件事情, 除非後續有失敗狀況再來考慮
PS1: 因為Couchbase會安裝Erlang跟Memcache服務, 所以最好在乾淨一點的機器上安裝, 避免起奇怪的衝突, 我之前有遇過起衝突, Couchbase關掉重新啟動都還是無法正常運作, 就算反安裝重裝或是砍掉整個Couchbase目錄重裝都沒成功(失敗的log不明顯錯誤是哪邊造成的), 最後是用ps找出所有的Erlang跟Couchbase相關的服務全部砍掉, 才成功重新安裝成功

PS2: 如果Couchbase沒有成功啟動(也就是手動安裝或者是不知為啥沒有起來), 可以試著打下列指令
service couchbase-server start

Setup


進入http://localhost:8091開始設定新的Couchbase NoSQL服務


1. CONFIGURE SERVER


先設定NoSQL的data要放置在哪邊, 注意, 路徑資料夾的owner要是couchbase才行, 不然會出現

Attention - Could not set the storage path. It must be a directory writable by 'couchbase' user.

這邊我先使用預設路徑, 而底下還有另外兩選項, 假設你是第一次建立, 那你需要先決定要配給這台NoSQL server多少記憶體的使用量, 比較取決於你未來放的資料會有多大, 如果你今天是要作sharding的, 那就必須要選第二個, 加入某個已經建立好的Couchbase Server

2. SAMPLE BUCKETS


然後會詢問你要不要載入一些預設的data來試用看看, 這邊就看個人了, 不熟的可以先載入他的資料來學習

3. CREATE DEFAULT BUCKET


接下來他會要你建立一個default的bucket, 這個畫面也就是你之後要建立資料所要先建立的bucket, 不熟bucket的人可以先假設他是sql的database, 你要先建立database才可以開始放資料, 而最前面已經有設定最大的記憶體使用量, 但是一個Server可以有很多個bucket, 所以你需要決定你每個bucket要多少記憶體使用量, 這也是取決於你的application, 我之前測試30萬筆的簡易資料 - 也就是單一筆資料紀錄的內容不多可能幾個文字而已, 那大概設定100mb的量就已經綽綽有餘了, 但還是要看個人需求, 那會看到有Replicas的需求, 這個需要超過一台機器才有設定的價值, 等之後我在補充. Flush, 簡明扼要, 如果你要把這個bucket刪光又不想要刪除Bucket重新建立, 記得要把這個打勾, 才可以之後做快速的flush data, 當然, 這也是有危險的, 要是不小心把多年的data flush掉, 那會很哀傷~

4. NOTIFICATIONS


這邊詢問你要不要得知更新通知, 已經產品的註冊, 註冊的話, 如果Couchbase有重大活動或者是消息會寄信通知你, 目前我收到過他們新版本的通知還有一些他們開的教學課程詢問意見, 也碰過詢問是否有使用上的問題的信件, 是還沒收過垃圾信

5. CONFIGURE SERVER


最後一步設定登入Couchbase NoSQL Server的帳號密碼

6. 成功畫面

可以看到顯示出整個Cluster有多少記憶體, 使用了多少, Disk空間有多少, 你建立的Bucket正在存取多少, 現在Cluter總共有幾台機器, 有沒有機器有出狀況

下一篇再來簡單介紹幾個上面可操作項目, 以及如何使用API來跟Clouchbase溝通, 甚至是做一些原本SQL的指令, 有機會的話才會特別介紹CLI

留言

這個網誌中的熱門文章

[Linux] Linux下查詢硬體記憶體資訊 Memory Information

[Other] Chrome 重新整理所有開啟頁面

[Python] Simple Socket Server