タグ: MySQL

MySQL 4.1, 5.0の文字化け回避

日本人には必要なオプションがmysqldのオプションに追加されたようです。4.1.15、5.0.15以降なら使えるそうです。

A new command line argument was added to mysqld to ignore client character set information sent during handshake, and use server side settings instead, to reproduce 4.0 behaviour (Bug #9948):

mysqld –skip-character-set-client-handshake

ちょっと乱暴ですがPostgreSQLなら「initdbのオプションに–no-localeを付ける」にあたいするくらい重要かも知れません。

MySQL5リリース

#ちょっと遅いのですが自分用のメモとして。

10/24にMySQL5が正式リリースされました。

新しい機能として

  • ストアドプロシージャ
  • トリガ
  • カーソル
  • スキーマ
  • XAトランザクション

サポートされています。

FEDERATED Tablesと呼ばれる他のMySQLサーバのテーブルとリンクする機能も追加されたようですがこれはPostgreSQLのdblinkと同類の機能ですね。

dblink/
ここには2つの関数が提供されています。1つ(dblink())はリモートデータベースに 対して実行したいSQLのクエリーの結果をポインタを受け取るものです。引数を2つ (接続するデータベースを標準のlibpq形式で記述したものと実行したいSQL文)渡すだけで リモートデータベースから結果を受け取ることができます。もう1つはdblink()の結果から 各フィールドの結果を文字列で返すものです。構文や使用例は、このディレクトリにある README.dblinkを参照してください。

http://www.sraoss.co.jp/PostgreSQL/7.2/contrib.html

MySQL 5のデータベースエンジン

mysql> SHOW ENGINES;
+————+———+————————————————————+
| Engine | Support | Comment |
+————+———+————————————————————+
| MyISAM | DEFAULT | 高性能のMySQL 3.23以降のデフォルト・エンジン|
| HEAP | YES | MEMORY のまたの名前 |
| MEMORY | YES | Hashベースで、メモリー内に格納、テンポラリ・テーブルに適す。|
| MERGE | YES | 同一のMyISAMテーブルのコレクション  |
| MRG_MYISAM | YES | MERGE のまたの名前 |
| ISAM | NO | もう使われないストレッジ・エンジン、MyISAM を使用のこと。 |
| MRG_ISAM | NO | もう使われないストレッジ・エンジン、MERGEを使用のこと。 |
| InnoDB | YES | トランザクション、行レベルのロッキングとフォーリンキーのサポート |
| INNOBASE | YES | INNODB のまたの名前 |
| BDB | YES | トランザクションとページレベルのロッキングをサポート |
| BERKELEYDB | YES | BDB のまたの名前 |
| NDBCLUSTER | NO | クラスタ、耐障害性のメモリー・ベースのテーブル |
| NDB | NO | NDBCLUSTER のまたの名前 |
| EXAMPLE | NO | ストレッジエンジンの例 |
| ARCHIVE | NO | アーカイブ・ストレッジエンジン |
| CSV | NO | CSV ストレッジエンジン |
+————+———+————————————————————+

メモリ上にだけ存在するデータベースはPostgreSQLにも欲しいですね。CREATE TEMP TABLEを拡張して実装とか?

ちなみにSQLiteはメモリ上にデータベースを持てます。MSDEもメモリ上にデータベースを持てたと思います。もう何年も前になりますがIMDB(In Memory Database)として話題になっていました。

PostgreSQLをハックするならIMDBの実装しかない?!

サイボーズがMySQLを選択した理由

サイボーズは独自システムからオープンソースシステムを活用する方向に移行をするようですね。

Berkeley DBも候補に挙がっていた、とこの事ですからトランザクションが必要ないことは明らかですね。現時点で選定したらSQLiteという選択肢もあったのかも知れませんね。

決定した時点での状況、Windowsサポート等を考えるとMySQLと言う選択も株主としても納得できる選択と思います。

新しいフレームワークではアプリケーションをPHPで記述しています。これもMySQLの採用と同じくらい大きな選択で、この部分をJavaにするかでも悩みました。

この選択もDBの選択と同様に微妙ですが、コードの一部を公開してカスタマイズを可能にするにはPHPの方が有利だと思います。新しく作るならPHP5が良いかと思いますが、もう作ってあるようですね。

このブログ、サイボーズの方もご覧になっているようなので営業を一つ。
セキュリティの監査など必要でしたら是非どうぞ。
# 本当に引合がきたりして(笑