オープンソースデータベース選択のポイント

利用条件
本資料は改変を含む再利用は全て自由です。
原本に対して文言の変更並びにシートの追加および削除
等の改変を加える場合には、原本の作成者の氏名(本資
料においては「株式会社びぎねっと 代表取締役兼CEO 宮
原 徹([email protected])」、改変者の氏名、改変個所の確
認が可能となるよう原本の入手経路(URL等)を改変後の
資料に明記するようにしてください
LinuxWorld Expo/Tokyo 2001 GT-13
2001年6月1日 11:50~12:50
オープンソースデータベース
最適選択のポイント
-PostgreSQLとMySQLを比較する株式会社びぎねっと
代表取締役社長兼CEO
宮原 徹([email protected])
http://Begi.net/
講師経歴
• 1994年 日本オラクル株式会社入社。PCサー
バー製品のマーケティングに従事
• 1996年 同社WebマスターとしてWebサイト立ち上
げ。DB連携会員管理システム「OFC」を構築
• その後ECパッケージ開発に従事後、紆余曲折を
経て現在に至る
• 著書に『Oracle8 for Linuxインストールキット』、監
訳書に『Oracle7 SQL入門』『Oracleデータベース
設計』(アスキー出版)『Oracleシステム設計』『オ
ラクルPL/SQLプログラミング Oracle8対応版』(オ
ライリー)、その他雑誌記事など多数
本日のアジェンダ
•
•
•
•
•
•
何を基準にDBを選べばいいの?
どうやってDBを使うの?
DBのパフォーマンスを考える
PostgreSQLとMySQLを比較してみる
各ユーザー会・PRコーナー
質疑応答
こんなDBの選び方は間違っている
•
•
•
•
•
有名だから
みんなが使っているから
最新の機能が満載されているから
TPCベンチマークで性能がいいから
高いから/安いから/無料だから
データベースは道具である
こんなDBの選び方をしよう
•
•
•
•
有名だから
みんなが使っているから
必要な機能が実装されているから
自分で測定してみたベンチマークで性能が
出ている
• 適正価格である
• サポートが提供されている
• オープンソースである
どうやってデータベースを使う?
目的指向・DOAで考えよう(データの5W1H)
• 誰が使うデータですか?
• 何のためのデータですか?
• どんなデータですか?
• どれぐらいのデータですか?
• どうやって使うデータですか? etc…etc…
これらの要素が絡み合ってデータの性質が決定する。
そしてその性質に合わせてデータベースを選ぶ。
*DOA:Data Oriented Approach
例)Webによる会員システム
• ユーザーインターフェースは全てWeb
• 会員情報を中心に関連データが存在
– ER図はそれほど複雑ではない)
• データの検索/入力/更新の頻度見積もり
–
–
–
–
検索は常に最も多い(と仮定)
入力が多いのであれば、検索も多い(はず?)
更新が多いのであれば、入力は少ない(?)
削除はとりあえず問題にしない
Webシステムを分析する
• Webアプリケーションにおける処理頻度は概ね以
下の通り
検索≧入力>更新
• トランザクションが必要となる一貫性を維持した
更新処理が必要かどうかはアプリ次第
– Webアプリはそもそも仕組みとしてトランザクション処
理が難しく不向き
– トランザクションの同時並行処理はリソースを消費し、
パフォーマンスを低下させるおそれがある
Webシステムに適したDBとは?
• リソース(特にメモリ)を浪費しない
• 回線速度相応のパフォーマンス
– どんなに高速なDBでも遅い回線ではオー
バースペック
• 適切な開発環境・ミドルウェアが選択肢に
ある
– 商用ソフトウェアからのサポート
– スクリプト言語系(Perl,Ruby,PHP)
– ODBC,JDBCなど
パフォーマンスについて
• パフォーマンスはユーザーの責任
• 高パフォーマンスへの近道は正しい知識と経験
– きちんとしたスキーマ設計
• 正規化と非正規化
– 正しいインデックス
• インデックスは張ればいいというものではない
– 適切なSQL
• 条件文の書き方が速度を大きく左右することもある
– 最適な物理設計
• ディスク、速いですか?メモリ、積んでますか?
– ボトルネックの割り出し
• 遅いのはDBのせいとは限らない
開発環境・ミドルウェアについて
• 商用ソフトウェアによるサポート
– Borland KylixはMySQLをサポート
• http://www.borland.co.jp/kylix/
– 海外製ソフトウェアはMySQLサポートが多
い?
• スクリプティング言語のサポート
– 主要言語はサポートされている
• ODBCドライバ・JDBCドライバ
– unixODBC(http://www.unixodbc.org/)
両者のコンセプト比較
• PostgreSQL
– データベースの研究から生まれる
– 標準SQLのサポート
– 必要な機能は実装していく
• MySQL
– Postgres(PostgreSQLの前身)をSQL対応させ
るminiSQLの流れを汲む
– 最低限の実装
– 高速な処理
SQLコマンド比較
• PostgreSQLでサポートされていて、MySQLでサ
ポートされていないSQLコマンド一覧
• スキーマ関係
– CREATE/DROP TRIGER
– CREATE/DROP VIEW
– TRUNCATE TABLE
• データ操作系
– DECLARE/CLOSE CURSOR,OPEN,FETCH
– SET/COMMIT TRANSACTION
– CAST
機能比較
• PostgreSQLでサポートされていて、MySQL
でサポートされていない機能
– トランザクション
• MySQL-Maxでサポート
• http://www.mysql.com/downloads/mysql-max-3.23.html
– トリガー
– ストアドプロシージャ
– 副問い合わせ
どっちを使う?
• どっちが「優れている」という比較は無意味
– 「力」のMySQL
– 「技」のPostgreSQL
• フリーなのだからとりあえず触れてみる
• サポートで選ぶ?
– SRA、ソフトエージェンシーがサポートサービ
スを提供
• 最終的には道具としての好み
日本PostgreSQLユーザ会
• 設立:1999年7月23日
• 会員数:942名(2000/5/15現在)
– pgsql-jp MLは約4700名
• 活動内容
– セミナーなどのイベント
– CD-ROM作成
– 翻訳
• PostgreSQL/Introduction and Concepts(Bruce Momjian)
• PostgreSQL付属ドキュメント
– 支部設立(札幌,広島,関西…)
– 飲み会
会費無料,24H/365D Web pageで入会受付中
JPUGブースでCD-ROMをもらおう!
日本MySQLユーザー会
• 設立:2000年3月
– ML のログをおく場所のドメイン名の獲得のため (^^;
• 会員:約350名(2001/5/13時点)
– ML 参加者数は約1300名
• 活動内容
– ML での情報交換が主
– 「MySQL徹底入門」(翔泳社) 執筆 (2001年1月)
– 雑誌原稿執筆
来るもの拒まず、去るもの追わず。お気軽にどうぞ
(^^)
参考資料
• 『改訂版 PC UNIXユーザのためのPostgreSQL完全攻略
ガイド』
– 技術評論社刊 石井達夫著
– ISBN4-7741-0890-1
• 『MySQL&mSQL』
– オライリージャパン刊 Randy Jay Yarger, George Reese, Tim King
著 高見 禎成、寺田美穂子 訳 SoftAgency監訳
– ISBN4-87311-011-4
• 『MySQL徹底入門』
– 翔泳社刊 日本MySQLユーザー会著 とみたまさひろ・
SoftAgency監修
– ISBN4-88135-977-0
• 『SQL IN A NUTSHELL』(英語)
– O’Reilly刊 Kevin Kline, Daniel Kline著
– ISBN 1-56592-744-3
参考情報
• 日本PosgreSQLユーザ会
– http://www.jp.postgresql.org/
• 日本MySQLユーザー会
– http://www.mysql.gr.jp/
• SRA
– http://www.sra.co.jp/
• ソフトエージェンシー
– http://www.softagency.co.jp/
• フリーDBMSのリスト
– http://neal.nikkeibp.co.jp/FreeDBMS/dblist.html