タグ付けされた質問 「database」

データベースは、整理されたデータの集まりです。これは、スキーマ、テーブル、クエリ、レポート、ビュー、およびその他のオブジェクトのコレクションです。データは通常、情報を必要とするプロセスをサポートする方法で現実の側面をモデル化するように編成されます。データベースの設計について質問がある場合は、このタグを使用してください。特定のデータベース管理システム(MySQLなど)に関するものである場合は、代わりにそのタグを使用してください。

30
なぜエンティティオブジェクトが必要なのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 現在受け入れられているエンタープライズアプリケーション設計パラダイムのメリットについて、正直で思慮深い議論が必要です。 エンティティオブジェクトが存在する必要があるとは思いません。 エンティティオブジェクトとは、「個人」、「アカウント」、「注文」など、アプリケーションのために構築する傾向がある典型的なものを意味します。 私の現在の設計哲学はこれです: すべてのデータベースアクセスは、ストアドプロシージャを介して実行する必要があります。 データが必要なときはいつでも、ストアドプロシージャを呼び出して、SqlDataReaderまたはDataTableの行を反復処理します (注:Java EEを使用してエンタープライズアプリケーションも構築しました。Javaの人は、.NETの例を同等のものに置き換えてください) 私は反OOではありません。エンティティではなく、さまざまな目的で多くのクラスを作成します。私が書くクラスの大部分は静的ヘルパークラスであることを認めます。 私はおもちゃを作っていません。複数のマシンに展開された大規模で大量のトランザクションアプリケーションについて話している。Webアプリケーション、Windowsサービス、Webサービス、b2bインタラクション、という名前を付けます。 ORマッパーを使用しました。いくつか書いた。私はJava EEスタック、CSLA、および他のいくつかの同等のものを使用しました。私はそれらを使用しただけでなく、本番環境でこれらのアプリケーションを積極的に開発および保守しました。 私は、エンティティオブジェクトは、私たちの邪魔になっていることを戦いテストされたという結論になってきた、と私たちの生活は次のようになりますので、それらなしではるかに簡単。 この単純な例を考えてみましょう。正しく機能していないアプリケーションの特定のページに関するサポートコールがあり、フィールドの1つが本来のように永続化されていない可能性があります。私のモデルでは、問題を見つけるために割り当てられた開発者がちょうど3つのファイルを開きます。ASPX、ASPX.CS、およびストアドプロシージャを含むSQLファイル。この問題は、ストアード・プロシージャー呼び出しのパラメーターが欠落している可能性があるため、解決に数分かかります。しかし、どのエンティティモデルでも、必ずデバッガを起動し、コードをステップ実行し始めると、Visual Studioで15〜20個のファイルが開かれることになります。スタックの一番下に降りるまでに、開始した場所を忘れてしまいました。頭の中にあるのは、一度に多くの物だけです。ソフトウェアは、不要なレイヤーを追加することなく、非常に複雑です。 開発の複雑さとトラブルシューティングは、私の不満の片側にすぎません。 次に、スケーラビリティについて話しましょう。 開発者は、データベースと対話するコードを作成または変更するたびに、データベースへの正確な影響を徹底的に分析する必要があることを理解していますか?開発コピーだけでなく、本番を模倣しているので、オブジェクトに必要な追加の列が現在のクエリプランを無効にし、1秒で実行されていたレポートが2分で完了していることがわかります。選択リストに単一の列を追加したためですか?そして、現在必要なインデックスが非常に大きいため、DBAがファイルの物理レイアウトを変更する必要があることがわかりました。 抽象化によって物理データストアから離れすぎてしまうと、拡張が必要な​​アプリケーションで大混乱が発生します。 私は熱狂的ではありません。Linq to Sql、ADO.NET EF、Hibernate、Java EEなどへの強いプッシュがあるので、私が間違っていると私は確信している可能性があります。それが何であるか、なぜ私は自分の考えを変える必要があるのか​​を本当に知りたいのです。 [編集] この質問が再び突然アクティブになったようです。新しいコメント機能が追加されたので、いくつかの回答に直接コメントしました。お返事ありがとうございます。これは健全な議論だと思います。 おそらく、私がエンタープライズアプリケーションについて話していることをもっと明確にすべきでした。たとえば、誰かのデスクトップやモバイルアプリで実行されているゲームについてはコメントできません。 いくつかの同様の答えに対応して私がここで一番上に置かなければならないことの1つは、エンティティ/ ORMに移行する理由として、直交性と懸念の分離がよく引用されます。ストアドプロシージャは、私が考えることができる懸念の分離の最良の例です。ストアドプロシージャ以外のデータベースへのアクセスをすべて許可しない場合は、理論的にはデータモデル全体を再設計し、ストアドプロシージャの入力と出力を維持している限り、コードを壊さないようにすることができます。これらは契約によるプログラミングの完璧な例です( "select *"を避けて結果セットを文書化する限り)。 業界に長く住んでいて、長命のアプリケーションを扱ってきた人に聞いてください。データベースが存続している間に、アプリケーションとUIのレイヤーがいくつ消えてしまったのでしょうか。データを取得するためにSQLを生成する4つまたは5つの異なる永続化レイヤーがある場合、データベースのチューニングとリファクタリングはどれほど難しいですか?何も変更できません!ORMまたはSQLを生成するコードは、データベースを完全にロックします。
139 sql  database  orm  entities 

