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

Relational Database Management System。広く使用されているタイプのデータベース管理システムであり、コアとなる運用原則として結合を広範囲に使用することを特徴としています。

5
どのデータベースが何十億レコードのストレージを処理できますか?
私たちは、膨大な量を収集するnetflowデータをキャプチャして分析するツールの開発を検討しています。毎日約14億のフローレコードをキャプチャします。これは、json形式では次のようになります。 { "tcp_flags": "0", "src_as": "54321", "nexthop": "1.2.3.4", "unix_secs": "1352234521", "src_mask": "23", "tos": "0", "prot": "6", "input": "105", "doctets": "186", "engine_type": "0", "exaddr": "2.3.4.5", "engine_id": "2", "srcaddr": "9.8.7.6", "dst_as": "12345", "unix_nsecs": "752265174", "sysuptime": "2943529544", "dst_mask": "24", "dstport": "80", "last": "2943523241", "srcport": "52672", "dpkts": "4", "output": "111", "dstaddr": "6.5.4.3", "first": "2943517993" …

6
NoSQLと従来のRDBMSの違いは何ですか?
NoSQLと従来のRDBMSの違いは何ですか? 過去数か月間、NoSQLは技術ニュースで頻繁に取り上げられてきました。従来のRDBMSと比較して最も重要な機能は何ですか?差異はどのレベル(物理的、論理的)で発生しますか? NoSQLを使用するのに最適な場所はどこですか?どうして?


5
更新する値をテーブルに保持しても大丈夫ですか?
私たちは、基本的にカードとその残高、支払いなどに関するデータを保持するプリペイドカードのプラットフォームを開発しています。 これまでは、アカウントエンティティのコレクションを持つカードエンティティがあり、各アカウントには、すべての預金/引き出しで更新される金額があります。 現在、チーム内で議論が行われています。誰かがこれがCoddの12の規則を破り、支払いごとに値を更新するのは面倒だと言っています。 これは本当に問題ですか? もしそうなら、どうすれば修正できますか?

3
循環外部キー参照を持つことは許容できますか?
外部キーフィールドの2つのテーブル間で循環参照を使用することはできますか? そうでない場合、これらの状況をどのように回避できますか? もしそうなら、どのようにデータを挿入できますか? 以下は、(私の意見では)循環参照が受け入れられる場所の例です。 CREATE TABLE Account ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50) ) CREATE TABLE Contact ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50), AccountID INT FOREIGN KEY REFERENCES Account(ID) ) ALTER TABLE Account ADD PrimaryContactID INT FOREIGN KEY REFERENCES Contact(ID)

