問題タブ [database-agnostic]

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.

0 投票する
1 に答える
155 参照

database-agnostic - データベースアプリケーション-オンザフライで保存または計算しますか?

ItemName、Quantity、UnitPrice、Amountのフィールドを持つ購入リストのテーブルがあります。AmountはQuantity*UnitPriceに等しいことに注意してください。

私の単純な問題は、データを取得するときに金額を保存するか、計算する必要があるかということです。保管または処理について、何を心配する必要がありますか?

0 投票する
1 に答える
533 参照

oracle - データベースに依存しないストアド プロシージャ API

従来の Web アプリケーションでは、ストアド プロシージャを多用しています。すべてのデータベース呼び出し (つまり、クエリとプロシージャ) が行われる中央インターフェイスがあります。ただし、現在の実装では、内部でOracleCommandBuilder.DeriveParameters メソッドを使用して、適切なストアド プロシージャ シグネチャにバインドしています。ドキュメントから:

DeriveParameters はデータベース ラウンドトリップを発生させるため、設計時にのみ使用する必要があります。運用環境で不要なデータベース ラウンドトリップを回避するには、DeriveParameters メソッド自体を、設計時に DeriveParameters メソッドによって返された明示的なパラメーター設定に置き換える必要があります。

OracleCommand クラスを使用して、正しいストアド プロシージャ シグネチャに明示的にバインドできます。ただし、OracleCommand オブジェクトを使用してコードを (データ アクセス レイヤーだけであっても) ポイ捨てすることは、データベースにとらわれません。データベース インターフェース (以下、IDatabaseServiceと呼びます) では、データベースに依存しない動的クエリを既にサポートしています。これは次のようになります。

データベースに依存しないストアド プロシージャ コールもサポートしたいと考えています。これにはどのようなパターンが適していますか?

詳しくは:

特定のサブルーチンにバインドするために、OracleCommands はBindByNameを許可します。文字列は型よりもエラーが発生しやすいため、このアプローチは使用しないことをお勧めします。サブルーチン呼び出しをバインドするもう 1 つの方法は、パラメーターの型を提供することです。パラメータ値に依存して実行時の型を反映することもできますが、それよりも強力な安全性が必要です。データベースと通信する前に、提供されたパラメーター値が提供されたサブルーチンパラメーターの型と一致することを確認できるように、データベースインターフェイスに型を明示的に提供する必要があります。

0 投票する
1 に答える
90 参照

database - データベースを通信バスとして使用するときに同時実行の問題を回避するにはどうすればよいですか?

並行性の問題があるため、複数のアプリが同じデータベースに対して読み取り/書き込みを行うことは避けるべきだと言う人もいます。彼らは、堅固なアーキテクチャでは単一のアプリケーションのみがデータベースにアクセスできると私に確信させるまで、固執していました。このような問題がREAD操作の同時実行性に起因するのか、それともWRITE操作のみに関連するのかはわかりません。

私の懸念は、DBが、私が開発しているシステムのような一部のシステムにとって優れた通信バスであることです。並行性の問題を回避しながらそれを行う方法についてのガイドラインはありますか?

0 投票する
4 に答える
133 参照

sql - すべての除外条件を SQL クエリに入れるか、最初にすべての結果を取得してからメモリ内で除外コードを実行しますか?

私のクエリでは、同じ都市のすべてのユーザーを取得したいと考えています。このクエリはエンド ユーザーも利用できるため、同じ都市の他のユーザーを確認できます。ユーザーテーブルにクエリを実行して、クエリを実行したユーザーも含めてすべてのユーザーを取得します。

2 つのオプションがあります。

  1. user.id != (クエリを実行しているユーザーのユーザー ID) をクエリする条件を追加します。

  2. または、クエリ結果を表示してクエリを実行しているユーザーを削除する前に処理します。

どちらを使用するかは重要ですか、それともかなりの効果がありますか?

注 - 私の主なクエリは、同じ都市を見つけるほど単純ではありませんが、3 つのテーブル結合を使用して、ユーザーが表示したいデータにアクセスします。簡潔にするためにここに都市を入れました。

0 投票する
2 に答える
162 参照

c# - ビジネス サービスで SQL 接続を開く

私のビジネス サービス クラスが SqlConnection を開くことを密結合と見なしますか?

実際、ビジネス サービスは具体的なデータ プロバイダーを認識する必要はありません。

パブリック クラス UnitService:

0 投票する
4 に答える
1419 参照

database - データベースにとらわれないアプリケーション

