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

特定の状況における要件と制限に最も適合するデータベース製品を決定します。これは一般に、StackExchangeなどのQ&Aフォーラムで簡単に収集できる要件よりもはるかに多くの要件に対する洞察を必要とするアドバイスです。

5
数十億行のデータに最適なデータベースとテーブルの設計[終了]
大量の電気データと温度データを保存および分析する必要があるアプリケーションを作成しています。 基本的には、過去数年間および数万の場所について今後数年間にわたって大量の時間ごとの電力使用量の測定値を保存し、それほど複雑ではない方法でデータを分析する必要があります。 (今のところ)保存する必要がある情報は、ロケーションID、タイムスタンプ(日付と時刻)、温度と電気使用量です。 格納する必要があるデータの量については、これは概算ですが、これらの行に沿ったもの: 20 000以上の場所、1か月あたり720レコード(1時間あたりの測定、1か月あたり約720時間)、120か月(10年前) )そして何年も先。簡単な計算により、次の結果が得られます。 20の000の位置は、720のレコード(10年前)×120ヶ月= X 1つの728 000 000レコード。 これらは過去のレコードです。新しいレコードは毎月インポートされるため、1か月あたり約20 000 x 720 = 14 400 000の新しいレコードになります。 合計ロケーションも着実に成長します。 そのすべてのデータで、次の操作を実行する必要があります。 特定の日付および期間のデータを取得します。日付01.01.2013から01.01.2017の間、および07:00から13:00の間の特定のロケーションIDのすべてのレコード。 特定の日付と時間範囲に対する簡単な数学演算、たとえば、07:00から13:00までの5年間の特定のロケーションIDのMIN、MAX、およびAVG温度と電力使用量。 データは毎月書き込まれますが、何百ものユーザーによって(少なくとも)常に読み取られるため、読み取り速度は非常に重要です。 NoSQLデータベースの経験はありませんが、私が収集したものから、ここで使用するのに最適なソリューションです。最も人気のあるNoSQLデータベースについて読んだことがありますが、それらは非常に異なっており、非常に異なるテーブルアーキテクチャを可能にするため、使用するのに最適なデータベースを決定することができませんでした。 主な選択肢はCassandraとMongoDBでしたが、私は非常に限られた知識しかなく、大きなデータとNoSQLに関しては実際の経験がないため、あまり確信がありません。また、PostreSQLはそのような量のデータを適切に処理することも読みました。 私の質問は次のとおりです。 このような大量のデータにNoSQLデータベースを使用する必要があります。そうでなければ、MySQLに固執できますか? どのデータベースを使用すればよいですか? 特定の期間のデータをすばやく取得および処理するために、日付と時刻を別々のインデックス付き(可能な場合)列に保持する必要がありますか、またはタイムスタンプを単一の列に保持することでこれを実行できますか? ここで時系列データモデリングアプローチは適切ですか?そうでない場合は、適切なテーブル設計のためのポインターを教えてもらえますか? ありがとうございました。

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

6
シングルスレッドデータベースとマルチスレッドデータベースのパフォーマンスについて
H2は、パフォーマンスに関して高い評価を得ているシングルスレッドデータベースです。他のデータベースはマルチスレッドです。 私の質問は、いつマルチスレッドデータベースがシングルスレッドデータベースよりも興味深いものになるのかということです。ユーザー数は?プロセスはいくつですか?トリガーは何ですか?誰もが共有する経験がありますか? 概要 通常のボトルネックはディスクアクセスです SSDは高速ですが、壊れやすい(故障手順は必須です) シングルスレッドシステムでの1つの長いクエリは、他のすべてをブロックします マルチスレッドシステムの構成は難しい場合があります マルチスレッドデータベースは、シングルコアシステムでも有益です。