2
MongoDBとPostgreSQLを一緒に使用する
私の現在のプロジェクトは、基本的に工場文書管理システムの実行です。 とはいえ、いくつかのしわ(驚き、驚き)があります。いくつかのしわはプロジェクトにかなり固有のものですが、標準的な答えを持たない(とにかく見つけることができる)一般的な観察と質問がいくつかあり、それはより広い問題領域に適用できると思います。ここにはたくさんあり、StackExchangeのQ&A形式に適しているかどうかはわかりませんが、a)答えられる質問であり、b)コミュニティに役立つほど具体的でないと思います。私の考慮事項のいくつかは私に固有のものですが、この質問は、SQLとNoSQLとその両方を決定することに直面している人にとって役に立つと思います。 背景: 作成しているWebアプリには、本質的に明らかにリレーショナルなデータと、ドキュメント指向のデータが含まれています。ケーキを持って食べたいです。 TL; DR:以下の#5は匂いテストに合格すると思います。あなたは?単一のアプリケーションでSQLとNOSQLをこのように統合した経験はありますか?このクラスの問題に対するすべての可能なアプローチを以下にリストしようとしました。有望な代替案を見逃していませんか? 複雑さ: 文書には多くの異なるクラスがあります。要件はすでに何十もの異なる文書を要求しています。この数は増えるだけです。可能な限り最良のケースは、ドメイン専門家がDBAやプログラマの介入なしに新しいドキュメントクラスの追加を処理できるように、単純なドメイン固有の言語、コード生成、および柔軟なスキーマを活用できるケースです。(注:Greenspunの第10規則を順守していることを既に認識しています) 以前の正常な書き込みの整合性は、プロジェクトの中心的な要件です。データはビジネスに不可欠です。書き込みに関するACIDの完全なセマンティクスは、正常に書き込まれたものが書き込まれたままであれば、犠牲になる可能性があります。 文書自体は複雑です。特定のケースのプロトタイプドキュメントでは、ドキュメントインスタンスごとに150以上の個別のデータを保存する必要があります。病理学的症例は1桁悪化する可能性がありますが、確かに2ではありません。 単一クラスのドキュメントは、後の時点で更新の対象となる移動ターゲットです。 Djangoをリレーショナルデータベースにフックすると、無料のものが好きです。django-nonrelフォークを使用するために2つのDjangoバージョンに戻る必要なく、景品を保持したいと思います。1.3にダウングレードするよりも、ORM全体をダンプする方が望ましいです。 本質的には、リレーショナルデータ(ユーザー、グループなどの典型的なWebアプリのもの、および複雑なクエリをリアルタイムで切り刻むことができる必要があるドキュメントメタデータ)とドキュメントデータ(たとえば、参加やクエリに関心のない数百のフィールド-データの唯一のユースケースは、入力された単一のドキュメントを表示することです。 私は私の好みの方法で健全性チェック(あなたが私の投稿履歴をチェックする場合、私はDBAではないという事実についてかなり明確です)を行い、他の解決のために出会ったすべてのオプションを列挙したかったですリレーショナルデータと非リレーショナルデータの両方を含む、ほぼ同様の問題。 提案されたソリューション: 1.ドキュメントクラスごとに1つのテーブル 各ドキュメントクラスは、すべてのメタデータとデータの列を持つ独自のテーブルを取得します。 利点: 標準のSQLデータモデルが使用されています。 リレーショナルデータは可能な限り最適な方法で処理されます。必要に応じて後で非正規化します。 Djangoのビルトイン管理インターフェイスはこれらのテーブルを内省することに慣れており、ORMは100%のデータをそのまま使用できます。 短所: メンテナンスの悪夢。数千(数十?)の列を持つ数十(数百?)のテーブル。 どのテーブルに書き込むかを正確に決定するアプリケーションレベルのロジック。テーブル名をクエリのパラメータにすることは悪臭を放ちます。 基本的に、すべてのビジネスロジックの変更にはスキーマの変更が必要です。 病理学的なケースでは、複数のテーブルにまたがる単一のフォームのデータをストライピングする必要があるかもしれません(参照:PostgreSQLテーブルの列の最大数は?)。 私たちはおそらく、人生と私たちを憎むことになるであろう本当の、神に正直なDBAを見つけるために行く必要があるでしょう。 2. EAVモデリング フィールドテーブルのみがあります。エンティティー属性値のモデリングはすでに十分に理解されています。完全を期すために含めました。2013年に開始される新しいプロジェクトは、意図的にEAVアプローチを採用するとは思わない。 利点: モデル化が簡単。 短所: クエリがより困難です。 DBレイヤーには、1つのアプリレベルのオブジェクトを構成するものを簡単に表現することはなくなりました。 DBレベルの制約チェックが失われます。 1つのテーブルの行数は、100〜1000倍の速度で増加します。おそらく将来の問題点はパフォーマンス面です。 限られたインデックス付けが可能。 ORMに関する限り、DBスキーマは無意味です。Webアプリのものを含むバッテリーは保持されますが、カスタムデータモデルにはカスタムクエリが必要になります。 3. PostgreSQL hstoreまたはjsonフィールドを使用します これらのフィールドタイプのいずれかは、リレーショナルDBのコンテキスト内でスキーマレスデータを格納するためのトリックを行います。私はすぐにこの溶液にジャンプしない唯一の理由は、(バージョン8.4それほどではないに導入された比較的新しいですその新しい)、私はそれにゼロ以前のエクスポージャーを持っていると私は疑わしいです。Mongoはドキュメント間の参照を処理できますが、簡単に正規化されたすてきなデータをすべてMongoに投げるのが不安になるのとまったく同じ理由で、間違っていると思います。 利点: Django ORMと組み込みの認証およびセッション管理の利点を活用できます。 すべてが、以前に他のプロジェクトで正常に使用した1つのバックエンドに残ります。 短所: 個人的にはこれに関する経験はありません。 あまり使用されている機能のようには見えません。NOSQLソリューションを検討している人々にはかなり推奨されているように見えますが、選択されているという証拠はあまりありません。これは、私が何かを見逃しているに違いないと思うようにします。 …

4
RDBMSで「インデックス」とはどういう意味ですか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 8年前に閉鎖されました。 私はほとんどの開発者が行うようにインデックスを使用します(主に...よく!インデックス)が、インデックスを使用してデータベースを最適化する微妙な方法がたくさんあると確信しています。DBMSの実装に固有のものかどうかはわかりません。 私の質問は次のとおりです。インデックスの使用方法の良い例は何ですか(基本的な明らかな場合を除く)。また、テーブルにインデックスを指定すると、DBMSはどのようにデータベースを最適化しますか?
21 index  rdbms 