私が取り組んでいるアプリケーションの1つのデータベースは、ビジネスによってまだ確認されていません。

  • 最良の推測はOracleとDB2です。
  • 私が聞いたのは、最初にプロジェクトがDB2 V9で稼働し、次にOracle11gで稼働するということです。

このプロジェクトでは、Spring 3.0.5、Hibernate 3.5、JPA2、JBoss5を使用しています。

では、ここでビルドフェーズとテストフェーズに入るベストプラクティスは何ですか?

  1. 最初にDB2を使用してビルドし、後でOracleについて心配しますか(これは正しく聞こえません)?
  2. または、JPA(Hibernate)を使用して記述し、データベーススキーマを生成しますか?
  3. または、他の何か?

PS:DBの選択、何をいつ行うかを制御することはできません。これらは、素敵な部屋に座っている人々がファットチェックと大きなボーナスを受け取ることによって行われる戦略的な決定だからです。

ありがとう、アディ

0 投票する
3 に答える
514 参照

sql - SQL:任意の一連の日付のギャップを検出する組み込みの方法?

履歴レポートにフィードする一連のテーブルがあります。現在、レポートの生成には時間がかかります。コンパイルされたデータを格納してレポートにフィードするキャッシュテーブルを作成したいと思います。

これらのキャッシュテーブルの1つのキーは、日付フィールドになります。使用する一連の日付にギャップがないことを確認したいと思います。たとえば、1月1日と3日のレコードは必要ありませんが、2番目の日付には行がありません。

RDBMSのリレーショナルツールでこれを強制する方法を考えることはできません。関連するレコードが一連の日付の範囲外にならないように日付のテーブルを設定できます。つまり、「日付シリーズ」テーブルに一致する行がない場合は1月2日を禁止しますが、範囲内の日付をスキップしないように自動的に確認する方法がわかりません。

データベーススキーマ定義でこれを自動的に行う方法はありますか?または、コードのギャップをチェックする必要がありますか?

MySQLを使用していますが、これはRDBMSに依存しないようです。

0 投票する
1 に答える
60 参照

database - 制約はスキーマでどのように定義されていますか? ストア プロシージャ、ユーザー定義関数、またはデータベース内の T-SQL または PL/SQL によるものですか?

SQL Server、Oracle、または任意のデータベース サーバーがテーブルに制約を適用する方法>

制約は知っていますが、テーブルまたは列にどのように適用されますか? SQL Server が制約の要件を理解し、整合性を維持する方法を見つけようとしました。

制約を適用するためのストア プロシージャまたはユーザー定義関数はありますか? ユーザーがテーブルに制約をマウントするように要求された場合、データベース サーバーはこのシナリオをどのように理解しますか?

0 投票する
2 に答える
258 参照

sql - where 句の列を使用してクエリを最適化する

低レベルのキューとして設計されたテーブルの最初の N 行をフェッチする SQL クエリがあります。

このクエリの背後にある意図は次のとおりです。

  • まず、この質問はデータベースに依存しないことを意図しています。私の実装では、SQL Server、Oracle、DB2、および sybase がサポートされるためです。上記の "top N" の SQL 構文は単なる例です。
  • テーブルには数百万行を含めることができます。
  • N は比較的小さい数値で、たとえば 100 です。
  • 行がキューにある場合、status は 0 です。その後、処理中であることを示すために 1 に変更されます。処理後、削除します。そのため、テーブル内の行の少なくとも 90% がステータス 0 になることが予想されます。
  • テーブル内の行は、日付に従ってフェッチする必要があるため、order by句です。

このクエリを最速で動作させるための最適なインデックスは何ですか?

最初はインデックスが にあるはずだと思っていました(date, status)が、もうよくわかりません。ステータス列にはほとんどゼロが含まれるため、それに付加価値はありますか? 単独で索引付けするだけで十分(date)ですか?
それともそうあるべき(status, date)ですか?

0 投票する
1 に答える
214 参照

ruby - リレーショナルvsNoSql:この種のアプリにはどのデータベースを使用する必要がありますか?

学生の成績を分析するアプリケーションを構築しようとしています。保存する必要のあるデータは次のようになります。

科目は学期やコースによって異なります。主な要件は次のとおりです。

  1. データベースは、試験ごとのレポート、学生ごとのレポート、統合されたレポート、主題のレポートなどのさまざまなレポートの作成を可能にする必要があります。
  2. 私が決めた言語なので、ルビー用のライブラリが必要です。

したがって、この種のアプリケーションにはリレーショナルデータベースまたはNoSQLデータベースを選択する必要があります。NoSQLの場合、どれですか?

このユース ケースに最適なデータベースは何ですか?