Your SlideShare is downloading. ×
SQLite入門(アプリケーション編)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

SQLite入門(アプリケーション編)

9,603
views

Published on


0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,603
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
19
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SQLite入門(アプリケーション編) 発表者 「鳥取を捨てた男」 kmt-t
  • 2. 自己紹介Web上での活動・ハンドルネーム : kmt-t・はてなダイアリ ID : kmt-t2・Twitter ID : kmt_t 属性・組み込みプログラマらしい・ミドルウェアが得意です→画像処理(2D/3D)、ファイルシステム、仮想マシンが専門です・使用言語はC++(not C)/C#/Python→C++11とかC#の最新の仕様がキャッチアップできていません…
  • 3. 最近の豪遊状況毎週木曜日 : GeekBear毎週水曜日 : スカラジオ9/3 : tottoruby #69/9 : 日本Androidの会堺支部 第2回勉強会9/10 : PowerPoint 勉強会@大阪9/19 : 横浜Androidプラットフォーム部第13回勉強会9/23 : 第2回 カーネル/VM探検隊@関西10/15 : 第1回 大阪Scala勉強会10/22 : 第4回JVMソースコードリーディングの会10/23 : 横浜Androidプラットフォーム部第14回勉強会10/28 : 日本Androidの会 京都支部 10月 勉強会10/29 : スマートフォンハッカソン 神戸GTUG11/5 : LL 名古屋11/11 : ぬーを囲む会11/12 : tottoruby #711/16~17 : Embedded Technorogy 201111/16 : ひつじさんを囲んで羊をむさぼる会@馬車道 遊びすぎだろ、JK
  • 4. 本日話す内容 全体構成第一部 : SQLite入門 (アプリケーション編) ←本日話す内容第二部 : SQLiteインターナル (上)第三部 : SQLiteインターナル (下)※ 「SQLiteインターナル」は3回以上の発表になる可能性あり今回の発表の趣旨 SQLiteの価値を再認識しよう!
  • 5. SQLiteに対する印象調査以下のいずれかに手を挙げてくださいA. SQLiteを使ったことがない人B. Webアプリのテスト用DBとして使っている人C. Webアプリの本番用DBとして使っている人→どうして本番でSQLiteを採用しましたか?D. デスクトップアプリに組み込んでいる人E. 組み込み製品に組み込んでいる人 もしかして… SQLiteは「簡易版」RDBMSと考えていませんか?
  • 6. C/S型RDBMSの代替などではない SQLiteにはSQLiteがベストソリューションとなる問題がある今回の発表で以下を確認・SQLiteを使うメリット・以下の競合する可能性のあるソリューションとのトレードオフ ・C/S型RDBMS(MySQL/PostgreSQLなど) ・Berkeley DB ・boost::multi_index
  • 7. SQLiteの概要のおさらい 公式ホームページhttp://www.sqlite.org/index.html 特徴・インプロセスRDBMS・C/S型(クライアント/サーバ型)ではない・ODBCドライバを提供・ストレージはファイルまたはオンメモリ・高いポータビリティ・ライセンスはパブリックドメイン
  • 8. SQLiteのメリット :RDBMSである 「RDBMSである」ということは… メリット・クエリー言語としてSQLが使える・テーブル間のリレーションが使える・UNIQUE制約などの制約が使える→ただし使えない制約も多い・トランザクションによりデータのアトミック性が保証される→不慮のトラブルでもデータが壊れにくい→突然電源断などがある組み込み機器には大きな要素
  • 9. SQLiteのメリット :小規模データ環境で速い 何故「小規模データ環境で速い」の? 理由・インプロセスRDBMS→プロセス間通信が存在しない→ただしプロセス間の排他処理はやっている・オンメモリデータベースも作成できる・インデックスが張れる・プリコンパイル済みクエリが発行できる→SQLテキストのパースをショートカットしてクエリを発行できる・C言語で独自の述語が定義できる
  • 10. SQLiteのメリット :ODBC対応ツールが使えるODBCドライバ対応ツール・Microsoft Access・Microsoft Excel with VBA・Microsoft Visual Basic・… 等々 …・作成したデータベースのオーサリングが容易・作成したデータベース向けの専用ツールも作りやすい 実は非常に大きな要素
  • 11. SQLiteのメリット :アプリへの組み込みやすさ 組み込み方法・ソースコードを入手 ・http://www.sqlite.org/download.html ・sqlite-amalgamation-*.zipをダウンロード・以下を自分のソースツリーに追加するだけ ・sqlite.c/sqlite.h ライセンスは大丈夫? パブリックドメインなので問題ありません!
  • 12. SQLiteのメリット :組み込み環境との親和性 移植の容易性・ファイルシステムがあるCPUアーキテクチャ/OSなら移植が容易→標準CライブラリとUNIX系OSのための基本的なPOSIX APIのみ依存→特にLinuxが動くような環境だとかなりマニアックなプロセッサでも動く フットプリントの小ささ・アホみたいにメモリを食うDBではない・各種定数をチューニングすることでさらなるフットプリントの調整ができる
  • 13. ここから他のツールとの対比
  • 14. vs C/S型RDBMS C/S型RDBMS SQLite・アウトプロセス型 ・インプロセス型→プロセス間通信が発生する →プロセス間通信が発生しない・分散化対応 ・分散化非対応→スケールアウトしやすい →スケールアウトが難しい・ストレージ ・ストレージ→MySQLだとMyISAM/InnoDB →ファイルまたはオンメモリ→オンメモリにできるRDBMSもあり →バックアップなどの管理が容易・組み込み環境ではほぼ使用不可 ・組み込み環境でも使用可・大規模環境ではC/S型RDBMSでなければならない(スケールアウトの問題)・小規模環境かつ低レイテンシが必要ならSQLiteの方がよい・組み込み環境ではC/S型RDBMSは使えない
  • 15. vs Berkeley DB Berkeley DB SQLite・KVS(Key Value Store) ・RDBMS→リレーションが張れない →リレーションが張れる・トランザクションなし ・トランザクションあり→データが壊れやすい →データが壊れにくい→オーバーヘッドなし →オーバーヘッドあり・ストレージ ・ストレージ→ファイル →ファイルまたはオンメモリ・データ保護が不要かつKVSでよい場合はBerkeley DBの方がよい・データ保護が必要な場合はSQLiteの方がよい・オンメモリDBを実現したいならBerkeley DBは使えない
  • 16. vs boost::multi_indexboost::multi_indexとは・C++準標準ライブラリboostのいちモジュール→今回の話はC++以外の言語での場合はとりあえず無視・データの組の集合(コンテナ)を提供する→データの組のどの要素でもキーとして効率よく値を取得できる・詳細は以下のURLの資料を参照→http://www.kmonos.net/wlog/104.html#_2008091213 オンメモリDBとしては有力なソリューション
  • 17. vs boost::multi_index boost::multi_index SQLite ・リレーションが張れる・リレーションが張れない ・トランザクションあり・トランザクションなし →データが壊れにくい→レイテンシが極小 →オーバヘッドあり・ストレージ ・ストレージ→オンメモリのみ →ファイルまたはオンメモリ→永続性がない →永続性がある・データがメモリに収まってリレーションが不要、揮発性でよいならboost::multi_indexの方がよい・データがメモリに収まらない、永続性が欲しいならboost::multi_indexは使えない・実はデータがメモリに収まらない場合のソリューションではSQLiteは最もコンパクトな部類
  • 18. まとめ SQLite向きの用途・小規模データ環境のRDBMS・組み込み環境でのRDBMS・永続化が必要なアプリケーションデータの管理・メモリに収まらないアプリケーションデータの管理・データキャッシュ boost::multi_index・boost::multi_indexは競合する用途では強力なソリューション→発表者一押し
  • 19. 以上で発表は終了 ご清聴、ありがとうございました!