14
Mysqlレプリケーションの場合にマスターとスレーブに異なるデータベースがある場合、Mysql DBを再同期する方法は?
Mysql Server1はMASTERとして実行されています。 Mysql Server2はSLAVEとして実行されています。 現在、マスターからスレーブへのDBレプリケーションが行われています。 Server2がネットワークから削除され、1日後に再接続します。この後、マスターとスレーブのデータベースに不一致があります。 マスターからスレーブに取得したDBを復元した後も問題が解決しないので、DBを再同期する方法は?

7
Postgres:bashスクリプトから再作成/再入力する前にデータベース全体をクリアします
私はシェルスクリプト(cronジョブになる)を書いています。 1:本番データベースをダンプする 2:ダンプを開発データベースにインポートする 手順1と2の間で、開発データベースをクリアする必要があります(すべてのテーブルを削除しますか?)。シェルスクリプトからこれをどのように行うのが最善ですか?これまでのところ、次のようになります。 #!/bin/bash time=`date '+%Y'-'%m'-'%d'` # 1. export(dump) the current production database pg_dump -U production_db_name > /backup/dir/backup-${time}.sql # missing step: drop all tables from development database so it can be re-populated # 2. load the backup into the development database psql -U development_db_name < backup/dir/backup-${time}.sql

8
タグをデータベースに保存する最も効率的な方法は何ですか?
私のウェブサイトに、stackoverflowで使用するのと同じようにタグ付けシステムを実装しています。私の質問は、タグを保存して検索およびフィルタリングできるようにする最も効果的な方法は何ですか? 私の考えはこれです: Table: Items Columns: Item_ID, Title, Content Table: Tags Columns: Title, Item_ID これは遅すぎるのですか?もっと良い方法はありますか?

20
データベーススキーマを視覚化するための良いツールですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 既存のデータベーススキーマを視覚化するための優れたツールはありますか?必要に応じて、MySQLを使用しています。 私は現在、MySQL Workbenchを使用してSQL作成スクリプトダンプを処理していますが、それは不格好で時間がかかり、手動ですべてのテーブルをドラッグします(それほど遅くなければ大丈夫です)。