6
顧客ごとにデータベースを作成すると、どのような問題が発生しますか?
stackoverflowポッドキャストから、Fog CreekはFogbugzの顧客ごとにデータベースを使用していることを覚えています。これは、Fogbugz On Demandサーバーに何万ものデータベースがあることを意味すると思います。 Webアプリの開発を始めたばかりで、同様の問題を解決する必要があります(独自の分離データを持つ多くの顧客)。 顧客ごとにデータベースを使用する場合、どのような問題が予想されますか?どうすれば解決できますか? 私の最初の考え 顧客ごとのデータベースの利点 よりシンプルなデータベーススキーマ シンプルなバックアップ-他の顧客に実際に影響を与えることなく、各顧客を順番にバックアップできます。 特定の顧客データを簡単にエクスポートできます。 キャッシュパフォーマンスの向上-よりアクティブなテーブルの1つへの書き込みは、書き込みを実行した単一の顧客にのみ影響します。 ハードウェア全体で簡単に拡張できます。たとえば、1台から2台のサーバーに移動する必要がある場合、顧客の半分を新しいサーバーに移動するだけです。 欠点 MySQLは5,000個のデータベースに対応できますか?パフォーマンスは低下しますか? スキーマへの変更は、すべてのデータベースに複製するのが難しい場合があります。スキーマのバージョン管理や、データベースをあるバージョンから別のバージョンに移行する方法を理解するスクリプトなど、このための自動化された計画が本当に必要になります。 すべてのお客様に共通することを行うことは、厄介または不可能かもしれません 上記と似ていますが、すべてのお客様に対して実行したい分析は不可能かもしれません。たとえば、すべての顧客の使用状況をどのように追跡する必要がありますか?


4
製品タイプごとに個別のテーブルを作成するかどうか
私はデータベースを設計している最中であり、最初の設計決定について再考しています... 製品タイプは次のとおりです...モデル、部品、交換部品キットおよびオプション。 オプションA(最初の設計):上記の製品タイプ用に別々のテーブルを用意する予定でした。各テーブルでフィールドの約75%が同じになると思います。 それらの間に作成する必要がある関連付けのため、各製品タイプを個別のテーブルとして作成しました。たとえば、モデルには多くのオプションがあり、オプションには多くのモデルがあります。オプションには多くのパーツを含めることができ、パーツには多くのオプションを含めることができます...など... オプションB:個別のテーブルを作成する代わりに、モデル、パーツ、交換パーツキットおよびオプションを含むProductというテーブルを作成できます。モデルやオプションなどを区別するために、typeというフィールドを1つ持つことができます。特定の製品タイプでは、いくつかのフィールドが使用されない(nullのままになる)ことになると思います。私はこれが「ベストプラクティスではない」が出てくる場所だと推測しています。 オプションBは、db設計の複雑さを大幅に軽減します。また、クエリのためにデータを引き出すときに、大量のテーブルを参照することを心配する必要もありません...

4
データベースが3番目の正規形に正規化されているかどうかを確認するツールはありますか?
最近、正規化について学び、新しいスキーマを実装するときにそれがどれほど重要かを理解しました。 データベースが2NFまたは3NFに準拠しているかどうかを確認するにはどうすればよいですか? 手動レビューは確かなオプションですが、ここでは自動化されたツールを探しています。 私は、ポイントアンドクリックツールを探しているのではなく、テーブル3NFを準拠させるために可能な最適化を強調するものを探しています。良いサンプルデータやカラム名のセマンティック分析に基づいた統計を使用するかもしれないと思います。


7
データベースからアプリのデータを更新する唯一の方法はポーリングですか?
アプリケーションは、できるだけデータベースから最新のデータを更新する必要があります。そのような場合、タイマーベースのデータベースの要求(ポーリング)の他に、データを取得する他の方法はありますか? 私はMS SQL Server 2008(および.NETアプリケーション+ Entity Framework)を使用していますが、他の種類のデータベースについても知りたいです。

