2011-09-10 8 views
1

私はしばらくの間、phpBB DBALを実装するいくつかのコードを使用してきました。最近、私はそれを取り巻くより完全なパッケージを実装しなければならず、全体を通してDBALを使用することに決めました。メインではOKです。しかし時には、私がそれを使う際に論理を見ることができない状況があります。シンプルなものをもっと複雑にするようです。データベース抽象化レイヤを使用する利点は何ですか?

SQL文を直接書くのではなく、DBALが提供するメリットは何ですか?ウィキペディア(http://en.wikipedia.org/wiki/Database_abstraction_layer)から

答えて

1

APIレベルの抽象化OpenDBXよう

ライブラリに単一の低レベルのプログラミングインタフェースを提供することにより、データベースへのアクセスを統一アプリケーション開発者これらの利点は、特定のクエリ言語(サブセット)に結び付けられておらず、目標を達成するために薄いレイヤーを実装するだけでよいため、速度と柔軟性が最も高いことが多いです。アプリケーション開発者は、すべての言語機能から選択できますが、表の問合せや変更には構成可能な文を提供する必要があります。さもなければ、彼のアプリケーションは1つのデータベースに結び付けられるでしょう。

1

料理を調理するとき、いくつかのシェフが鍋にアクセスすることを望ましくありません。彼らはすべて、別のシェフが既にスパイスを加えていたことに気づかずに、スパイスを加えている可能性があります。理想的には、スープを台無しにするのを避けるために単一のアクセスポイントとして機能する単一のシェフが必要です。

データベースと同じです。単一のアクセスポイントは、異なる方法でデータにアクセスする複数のサービスの問題を回避することができます。

+0

私はあなたの類推が好きですが、私は完全に「単一アクセスポイント」を得ていません。常に同じフォーマットでデータベースクエリをコーディングすることを意味しますか? – DavidM

+0

はい、もっと重要なのは更新です。 2つのテーブルを更新する必要がある場合、1つのプロセスがテーブルAをロックしてテーブルBを待つことができ、別のプロセスがテーブルBをロックしてテーブルAを待つ可能性があります...デッドロック!両方のプロセスが同じ更新コードを使用する場合、これは決して起こりません。 –

+0

興味深い。私はphpBB DBALをチェックして、それがどれほど「背後にあるか」を見ていきます。ありがとう。 – DavidM

関連する問題