2
NoSQLとRDBMSは一緒ですか?
NoSQLデータベースにデータを記録し、それをRDBMSに変換するための優れたソリューションがあるかどうか疑問に思っていましたか? たとえば、セッションログなどの一部のデータをすばやくキャプチャしたいが、それらのレポートを後で作成できるようにする場合です。 私のお気に入りのデータベースはPostgresなので、もしあなたの答えがPostgresに関連しているなら素晴らしいでしょう。
13 nosql  rdbms 

1
Oracle Databaseのコミットvs高速コミットvsコミットアウト
Oracle Databaseに関連するこれら3つの用語の違いについて、誰かが私の理解を検証できるかどうか疑問に思っていました。 多くの情報源はこれらの用語を混同し、それらを詳細に説明していないため、情報を見つけるのは少し難しいものでした。 私が収集したものから: コミットと高速コミットはまったく同じです。すべてのコミットは高速コミットです。 基本的に、高速コミットは、元に戻す/ロールバックセグメントヘッダーのトランザクションテーブルのフラグを更新するだけで、トランザクションがコミットされたことを示します。ただし、実際のブロックは再検討されません。つまり、データブロックのヘッダーにある対象トランザクションリスト(ITL)のUNDOバイトアドレス(UBA)は、対応するUNDOセグメントのトランザクションテーブルを指します。さらに、対応する行のロックバイトは解放されず、ITLのロックカウントは変更されません(行はロックされたままです)。 コミットクリーンアウトでは、ブロックが再訪され、ITLがコミットSCNで更新されます。ただし、ITLのロックカウントと各行に格納されているロックバイトはまだ更新されず(高速コミットのように行はロックされたままです)、ブロックが変更されても、REDOは生成されません。 正常にコミットされた(==高速コミットされた)ブロックは、次にタッチされたときに遅延ブロッククリーンアウトを実行します(そしてREDOを生成します)。 コミットクリーンアウトが行われたブロックは、次にタッチされたときに遅延ログブロッククリーンアウトが行われます(そして、REDOが生成されます)。 誰かがこれらのポイントを検証できることを願っています!ありがとう!

3
MySQLを使用して定期的に100 GB以上のテーブルで多方向結合を行いますか?
背景: 適切にスケーリングできるようにしたいWebアプリケーションを作成しました。私はGoogleやTwitterではないことを知っていますが、私のアプリはユーザーごとにかなり大量のデータを使用するため、かなり高いデータ要件があります。後ですべてを再構築する必要なく、適切に拡張できるように準備したいと思っています。 私はデータベースの専門家ではなく、ソフトウェア開発者だと思っています。それが私がここに投稿する理由です。うまくいけば、より多くのデータベースの専門知識を持つ誰かが私に助言を与えることができます。 比較的多数のユーザーがいるが、Facebookの番号のようなものは何もないので、私は次のようなDBを期待しています。 1つの「大きなテーブル」: 2億5000万件のレコード 20カラム 約100 GBのデータ インデックス付きのbigint(20)外部キーがあります インデックス付きのvarchar(500)string_id列があります int(11)の「値」列があります 他の4つのテーブル: それぞれ1,000万件のレコード それぞれ約2〜4 GBのデータ これらの各テーブルには4〜8列があります 1つの列はdatetime date_createdです 1つの列はvarchar(500)string_id列です これらの各テーブルから1つまたは2つの列が結合で選択されます これらのテーブルの1つは平均を格納するために使用されます-そのスキーマはbigint(20)id、varchar(20)string_id、datetime date_created、float average_valueです。 私がやりたいこと -2つの比較的高価なクエリ: 新しい平均値を計算します。 外部キーを使用して、大きなテーブルから最大数百万の個別のレコードを選択します。 string_idでグループ化して、新しい平均を計算します。 結果を平均表に挿入します。 現在作成されているように、このクエリは2つの結合を使用します。 ユーザーにサービスを提供するための非正規化された読み取り専用レコードを作成します。 外部キーを使用して、大きなテーブルから1,000〜40,000レコードのいずれかを選択します。 文字列id列を持つ最新のレコードで他の4つのテーブルのそれぞれと結合します。 結果を非正規化テーブルに挿入します。 これらのレコードは、フロントエンドがユーザーに情報を表示するために使用されます。 現在作成されているように、このクエリは4つの結合を使用します。 ユーザーからのリクエストを処理するリアルタイムのフロントエンドDBサーバーに結果をプッシュするバッチバックエンドデータベースで、これらの高価なクエリをそれぞれ実行する予定です。これらのクエリは定期的に実行されます。頻度はまだ決めていません。平均的なクエリは、おそらく1日に1回行うことができます。非正規化クエリは、より頻繁に、おそらく数分ごとに実行する必要があります。 これらの各クエリは現在、MySQLの「ビッグテーブル」に100Kレコードのデータセットを持つ非常にローエンドのマシンで数秒で実行されます。私のスケーリング能力とスケーリングのコストの両方が心配です。 質問: このアプローチは健全に見えますか?全体像の観点から、明らかに問題はありますか? RDBMSは適切なツールですか、それともHadoopファミリのような他の「ビッグデータ」ソリューションを検討する必要がありますか?データは構造化されており、リレーショナルモデルにうまく適合しているため、RDBMSを使用する傾向があります。ただし、ある時点で、RDBMSを使用できなくなる可能性があるというのが私の理解です。本当?このスイッチが必要になるのはいつですか? うまくいきますか?これらのクエリは妥当な時間内に実行できますか?クエリ#1はおそらく数時間待つことができますが、クエリ#2は数分で完了するはずです。 ハードウェアの観点から何を考慮すべきですか?RAMとCPUのボトルネックになる可能性があるのは何ですか?RAMにインデックスを保持することが重要だと思います。他に考慮すべきことはありますか? ある時点で、おそらくデータを分割して複数のサーバーを使用する必要があります。私のユースケースはすでにそのカテゴリにあるように見えますか、それともしばらくの間、1台のマシンを垂直方向にスケーリングできますか?これはデータの10倍で動作しますか?100倍?
11 mysql  rdbms 