3
SAN環境でSQLインデックスを最適化することに利点はありますか?
SQLサーバーはSAN上にあります。多数のOLTPデータベースが含まれており、一部には1m以上のレコードを含むいくつかのテーブルがあります。 私たちは、実行されているオラHallengrenの索引メンテナンススクリプトを毎週、そしてそれは、数時間ごとに実行されます。断片化のしきい値に基づいて、スクリプトはインデックスを再編成または再インデックス化します。インデックスの再作成中にログファイルが膨大になり、ログ配布中に帯域幅が過剰に消費されることが確認されています。 次に、ブレント・オザールからの記事があります。彼はSQLインデックスについて心配するのをやめると言っています。 ハードドライブは、同時にドライブリクエストを行っている他のサーバーと共有されるため、ドライブは常にデータを取得するためにあらゆる場所でジャンプします。インデックスの最適化は、無意味な忙しい作業です。 この質問をググリングすると、さまざまな意見につながりますが、ほとんどが短すぎるか弱すぎると思われる議論でサポートされています。暫定的な計画では、メンテナンススクリプトの断片化のしきい値を調整して、インデックスの再作成よりもはるかに頻繁に再編成するようにします。 最終的な判定は何ですか?毎週のメンテナンスジョブの実行に伴う負担を考慮して、SANでSQLインデックスを最適化することは価値がありますか?

2
どのDBMSが超高速読み取りと単純なデータ構造に適していますか?
運用の一環として、多数のファイル/ディレクトリを追跡する必要がある製品を開発しています。アイデアは、統計情報をデータベースに保存し、ブート時に各ファイルのウォッチを作成することです。変更されたファイルは、リモートデータベースへのグループ同期のために(データベース内で)キューに入れられます。それらは優先順位の順に同期され、1から10の間の数値になります。 データベースに関する情報: <100,000エントリの統計情報 起動時にデータベース全体が読み込まれ、ファイルパスのみが必要です キューに入れられたファイルには優先度フィールドがあります(他に何も検索する必要はありません) 挿入が遅い場合があります うまくいくと思うデータベースをいくつか見つけましたが、どちらが最適かはわかりません。 Redis-ファイルパスをキーとして、統計データを値として保存。キューはリストになります MongoDB -Redisよりも多くのクエリオプションがありますが、それでも高速です ここでは、リレーショナルロジックが多すぎず、合計データサイズが大きすぎない(100 MB未満、30 MB未満に近い)NoSQLデータベースが最適なソリューションになると考えています。SQLiteは、インストール可能なアプリケーションに組み込むのに十分なほど単純だと思われるため、SQLiteを検討しました。 これはエンドユーザー向けの分散アプリケーションであり、高負荷サーバーではないため、データベースは多くの同時ユーザーをサポートする必要はありません。ここでの最優先事項は、モデルが最も意味のあるデータベースを見つけることです。 それでは、この状況に最も適したデータベースはどれですか? また、このようなアプリケーションにとってより意味のある他のデータベースはありますか?

2
GISデータ用のPostGISとSQL Server
だから私は最近新しい会社に着手し、顧客にデータを提供するためにPostGISインスタンスを進めたいと強く思っている多くのArcGISユーザーがいます。これについては問題ありませんが、私たちは95%がSQL Server、5%がOracleショップです。現在の内部GISはSQL Serverで実行されており、苦情はまだ聞いていません。 2012年の時点で、SQL Serverの空間/幾何学的機能が大幅に改善されていることは知っていますが、新しいプラットフォームに侵入する価値のあるPostGISのキラー機能はありますか?私はそれを研究しようとしましたが、真に詳細なものを見つけることができません、またはそれは完全に偏っていません。 私は彼らに彼らの仕事を成し遂げるための最高のツールを提供したいだけでなく、私が最初からPostgres / GISを学び、それがそれ自体の全体の旅であるという事実を考慮しなければなりません。