11
Sequelize.js:移行と同期の使用方法
プロジェクトを立ち上げる準備ができています。ローンチ後の大きな計画があり、データベース構造が変更される予定です。既存のテーブルと新しいテーブルの新しい列、および既存のモデルと新しいモデルへの新しい関連付けです。 データベースが変更されるたびに消去しても問題ないテストデータしか持っていないため、Sequelizeでの移行にはまだ触れていません。 そのため、現在sync force: true、モデル定義を変更した場合、アプリの起動時に実行しています。これにより、すべてのテーブルが削除され、最初から作成されます。force新しいテーブルのみを作成するオプションを省略できます。しかし、既存のものを変更した場合、これは役に立ちません。 では、マイグレーションを追加すると、どのように機能するのでしょうか?明らかに、既存のテーブル(データが含まれている)を消去したくないのでsync force: true、問題外です。アプリの展開手順の一部として開発を支援した他のアプリ(Laravelおよびその他のフレームワーク)では、migrateコマンドを実行して保留中の移行を実行します。しかし、これらのアプリでは、最初の移行にはスケルトンデータベースがあり、データベースは開発の初期の段階でした-最初のアルファリリースなどです。そのため、パーティーに遅れるアプリのインスタンスでさえ、すべてのマイグレーションを順番に実行することで、一度にスピードを上げることができます。 Sequelizeでこのような「最初の移行」を生成するにはどうすればよいですか?私が持っていない場合は、アプリの新しいインスタンスにある段階で移行を実行するためのスケルトンデータベースがないか、最初に同期が実行され、データベースがすべて新しい状態になります新しいテーブルなどですが、移行を実行しようとしても、元のデータベースと連続する各反復を考慮して記述されているため、意味がありません。 私の思考プロセス:すべての段階で、最初のデータベースと各移行のシーケンスは、次の場合に生成されるデータベースと同じ(プラスまたはマイナスのデータ)になるはずです。 sync force: true実行されます。これは、コード内のモデル記述がデータベース構造を記述しているためです。したがって、移行テーブルがない場合は、同期を実行して、すべての移行が実行されていなくても、完了とマークするだけです。これは私がする必要があるのですか(方法?)、またはSequelizeはこれを自分で行うことになっていますか、それとも間違ったツリーを吠えていますか?そして、私が適切な領域にいる場合、古いモデル(コミットハッシュによって?または各マイグレーションをコミットに関連付けることさえできる)を考えると、ほとんどのマイグレーションを自動生成するための素晴らしい方法があるはずです。移植性のないgit中心のユニバース)と新しいモデル。構造を比較し、データベースを古いものから新しいものに変換するために必要なコマンドを生成し、戻すことができます。その後、開発者は必要な調整(特定のデータの削除/移行など)を行うことができます。 --initコマンドでsequelizeバイナリを実行すると、空の移行ディレクトリが表示されます。次に走るとsequelize --migrateと、何も含まれていないSequelizeMetaテーブルが作成され、他のテーブルは作成されません。明らかにそうではありません。そのバイナリは、アプリをブートストラップしてモデルをロードする方法を知らないためです。 私は何かを逃しているに違いない。 TLDR:ライブアプリのさまざまなインスタンスを最新の状態にできるように、アプリとその移行を設定するにはどうすればよいですか。

24
2つのテーブルを一緒にマップするテーブルにはどのような名前を付ける必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 この質問を改善する 2つのテーブルがあるとします。 Table: Color Columns: Id, ColorName, ColorCode Table: Shape Columns: Id, ShapeName, VertexList 色を形にマップするテーブルを何と呼ぶべきですか? Table: ??? Columns: ColorId, ShapeId

2
MDFファイルとは?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 8年前に閉鎖。 この質問を改善する これは、一種の「組み込み」データベースのようなものですか?組み込みデータベースを含むファイル?
137 mdf  sql-server  database  file 

7
SQL Serverデータベースで最大のオブジェクトを見つける方法は?
SQL Serverデータベースで最大のオブジェクトを見つけるにはどうすればよいですか?最初に、どのテーブル(および関連するインデックス)が最も大きいかを特定し、次に特定のテーブルのどの行が最も大きいかを決定します(BLOBにバイナリデータを格納しています)。 この種のデータベース分析を支援するためのツールはありますか?または、システムテーブルに対して実行できる簡単なクエリはありますか?

10
エンティティ属性値データベースと厳密なリレーショナルモデルのeコマース
EAV / CRデータベースモデルが悪いと言っても安全です。それは言った、 質問:実行時に変更できるeコマース製品を説明する属性の「クラス」を処理するには、どのデータベースモデル、手法、またはパターンを使用する必要がありますか? 優れたeコマースデータベースでは、オプションのクラスを保存します(テレビの解像度には各テレビの解像度がありますが、次の製品はテレビではなく、「テレビの解像度」がない場合があります)。それらをどのように保存し、効率的に検索し、ユーザーが製品を説明する変数フィールドを使用して製品タイプをセットアップできるようにしますか?顧客が通常はコンソールの奥行きに基づいてテレビを検索することが検索エンジンで判明した場合は、コンソールの奥行きをフィールドに追加し、実行時にテレビ製品のタイプごとに1つの奥行きを追加できます。 優れたeコマースアプリには、一連の製品を表示した後、「ドリルダウン」サイドメニューに「TV解像度」をヘッダーとして表示できるという優れた共通機能があり、上位5つの最も一般的なTV解像度がセットが見つかりました。いずれかをクリックすると、その解像度のテレビのみが表示され、サイドメニューで他のカテゴリを選択してさらにドリルダウンできます。これらのオプションは、実行時に追加される動的な製品属性です。 さらなる議論: 要するに、インターネットやモデルの説明に、次の設定を「劇的に」修正する可能性のあるリンクはありますか? カテゴリテーブルを提案してくれたNoel Kennedyに感謝しますが、必要性はそれよりも大きいかもしれません。以下に別の方法で説明し、重要性を強調します。問題を解決するために視点を修正する必要があるかもしれませんし、EAV / CRに深く入り込む必要があるかもしれません。 EAV / CRモデルに対する肯定的な反応が大好きです。私の仲間の開発者全員が、ジェフリーケンプが以下に触れた内容を述べています。問題は: エンティティは属性を毎週追加および削除します (検索キーワードは将来の属性を指示します) 新しいエンティティが毎週到着します (製品はパーツから組み立てられます) 古いエンティティは毎週消えます (アーカイブされ、人気が低く、季節的) 顧客は2つの理由で製品に属性を追加したいと考えています。 部門/キーワード検索/類似製品間の比較表 チェックアウト前の消費者向け製品構成 属性には、キーワード検索だけでなく、重要性がなければなりません。「ホイップクリームのフロスティング」があるすべてのケーキを比較したい場合は、ケーキをクリックし、誕生日のテーマをクリックし、ホイップクリームのフロスティングをクリックし、ホイップクリームのフロスティングがあることを知っている興味深いケーキをすべてチェックします。これはケーキに固有のものではなく、単なる例です。