5
楽観的ロックが悲観的ロックよりも速いのはなぜですか?
どちらの形式のロックでも、レコードが別のプロセスで現在使用されている場合、プロセスはレコードの正しいコピーを待機します。悲観的ロックの場合、ロックメカニズムはDB自体(ネイティブロックオブジェクト)から取得されますが、楽観的ロックの場合、ロックメカニズムは、レコードが「古くなった」かどうかを確認するタイムスタンプのような行バージョン管理の一種です。 ただし、どちらも2番目のプロセスがハングします。だから私は尋ねます:なぜ楽観的ロックは一般的に悲観的ロックよりも速く/優れていると考えられていますか?また、楽観よりも悲観が優先されるユースケースはありますか?前もって感謝します!

2
Oracleの更新をより高速に実行するように変更する方法は?
私はこのクエリを持っています: UPDATE ( SELECT h.valid_through_dt, h.LAST_UPDATE_TMSTMP FROM ETL_FEE_SCH_TMP d, FEE_SCHEDULE_HISTORICAL h WHERE h.FUND_ID = d.FUND_ID AND h.FEETYPE_NAME = d.FEETYPE_NAME AND h.BREAKPOINT_TYPE = d.BREAKPOINT_TYPE AND h.BREAKPOINT_QTY = d.BREAKPOINT_QTY AND h.LOW_BREAKPOINT_AMT = d.LOW_BREAKPOINT_AMT AND h.VALID_THROUGH = TO_DATE ('31-DEC-9999', 'dd-mon-yyyy') AND h.universe = 'DC' AND h.universe = d.universe AND EXISTS ( SELECT 1 …
8 oracle  rdbms 

9
オンラインゲーム(数千人のプレイヤー)に十分な速度のDBMSはどれですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 私は現在、MMORPGゲームを作成しています。これは、同時に数千人のプレイヤーがオンラインでいる可能性があります(おそらくそうではありません。希望的な考えだけです)。最初にMySQLを使用したかったのですが、この規模では十分に高速ではないと聞きました。 どのDBMSが十分に高速ですか?SQL Serverはどの程度似ていますか(私は学校でSQL Serverを学びました)。

1
リレーションは、大きくて非効率的なテーブルよりも遅いですか?
私の仕事では、「コンピューターの処理能力のために」最初の正規形(列全体でグループを繰り返す、空/ null値を使用)に何度も違反するように依頼されました。簡単に言えば、「学生」テーブルには、私の提案ではなく、少なくとも8つの空のフィールド(たとえば、telephones:telephone1、telephone2、telephone3 ...)が必要です。電話番号(およびその他のメタデータ)を保持する「telephone」テーブル外部キーは学生ID番号です。私の上司は、リレーションを使用する代わりに、「CPUサイクルが少なく、それがWebプラットフォームで問題になる」ため、それらをそのように保存する方が良いと述べています。最悪の場合、それはごくわずかです。 その例では、リレーションの使用(テーブルが中規模のWebアプリケーションの多くのレコードで満たされていると想定)は、そのようなテーブルスキーマを使用するよりも著しく遅いですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.