5
Oracleのどの機能が、小規模なプロジェクトにとって魅力的な選択肢ですか?
Oracleのライセンス処理[a](および、程度は低いもののコスト)を考えると、PostgreSQLまたはMySQLよりもOracleを選択する決定要因は何かと常に疑問に思っていました。 私の会社は、ほとんどの場合、専用のDB管理なしでデータベースを実行する単純なWindowsサーバーボックスが1つしかない小規模プロジェクトでも、Oracle(可能な場合はXE)を選択しています。(小さいとは、データが常にOracle XEのかなり小さいサイズの制約に適合することを意味しないことに注意してください。) 私は常にこの選択に疑問を呈してきましたが、少なくとも1つのデータベース製品にしかさらされないという利点があります。 それでも、RDBMSが必要な新しいプロジェクトを考えますが、データベースのプロジェクトと範囲は非常に小さく、単純なWindowsサーバーボックスで実行されるOracleの独自の機能に基づいて(専用の管理はあまり行いません)別のRDBMS? 追加のコンテキスト:データベースの展開の多くは、顧客サイトで「低管理」モードで実行できます。つまり、データベースは一度セットアップされます。サイトでの正しい動作とパフォーマンスに関する初期テストがいくつかあります。この後、データベースは実行されます。定期的な管理は行われていません。何かが壊れている場合にのみ、(専門のDBAではなく)技術者がデータベースをチェックし、何が起きているのかを把握しようとします。バックアップは主にオフラインバックアップとして行われます。一部のプロジェクトでは、顧客はRDBMSが関係していることすら気にしません。彼らは、自分のアプリを機能する(または機能しない)ブラックボックスと見なしています。 [a]:私が仕事をしているところ、収益が少ない場合、地元のOracleの代表者は製品の販売にあまり関心がないので、数名のプロジェクトマネージャーが小規模プロジェクトの適切なライセンスを取得するのに数か月かかりました。

3
ソーシャルネットワーク/ナレッジベースコミュニティ向けのデータベースの提案
夏に始めたい新しいプロジェクトのために、さまざまなデータベースタイプとDBMSを検討しています。 MySQLとpostgreSQLでシステムを構築しましたが、今ではデータベースに関する知識と経験を広げたいと思っています。 私のプロジェクトは一種のソーシャルネットワーク/知識の集合体です。(まだそれを説明する用語を開発していない)。 私が見てきた: Cassandra(独自の種類のクエリ言語を使用); 機能が豊富なコンテンツと高性能なクエリ実行を実現するのに適しているようです。ただし、Java環境を使用する必要があるため、あまり熱心ではありません。Oracleとは何の関係もありません。 MongoDB(noSQLタイプのDBMS); 優れたスケーラビリティ。ただし、ビジネス情報クエリなどの実績のあるSQL言語で既に利用可能なすべての機能を失います。 システムの要件: データテキスト、日付、時刻、xml、小さな整数、ブロブ、 構造/動作:正規化された3NF、非リアルタイム、リレーショナル、スケーラブル、堅牢 環境: unix / linux、JAVAなし、できればCで実行 私が研究すべき他のデータベースシステムを教えてくれないかと思っていました。 Object Relational Databasesも見てきましたが、PHPオブジェクト(PDO)で動作するというアイデアはとても気に入っていますが、パフォーマンスは少し悪いようです。 ここにDBAがいるので、あなたが操作したこれらのシステムに関するフィードバックをいただければ幸いです。 ありがとう

2
ユーザーイベントデータを保存するための適切なテクニック
データベース設計に関しては、ほとんど独学です。私はこの共通の構造に落ち着いているので、この質問を提起していますが、それが最も効率的または「業界標準」の方法であるかどうか疑問に思っています。 私が設計するほとんどのデータベースにはユーザーテーブルがあり、その後、個人の活動は別のテーブルで追跡されます。データベースの美しさはこの種の効率を備えていることを理解していますが、アクティビティテーブルは、定期的に使用するすべてのユーザーから多くのイベントをかなり迅速に収集するため、中程度のユーザー使用量で非常に迅速に巨大なテーブルになります。このように成長させるのはこのベストプラクティスですか?または、テーブルの階層、日付に基づいて、またはユーザーの量ごとに、または他の何かに基づいて異なるテーブルに分割しますか? +--------------------+ +------------------------+ | UserData | | Activity | +-=------------------+ +------------------------+ | ID (auto uint) | <--1-to-many-+ | ID (auto uint) | | UserName (text) | +--> | UserID (uint) | | Email (text) | | Timestamp (time) | | additional info... | | Type (ID to elsewhere) | …

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