問題タブ [database]
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.
sql-server - 複数のユーザーによるデータベースレコードの編集
私はデータベーステーブル(正規化、MS SQLサーバー上)を設計し、少数のユーザーが情報を追加および編集するために使用するアプリケーション用のスタンドアロンWindowsフロントエンドを作成しました。後日、生産エリア全体を検索できるようにWebインターフェイスを追加します。
2人のユーザーが同じレコードの編集を開始した場合、最後に更新をコミットすると「勝者」になり、重要な情報が失われる可能性があるのではないかと心配しています。いくつかの解決策が思い浮かびますが、私がより大きな頭痛を引き起こすかどうかはわかりません。
- 何もせず、2人のユーザーが同じレコードを同時に編集しないことを期待してください。-ハッピングされたことがないかもしれませんが、ハプされた場合はどうなりますか?
- 編集ルーチンは、元のデータと更新のコピーを保存し、ユーザーが編集を終了したときに比較することができます。それらが異なる場合は、showuserとcomfirmupdate-データの2つのコピーを保存する必要があります。
- 最後に更新されたDATETIME列を追加し、更新時に一致するかどうかを確認します。一致しない場合は、違いを表示します。-関連する各テーブルに新しい列が必要です。
- ユーザーがチェックされるレコードの編集を開始したときに登録する編集テーブルを作成し、他のユーザーが同じレコードを編集できないようにします。-ユーザーがプログラムからクラッシュした場合にデッドロックやレコードがロックされるのを防ぐために、プログラムフローを慎重に検討する必要があります。
より良い解決策はありますか、それとも私はこれらのいずれかに行くべきですか?
c# - C# でデータベースに接続してレコードセットをループするにはどうすればよいですか?
C# で一連のレコードに対してデータベースに接続してクエリを実行する最も簡単な方法は何ですか?
sql - データベースのインデックス作成はどのように機能しますか?
データセットのサイズが大きくなるにつれてインデックス作成が非常に重要になることを考えると、データベースに依存しないレベルでインデックス作成がどのように機能するかを誰か説明できますか?
フィールドにインデックスを付けるためのクエリについては、データベース列にインデックスを付ける方法を参照してください。
sql - データベース列のインデックスを作成する方法
願わくば、各データベース サーバーについて回答を得ることができれば幸いです。
インデックス作成の仕組みの概要については、データベースのインデックス作成はどのように機能しますか?を参照してください。
mysql - パフォーマンスが低下し始める前に、MySQL データベースがどれくらい大きくなるか
MySQL データベースのパフォーマンスが低下し始めるのはどの時点ですか?
- 物理データベースのサイズは重要ですか?
- レコードの数は重要ですか?
- パフォーマンスの低下は線形ですか、それとも指数関数的ですか?
私は大規模なデータベースであると信じているものを持っており、約 15M のレコードがあり、ほぼ 2GB を占めています。これらの数値に基づいて、データを一掃するインセンティブはありますか、それとも、さらに数年間スケーリングを続けても安全ですか?
php - DB スキーマの変更を追跡するメカニズム
DB スキーマの変更を追跡および/または自動化するための最良の方法は何ですか? 私たちのチームはバージョン管理に Subversion を使用しており、この方法で一部のタスクを自動化できました (ステージング サーバーへのビルドのプッシュ、テスト済みコードの運用サーバーへのデプロイ) が、データベースの更新は手動で行っています。コードと DB の更新をさまざまなサーバーにプッシュするバックエンドとして Subversion を引き続き使用しながら、さまざまな環境のサーバー間で効率的に作業できるソリューションを見つけるか作成したいと考えています。
多くの一般的なソフトウェア パッケージには、DB のバージョンを検出して必要な変更を適用する自動更新スクリプトが含まれています。大規模な場合でも (複数のプロジェクトや複数の環境や言語にまたがって)、これを行うための最良の方法はありますか? もしそうなら、プロセスを簡素化する既存のコードはありますか、それとも独自のソリューションを展開するのが最善ですか? 誰かが以前に似たようなものを実装し、それを Subversion のコミット後のフックに統合したことがありますか? それとも、これは悪い考えですか?
複数のプラットフォームをサポートするソリューションが望ましいですが、作業の大部分が Linux/Apache/MySQL/PHP スタックをサポートする必要があります。
python - プロトコル バッファに関する経験はありますか?
Google のプロトコル バッファのデータ交換形式に関する情報を調べていたところです。誰かがコードをいじったり、プロジェクトを作成したりしましたか?
私は現在、テキスト エディターで手動で作成された構造化コンテンツ用の Python プロジェクトで XML を使用しています。ユーザー向けの入力形式としての Protocol Buffers に関する一般的な意見はどうなのか疑問に思っていました。速度と簡潔さの利点は確かにあるように見えますが、実際にデータを生成して処理するには非常に多くの要因があります。
sql-server - 参照するテーブルが多すぎるために SQL Server が実行できなかったクエリに遭遇したことがありますか?
エラーメッセージを見たことがありますか?
-- SQL Server 2000
ビューまたは関数の解決のために補助テーブルを割り当てることができませんでした。
クエリ内のテーブルの最大数 (256) を超えました。-- SQL Server 2005
クエリ内のテーブル名が多すぎます。許容される最大値は 256 です。
はいの場合、何をしましたか?
あきらめた?顧客の要求を簡素化するよう説得しましたか? データベースを非正規化しましたか?
@(クエリの投稿を希望するすべての人):
- 回答編集ウィンドウに 70 キロバイトのコードを貼り付けられるかどうかわかりません。
- これができたとしても、この 70 キロバイトのコードは 20 または 30 のビューを参照するため、これは役に立ちません。
ここで自慢しているように聞こえたくありませんが、問題はクエリにありません。クエリは最適 (または少なくともほぼ最適) です。削除できるすべての列とすべてのテーブルを探して、それらを最適化するのに数え切れないほどの時間を費やしました。1 つの SELECT ステートメントで入力する必要がある 200 列または 300 列のレポートを想像してみてください (数年前、まだ小さなレポートであったときに、そのように設計されたためです)。
mysql - データベース ダイアグラムの自動生成 MySQL
すべてのプロジェクトの開始時に、Dia を開いてデータベース ダイアグラムを作成するのにうんざりしています。特定のテーブルを選択し、MySQL データベースに基づいてデータベース ダイアグラムを作成できるツールはありますか? 外部キーが設定されていないため、後でダイアグラムを編集できるようにすることをお勧めします...
これが私がダイアグラム的に描いているものです(恐ろしいデータ設計を許してください、私はそれを設計していません.この例でそれが表す実際のデータではなく、ダイアグラムの概念に焦点を当てましょう;)):
database - Webコードをテストする方法は?
状態に大きく依存しているデータベースバックエンド開発用のテストコードを書くための良いヒントを誰かが持っていますか?
具体的には、データベースからレコードを取得するコードのテストを作成したいのですが、答えはデータベース内のデータによって異なります(時間の経過とともに変化する可能性があります)。
人々は通常、「凍結された」データベースを使用して別の開発システムを作成し、特定の関数が常にまったく同じ結果セットを返すようにしますか?
これは新しい問題ではないと確信しているので、他の人の経験から学ぶことに非常に興味があります。
Webベースの開発のこの問題を一般的に論じている良い記事はありますか?
私は通常PHPコードを記述しますが、これらの問題はすべて言語やフレームワークに依存しないものであると思います。