20
DBスキーマの変更を追跡するメカニズム[終了]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 DBスキーマの変更を追跡または自動化するための最良の方法は何ですか?私たちのチームはバージョン管理にSubversionを使用しており、この方法でいくつかのタスクを自動化できました(ステージングサーバーにビルドをプッシュし、テスト済みのコードを運用サーバーに展開します)が、データベースの更新は引き続き手動で行っています。コードとDBの更新をさまざまなサーバーにプッシュするバックエンドとしてSubversionを引き続き使用しながら、さまざまな環境のサーバー間で効率的に作業できるソリューションを見つけたい、または作成したいと考えています。 多くの一般的なソフトウェアパッケージには、DBバージョンを検出して必要な変更を適用する自動更新スクリプトが含まれています。これは、(複数のプロジェクト間、場合によっては複数の環境と言語間で)より大きな規模でこれを行うための最良の方法ですか?もしそうなら、プロセスを簡素化する既存のコードはありますか、それとも私たち自身のソリューションをロールするのが最善ですか?以前に似たようなものを実装してSubversionのコミット後フックに統合した人はいますか、それとも悪い考えですか? 複数のプラットフォームをサポートするソリューションが望ましいですが、私たちの作業の大部分はそのプラットフォームで行われるため、Linux / Apache / MySQL / PHPスタックをサポートする必要があります。
135 php  mysql  database  svn  migration 

5
「COLLATE SQL_Latin1_General_CP1_CI_AS」は何をしますか?
以下に示すように、SQLServerにデータベースを作成するSQLクエリがあります。 create database yourdb on ( name = 'yourdb_dat', filename = 'c:\program files\microsoft sql server\mssql.1\mssql\data\yourdbdat.mdf', size = 25mb, maxsize = 1500mb, filegrowth = 10mb ) log on ( name = 'yourdb_log', filename = 'c:\program files\microsoft sql server\mssql.1\mssql\data\yourdblog.ldf', size = 7mb, maxsize = 375mb, filegrowth = 10mb ) COLLATE SQL_Latin1_General_CP1_CI_AS; go …

7
データベースIDの公開-セキュリティリスク?
データベースID(URLなど)を公開することはセキュリティ上のリスクであると聞きましたが、その理由を理解するのに苦労しています。 なぜリスクなのか、なぜそうでないのかについての意見やリンクはありますか? 編集:もちろん、アクセスはスコープされています。たとえば、リソースfoo?id=123が表示されない場合、エラーページが表示されます。それ以外の場合、URL自体は秘密にする必要があります。 編集:URLが秘密である場合、おそらく、有効期間が限定された生成されたトークンが含まれます。たとえば、1時間有効で、一度しか使用できません。 編集(数か月後):私が現在これを好む方法は、IDにUUIDSを使用して公開することです。IDとして(通常は一部のDBでのパフォーマンスのために)連続番号を使用している場合、各エントリのUUIDトークンを代替キーとして生成し、それを公開します。
133 database  security 


11
2つのDjangoアプリ間でモデルを移動する方法(Django 1.7)
したがって、約1年前にプロジェクトを開始し、すべての新しい開発者と同様に、構造にあまり焦点を当てていませんでしたが、Djangoを使用すると、プロジェクトのレイアウト、主にモデルの構造が恐ろしいように見え始めました。 私は主に単一のアプリでモデルを保持しており、これらのモデルのほとんどは独自の個別のアプリにあるはずですが、これを解決して南に移動しましたが、外部キーなどの影響により、トリッキーで本当に難しいことがわかりました。 ただし、Django 1.7と移行サポートが組み込まれているため、これを行うためのより良い方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.