インピーダンスミスマッチ
インピーダンスミスマッチ(英語:impedance mismatch)とは、ある2つの物体で整合性が取れていない状態のことである。
電気回路
電気回路においては信号を送り出す側と受け入れる側のインピーダンスが一致していない状態をいう。 改善するにはインピーダンスの低い方に合わせる。
データベース
プログラミング言語とデータベースとの間で微妙に型が一致しない状態もインピーダンスミスマッチという。
たとえば文字列ひとつとってもプログラミング言語やデータベースごとに制約が微妙に異なる。
SQL (最大文字数255文字、null非許容)
name varchar(255) not null
C言語(最大文字数255バイト、null許容)
char name[256];
C#(最大文字数制限なし、null許容)
string name = null;
まず文字数。SQLやC#では全角文字も「1文字」として数えるが、C言語ではバイト数である。次にnull許容型やnull非許容型の存在の有無の違いもある。
解決策
プログラミング言語からデータベースを意識させないことでインピーダンスミスマッチを強制的に整合させる各種ライブラリが開発されている。これらのライブラリは重量級のものは「ORM」、軽量なものは「Micro ORM」などと呼ばれる。