unicodeが一般化して、デフォルトの文字コードがUTF8で構築する機会も増えています。
一方、Webやモバイルでは、未だ制約がありSJISをデフォルトとするケースもあります。
業務系RDBでは過去を引きずることか多いので非ユニコードのケースも多々見受けられます。
前回にかいたのですが、バイトと、文字コードによる1文字の占有バイト数の関係は、なかなか周知が難しく、プロジェクトの度に説明を要します。
愚痴はさておき、RDBのデフォルト文字コードを UTF8にするのは、「勿体ないのでけは」「もったいないだけでは」と思うようになりました。
ユニコードを必然とする項目ってどれくらいあるのだろう。
ありがちな業務系アプリの場合、氏名、住所が該当しますが、それって、アプリDBの全項目の極一部の項目です。
(*)アプリによったら、文書データや書類データだったりしますが、それは例外的なシステムでしょう。
英数字項目が多いのではと思います。商品名項目なども、SJISで間に合うケースも多いでしょう。
RDB全体をUTF8で定義すると、アルファベットは1byteの筈なんですが、 データ長の事前チェックは、無条件に1文字:3byteで算出するようで、どうも変。
SJISなら2byteで済むのに3byte占有されるのも冗長感がします。
データ量が数百万件を超えるデータを扱うと大きな差になります。
charと ncharを使い分けが可能だったり、項目単位に採用する文字コートを設定できるRDBがあります。
というわけて、最近私は、デフォルト文字セットは、 SJISにして置いて、ユニコードが必要な項目のみ UTF8を指定するようにしています。
消極的妥協点ではありますが、そのことでデメリットを感じないので、まぁいいかな。