Webサイトに求められるデータベースを考える
Drizzleプロジェクトの目指すもの、その先を読む
SQLiteではできないこと
Drizzleのアナウンス後に目立ったフィードバックは、「軽量SQLデータベースを目指すのであれば、SQLiteで十分だ」という興味深い批判でした。
確かに Drizzleは軽量SQLデータベースという点ではSQLiteと重なります。しかしながら、SQLiteは1つのファイルに対して操作を行う組み込みデータベースとして優れたものですが、サーバプロセスを持つわけでなく、われわれの目指すmassively concurrentな世界で使うべきものではありません。
一方、DrizzleはWebアプリケーションとクラウドコンピューティングに適した、並列性に長けた高効率サーバプロセスを持つDBMSです。こういった面から、SQLiteとは異なるドメインに存在するプロジェクトであることがご理解いただけるかと思います。
MySQLそのものとの違いはどこにある?
MySQLがWindows系OS向けにも提供されているのに対して、DrizzleはUNIX系のOSのみをターゲットにしており、そもそもWindows用のバージョンは存在しません。こうした点を含め、MySQLとの間での大きな違いをまとめると以下のようになるでしょう。
POSIX環境への絞り込み
MySQLはさまざまな環境にポートされており、多様なエリアで活躍していますが、DrizzleはPOSIX環境にターゲットを絞り込んでいます。
通信系
通信プロトコル関連ではUNIXソケットへの対応を取り除き、TCP/IPのみに削減しています。また、デフォルトのポートは4427を使うことになっています。これはIANAによって公式に割り当てられたポート番号です注3。
MySQL関連のスクリプトやデータベースを削除
「script/mysql_install_db」などのスクリプトや、「mysql」などのシステムデータベースはDrizzleでは存在しません。これは、極力MySQLのINFORMATION_SCHEMAを作り直し、それを利用しようという動きから決定しました。
TIMEZONEサポートの削除
DrizzleではTIMEZONEのサポートはなく、UTCを使用します。
ストレージエンジン
Drizzle がデフォルトで使用するエンジンはInnoDBです。
MySQLのパッケージに含まれるMERGEエンジンとFEDERATEDエンジンはDrizzleには含まれません。BLACKHOLEエンジンについては、デフォルトではインストールされませんが、configure時のオプションに--with-plugins=blackholeを指定することで、インストールできるようにしています。
データタイプ関連
MEDIUMINTは存在せず、整数であればINTを使用します。これは、ハードウェア的にも、ユースケース的にも3バイトの整数を持つ意味がないに等しいという判断から削除されました。
BLOB系では、TINYBLOB、MEDIUMBLOB、LONGBLOBなどが削除され、代わりにBLOBを使用します。理由はInnoDBを含め、モダンなストレージエンジンは、どのBLOBタイプを使ったとしても、内部的にはBLOBタイプにマッピングするからです。
また、これらのタイプを削減することにより、パーサの処理性能が上がるという理由もあります。同様にTEXT型でも、TINYTEXT、MEDIUMTEXT、LONGTEXTが削除され、TEXT型に統一されています。また、Drizzleでは外部(自作など)のデータ型もプラグインとして使用できます。
そのほかにも、空間系の型、YEAR型、MyISAM用のFULLTEXTインデックスなどが取り除かれています。詳しい内容は常時、開発 Wikiに反映していく予定です。
現時点でデフォルトサポートするデータ型は表1のとおりです。
TEXT | SET | DATE | INT(1、2、4、8バイトのみ) |
BLOB | ENUM | DATETIME | DOUBLE. |
VARCHAR | TIME | DECIMAL | |
VARBINARY | TIMESTAMP |
表1 現在サポートしているデータ型
データベース機能の削減
Drizzle からは現在、ACL(アクセス制御リスト)、ビュー、ストアドプロシージャ、Prepared Statements、クエリキャッシュ、トリガなどの機能が取り除かれています。
ただし、取り除いたとはいっても、デフォルトで使用できないだけであって、マイクロカーネルアーキテクチャを実現した際には、必要に応じて機能を復活させることができます(自分で高速なコンポーネントを書いてロードさせるなど)。現在、ACLをロード可能にする作業が、PAM(Pluggable Authentication Modules)を使って行われています。
そのほかの変更はhttp://drizzle.wikia.com/wiki/MySQL_Differencesで閲覧できます。
2/3 |
Index | |
Drizzleプロジェクトの目指すもの、その先を読む | |
Page 1 ・Drizzleとは ・プロジェクトはこうして始まった! |
|
Page 2 ・SQLiteではできないこと ・MySQLそのものとの違いはどこにある? |
|
Page 3 ・プロジェクトは完全にコミュニティベース ・いますぐDrizzleを試すには |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|