顯示具有 sqlite 標籤的文章。 顯示所有文章
顯示具有 sqlite 標籤的文章。 顯示所有文章

10/03/2006

why SQLite and how SQLite

為什麼我們需要 SQLite ?
因為不是每個人都需要 MySQL 的
也不是每個人都會設定 MySQL 的(權限跟安全性設定,cluster)
當你的站只有一個小站(非無名小站 =_= )
Server 只有一台,DB Server,Web Server,Application Server 全部都包在一起
但是你卻使用 MySQL 來裝
我只能說在我的眼中,這樣機器應用配置不佳

SQLite 擁有
  1. 只能 command line 直接使用(這在某方面是優點)
  2. 檔案當作 backend (方便備份)
  3. 高速的效能(在簡單的DB ,簡單的SQL下,SQLite的速度相當好)
  4. 完全沒有權限設定的麻煩
等等的優點
簡直是架設一個小站的最佳選擇

那我們怎麼在 Ruby on Rails 下面使用 SQLite

1. 首先安裝 SQLite ,安裝完後打入 sqlite or sqlite3 檢查一下是否安裝成功
這裡要先講一下 SQLite依照版本分成 非SQLite3(SQLite1 or SQLite2) 跟 SQLite3
兩者使用的 ruby db interface 不同

2. 再來請使用 gem 安裝 SQLite 的 interface
如果你使用非 SQLite3 ,請打
gem i sqlite-ruby
但是如果你使用 SQLite3,請打
gem i sqlite3-ruby
到此安裝已經安裝完成,要進行設定了


3. 在 Ruby on Rails 資料夾底下的 config/database.yml 寫入SQLite 的相關設定
一樣分成 非 SQLite 3 以及 SQlite3 的版本

非SQLite3 的版本
production:
__adapter: sqlite3
__database: db/db檔名

SQLite3 的版本
production:
__adapter: sqlite3
__database: db/db檔名

在SQLite 裡面,一個DB 就是一個檔案
所以你要選擇DB
不是像 mysql 打入 use db_name ;
而是直接用其他DB的檔案即可
如此你就可以盡情使用SQLite
但是又要問到 怎麼進行管理呢?
雖然SQLite 擁有 SQLite Database Browser 這樣的工具
但是真正好用的工具在我們身旁

就是 Ruby on Rails 的 activerecord

不相信嗎?請在database.yml設定好之後
進入 Ruby on Rails console
照著這篇的指引
我們已經可以使用 SQlite DBA
如果想看資料的話
Model.find_all 不就解決了嗎 XD

9/27/2006

SQLite import CSV File

今天有一個 Excel File ,先轉成 CSV 檔案格式
發現到這個 CSV File 是用 ; 間隔
但是發現到
sqlite> .show
echo: off
explain: off
headers: off
mode: list
nullvalue: ""
output: stdout
separator: "|"
width:
他的預設 separator 是 |
所以我們要先修改 separator
進入sqlite3
create table test ( a , b , c , d , e );
.separator ;
.import 檔名.csv test

之後就成功 import

9/12/2006

SQLite GUI : SQLite Database Browser

網址在此
看起來是市面上最好的 SQLite DB Browser 了
該有的都有,也支援 OSX ,也是 Open Source
不過 create 實在麻煩,要一個 column 一個 column 的加
不過有更好的 SQLite Browser 嗎?

使用 migrate 將 MySQL db porting 到 sqlite

Migrate 就是Rails 提供的工具
簡單的說法就是使用 Ruby 寫 SQL code
他有很多用法
不過到最後我還是直接用 phpMyAdmin 去寫
因為他無法做到一些 DB Schema 的微調
(像是 enum 之類的東西)
至於 version 的部份,也可以用 svn 去做
所以感覺不是特別實用

但是他有一個功能很偉大
就是他可以做到 跨平台的 DB Schema porting
VIVA ,Rails 萬歲

我們來使用看看吧
操作方式是從 MySQL porting 到 SQLite
(記得將 config database.yml 設定正確)

1. 在MySQL機器上面的 Rails 目錄下
rake db_schema_dump
他會將所有的schema 轉換成 db/schema.rb

2. 在另外一個SQLite Rails 的目錄下
將剛剛export出來的 schema.rb 放入 db/ 底下
rake db_schema_import

他會將 schema.rb 裡面的 migrate code 轉換成 SQLite 的 sql
然後 import 進去 SQLite 的資料庫


如此就可以很簡單的做到 跨 DB 的 Schema import

8/26/2006

sqlite : 雞刀還是牛刀?

殺雞焉用牛刀是 sqlite 最常用的推銷詞
這告訴我們 sqlite 的特質
當你只需要簡單的 DB 功能時
你是要花大量的 memory 在 mysql 上面呢
還是簡單的安裝 370 KB 大小的 sqlite
最近開始研究 sqlite ,發現素來稱為雞刀的他
似乎並沒有想像中的那麼陽春...

他的優點在於
  • 佔 Mem 小,x86 + GCC Compiler 可以低到 170 KB
  • 簡單SQL 指令速度相當快,速度比較可以看這頁
  • 支援 SQL Standrad度高,包括 view table,transation都有支援 li>
  • 不用 configure,直接用
  • 一個DB就是一個file,所以備份 DB ,就是備份 file。也能用 subversion 去做DB version controll
  • 每個 row 不用指定 data type,有 ruby 的 duck typing的感覺
  • 許多語言native support
  • unicode support 良好

他的給我的感覺很好,輕巧快速功能又不錯
中小型 Application 可以盡情使用 sqlite的好處
又沒有其他 DB 的肥大
MAC OS X 可算是相當挺 sqlite
裡面許多 Application 都是直接使用內建的 sqlite3 當作backend db
在許多 db 動折 5X mb 以上的肥大之中(沒錯,我在說 MySQL)
他可說是一股清流呀
總之,這是一個值得研究的 db