TOP
>
サーバ構築・運用
> 日本語データの取り扱い
徹底比較!! PostgreSQL vs MySQLパート2
第3回:実は差があるキャラクターセットの違い
著者:
NTTデータ 藤塚 勤也
2007/5/8
1
2
3
次のページ
日本語データの取り扱い
今回は日本語データの取り扱いについて取り上げます。日本語データの取り扱いについては、連載「
徹底比較!! PostgreSQL vs MySQL
」でも少し説明しましたが、今回はさらに仕組みや性能面について取り上げていきます。
日本語キャラクターセットのサポート
まずは、PostgreSQLとMySQLがデータベース内に収めることができる日本語データのキャラクターセットを示します(表1)。
PostgreSQL 8.1.8
EUC-JP
UTF-8
MySQL 5.0.22
EUC-JP
Shift-JIS
UTF-8
UCS-2
cp932
表1:格納できる日本語のキャラクターセット
表1の通りPostgreSQLとMySQLでは、サポートする日本語データのキャラクターセットの種類に違いがあります。その中でも注意する必要があるのは、PostgreSQLでは代表的な日本語キャラクターセットの1つShift-JISをデータベース内に収めることができない点です。
とはいうものの、Shift-JISのデータを扱えないわけではありません。あくまでもデータベース内に収めることができないだけで、アプリケーションでShift-JISを使用できないわけではありません。
サーバとクライアント間でのキャラクターセットの変換
データベース内に収めているのとは異なるキャラクターセットをアプリケーション側で使うために、PostgreSQLとMySQLともにデータベースエンジンとアプリケーションとの間で自動的にキャラクターセットを変換する機能を持っています(図1)。
図1:キャラクターセットの変換
例えばShift-JISを使用したい場合、アプリケーションがあらかじめShift-JISを使用することを宣言しておくことにより、データベースが自動的にキャラクターセットを変換してアプリケーションにデータを渡します。この機能を使うことによって、アプリケーションはデータベース内に格納されているキャラクターセットを意識することなく、開発することができます。
このサーバとクライアント間でのキャラクターセットの変換機能ですが、PostgreSQLとMySQLでは、具体的な実現方法に違いがあります。
PostgreSQLは、異なったキャラクターセット間で1対1の変換を行います。
具体的な例で説明すると、EUC-JPで格納されているデータに対し、クライアントからShift-JISを要求すると、サーバはEUC-JPのデータ形式を直接Shift-JISのデータ形式に変換してクライアントに渡します。
もう一方のMySQLは、どのようなキャラクターセットもまずはUCS-2に変換し、そこからさらに対象のキャラクターセットへ変換を行います。
上記の例にあてはめると、EUC-JPのデータ形式をUCS-2のデータ形式に変換し、変換されたUSC-2のデータ形式をShift-JISのデータ形式に変換します。
もちろん、この変換方法の違いはアプリケーションの開発にはまったく影響しません。
1
2
3
次のページ
著者プロフィール
株式会社NTTデータ 藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。
INDEX
第3回:実は差があるキャラクターセットの違い
日本語データの取り扱い
キャラクターセットの変換性能
日本語データのバイト数