問題タブ [database-abstraction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - mysqli または PDO - 長所と短所は何ですか?
私たちの場所では、プリペアド ステートメントやトランザクション サポートなどのために、mysqli と PDO の使用に分かれています。一部のプロジェクトでは一方を使用し、一部のプロジェクトでは他方を使用します。別の RDBMS に移行する現実的な可能性はほとんどありません。
私が PDO を好むのは、準備済みステートメントに名前付きパラメーターを使用できるという 1 つの理由からです。私の知る限り、mysqli は使用できません。
プロジェクトを統合して 1 つのアプローチのみを使用する際に、標準として 1 つを選択することに他に長所と短所はありますか?
php - どの PHP / MySQL ドライバーまたはデータベース抽象化レイヤーがプリペアド ステートメントをサポートしていますか?
私は、デフォルトの PDO および PDOStatement クラスの拡張バージョンで構築されたプロジェクトに取り組んでおり、「?」の代わりに PDO スタイルの名前付きパラメーターを使用しています。変数のプレースホルダー。
しかし、クライアントは現在、別のドライバーの使用を検討するよう要求しています。これは、クライアントのバージョンの OS X Web サーバーには、このドライバーを簡単にインストールできないように見えるためです。では、PDO のように名前付きパラメーターを使用する現在の機能セットで簡単に拡張できる、他のデータベース抽象化ライブラリーまたはデータベース アクセス ドライバーを知っている人はいますか?
sql - データベースの抽象化 - 複数の構文をサポート
私が取り組んでいる PHP プロジェクトでは、複数のデータベース プラットフォームをサポートするためにいくつかの DAL 拡張機能を作成する必要があります。これに関する主な落とし穴は、プラットフォームが異なれば構文も異なることです。注目すべき MySQL と MSSQL はまったく異なります。
これに対する最善の解決策は何ですか?
以下は、私たちが話し合ったいくつかの例です。
クラスベースの SQL 構築
これには、SQL クエリを少しずつ構築できるクラスを作成することが含まれます。例えば:
ただし、単一のクエリにはかなりの数の行が含まれます。
SQL 構文の再フォーマット
このオプションははるかにクリーンです。SQL コードを読み取り、入力言語と出力言語に基づいて再フォーマットします。ただし、解析に関する限り、これははるかに遅いソリューションであることがわかります。
design-patterns - データベースの抽象化 - オプションは何ですか?
データベースの種類を認識しないように、アプリケーションからデータベースを抽象化するにはどうすればよいですか? データ リポジトリとして SQL Server または Visual FoxPro をサポートする必要がある .Net 3.5 WPF アプリケーションを設計する必要があります。
私の設計目標は次のとおりです。
- データ アクセス層でコードを記述するときに、データ リポジトリのタイプを非表示にします
- SQL と FoxPro の切り替えをできるだけ迅速かつ簡単に行う
- DAL から ANSI SQL とストアド プロシージャの両方を使用できるようにする
- プロジェクトに参加する他の開発者にとって、学習曲線は最小限でなければなりません
これは、おそらく CSLA を使用する WPF アプリケーションになります。
ある種の ORM の使用を考えたことはありますが、この種のテクノロジの経験はありません。
python - 次のニーズに適した Python ライブラリは何ですか?
次のニーズに適したPythonライブラリは何ですか:
- MVC
- ドメインの抽象化
- データベースの抽象化
- ビデオ ライブラリ (サムネイルを作成するためだけ)
SQLAlchemy がデータベースの抽象化に非常に適していることは既に知っているので、より良いものを提案したい場合を除き、気にしないでください。
編集:これは言及するのがばかげているように思えるかもしれませんが、私はWeb用ではなくGUI用のMVCについて話しているので、明確にするために言及しています
編集: MVC部分にはGUI部分も含まれていますか、それともPyQtのようなGUI用の別のライブラリを使用できますか
.net - データベース抽象化レイヤーの設計 - IRepository を正しい方法で使用していますか?
私は自分の ASP.NET MVC アプリケーションを設計している最中で、いくつかの興味深い考えに出くわしました。
私が見た多くのサンプルは、Repository パターン ( IRepository
) を記述して使用しているため、MVC を学習しているときに私が行った方法です。
今、私はそれが何をしているのかを知っており、現在のデザインを見て、それが最善の方法であるかどうかを考え始めています.
現在、、 などIUserRepository
のメソッドを定義する基本的ながあります。FindById()
SaveChanges()
現在、DB のユーザー テーブルをロード/クエリするときはいつでも、次の行に沿って何かを行います。
現在、ユーザーがリンクを作成するときにコントローラーを作成することに関してMVCがどのように機能するかを完全には理解していません(ユーザーごとに1つのコントローラーがあるのか、アプリケーションごとに1つのコントローラーがあるのか わかりません)。アクション。
IRepository<T>
ここで、一般的なリポジトリ インターフェイスの使用に関する素晴らしい質問を見つけました。またRepositoryFactory
、多くのブログでstatic のアイデアを見つけました。基本的に、リポジトリのインスタンスは 1 つだけ保持され、このファクトリを介して取得されます
したがって、私の質問は、人々がアプリでどのようにそれを行うか、および何が良い習慣と見なされるかについてです。
人々は各テーブルに基づいて個別のリポジトリを持っていますか ( IUserRepository
)?
彼らはジェネリックを使用していますIRepository<T>
か?
静的リポジトリ ファクトリを使用していますか?
それとも完全に別のものですか?
編集:私はおそらく同様に尋ねる必要があることに気付きました:
各コントローラーにプライベートIRepository
を設定するのは良い方法ですか? IRepository
または、使用するたびに新しいインスタンスを作成する必要がありますか?
報奨金の編集: より多くの視点を得るために報奨金を開始しています (ティムの意見が役に立たなかったわけではありません)。
私は、人々が MVC アプリで何をしているのか、または彼らが良いアイデアだと思っていることを知りたいと思っています。
orm - ORM はどこに落ちますか?
ORM は柔軟性がなく、「漏れやすい抽象化」であるとバッシングしている人をよく耳にしますが、なぜORM が問題になるのかについてはあまり聞いていません。適切に使用した場合、ORM の正確な欠点は何ですか? 私は PHP orm に取り組んでおり、遅延読み込みやサブクエリの欠如など、他の多くの ORM が失敗する問題を解決したいので、これを求めています。
具体的にお答えください。コードを表示するか、ORM が苦労するデータベース スキーマを説明してください。言語や ORM は関係ありません。
ruby - Ruby のデータベース抽象化/アダプター
Ruby で使用しているデータベースの抽象化/アダプターは何ですか? 私は主にデータ指向の機能に興味がありますが、オブジェクト マッピング (アクティブ レコードやデータ マッパーなど) には興味がありません。
現在Sequelを使用しています。他のオプションはありますか?
私は主に興味があります:
- シンプルでクリーンで曖昧でない API
- データの選択 (当然)、フィルタリング、集計
- フィールドマッピングなしの生の値の選択: SELECT col1, col2, col3 => [val1, val2, val3] { :col1 => val1 ...} のハッシュではありません
- 選択する列/値のリストを渡すことができます: select(array_of_columns) (列が既知である必要がある dataset.select(:col1, :col2, :col3) ではありません)
- API は、テーブル スキーマ 'some_schema.some_table' を一貫した (そして機能する) 方法で考慮します。これも反映(テーブルからスキーマを取得)
- データベース リフレクション: テーブル列、それらのデータベース ストレージ タイプ、およびおそらくアダプターの抽象化タイプのリストを取得します
- テーブルの作成、削除
- 列挙されているテーブルからすべてのレコードをフェッチする必要なく、別のテーブルからの選択を列挙するループで他のテーブルを操作 (挿入、更新) できる
目的は、コードの記述時に未知の構造を持つデータを操作することです。これは、構造または構造の大部分が通常よく知られているオブジェクト マッピングとは逆です。オブジェクト マッピングのオーバーヘッドは必要ありません。
オブジェクト マッピング ライブラリのバックエンドを含め、どのようなオプションがありますか?
php - データベースの抽象化とファクトリメソッド
PHPのデータベース抽象化とファクトリメソッドの設計手法についてもっと知りたいです。背景として、私のサイトは現在ベータモードにある共通の関心のあるソーシャルネットワーキングコミュニティです。
現在、オブジェクト取得用の古いコードをファクトリメソッドに移動し始めています。ただし、関数/メソッドごとに多くのSQLテーブル名と構造を分離しておくことで、自分自身を制限しているように感じます。
質問:
データベースの切り替えを予期しない場合、PDO(または同様のもの)を使用する理由はありますか?
PDOは、現在使用しているMySqliプリペアドステートメントとインターフェイスできますか?
各メソッドからテーブル名を分離するのに役立ちますか?(いいえの場合、他にどのようなデザインパターンを調査したいと思いますか?)
会員数が非常に多い場合、サイトの速度が低下しますか?