web-dev-qa-db-ja.com

大量のセンサーデータのストレージを再設計する

センサーアレイからの気象データを保存するソリューションを実装/再設計する必要があります。アレイは約40のタワーで構成され、それぞれ約10個のセンサーがあり、それぞれが10秒間隔で不定の時間(年)にわたって大気条件をサンプリングします。このタスクのいくつかのアプリケーションと要件は次のとおりです。

  • タワー/センサー構成を管理および取得して、データ分析を理解します。
  • 気象観測のためのセンサーまたは時間間隔によるデータ可視化。
  • モデルとセンサーのパフォーマンスを比較するために、信頼性のある永続的なデータリソース/データセットを顧客に提供します(必要な形式で配信するには、いくつかの後処理が必要になる場合があります)。

:現在のソリューション(5つの塔を持つ概念実証として実装されています)は、データをフラットファイル(1時間に1ファイル)として保存します。

これが将来的にビッグデータの問題になるかどうか当初は確信が持てなかったので、リレーショナルデータベースとNoSQLデータベースの両方についていくつかのソリューションについて調査しましたが、データ管理の専門家ではないため、もう少しガイダンスが必要だと思います。

私が考えたソリューションの1つは、タワー、センサー、タイムスタンプでインデックス付けされたリレーショナルデータベースにデータを保存し、日付でテーブルを分割することでした。

もう1つは、将来のスケーリングに基づいて、MongoDBなどのドキュメントタイプのNoSQLデータベースに保存し、現在のソリューションの構造を模倣することでした。

これらの良いアプローチはありますか?そうでない場合、より良い/推奨されるソリューションは何ですか?また、現在のソリューションを再設計する必要があるでしょうか?フラットファイルを使用する理由は、リレーショナルデータベースではオーバーヘッドがかかりすぎると彼らが信じているということです。もしそうなら、これを回避する方法はありますか?

8
Julia

(a)扱っている情報は、それ自体、非常に貴重な組織リソースであるように見え、(b)データ量はかなりのものになるので、(c)リレーショナル主要なSQLプラットフォームの1つにあるデータベース。

もちろん、非常に一般的な観点から見ると、3つの重要な要素が必要です。

  1. 明確に定義された概念スキーマ。これは、モノのプロトタイプ、つまりエンティティタイププロパティおよび使用しているビジネス環境における関連性の相互関係)(たとえば、あなたが言及しているタワーおよびセンサー)。

    ご存知のように、このポイントはビジネスの専門家との継続的で生産的なコミュニケーションを確立することを伴います。

  2. 適切に列で区切られたを保持する(つまり、数学的関係)により、概念レベルを正確に反映する論理レイアウト名前)} _およびタイプ(つまり、関係属性)および対応するすべての制約は、データがall前の層で決定されたルールに準拠していることを確認します。

    したがって、ここで、リレーショナルモデルの膨大な力が発揮されます(ただし、その利点は、他の抽象化レベルで肯定的な影響を及ぼします)。

  3. 物理の配置。たとえば、動的な論理データ操作操作の実行速度を向上させ、論理制約を保証します。

    リレーショナルモデルは物理データの独立性を提供するので、データベース管理システム(簡潔にするためにDBMS)は、このレベルであらゆる種類の構造を提供でき、インデックスだけでなく、論理定義をサポートできます。主要なSQLプラットフォームの場合、はい、これは、正確には、データベース固有のクエリ傾向に基づいてインデックス付け戦略を設定することを意味し、特定の構成を知らないまま、いくつかの可能な構成に関して非常に興味深い考慮事項を提示しましたこの点に関して具体的なアドバイスを提供することは、正確さと情報の必需品には適していません。

    評価に値するその他の要素には、たとえば、ネットワークインフラストラクチャをアップグレードして帯域幅を増やし、適切なサーバー構成(ハードウェアおよびソフトウェア)を有効にするなどがあります。さらに、開業医が十分な資格を持っている場合に限り、開業医は選択したDBMSのソースコードを変更します(当然、オープンソース環境でより実現可能です)。

このように、強調する次の側面

  • タワー/センサー構成を管理および取得して、データ分析を理解します。
  • 気象観測のためのセンサーまたは時間間隔によるデータ可視化。
  • モデルとセンサーのパフォーマンスを比較するために、信頼性のある永続的なデータリソース/データセットを顧客に提供します(必要な形式で配信するには、いくつかの後処理が必要になる場合があります)。

たとえば、非常に意味のある形式で情報を取得するためのクエリを簡単に宣言できるため、適切に対処されます。たとえば、関連するデータを取得できます

  • SensorNumber 1750で識別されるセンサー、TowerNumber 31で識別されるタワーに、日付1 June 2017と日付27 June 2017の間にインストールされます

さらに、(1)リレーショナルデータベースのデータは、リレーショナル代数に基づく演算を使用してセットの観点から論理的に管理され、(2)異なるSQLエンジンset processingに対して物理的に最適化されています(他よりもいくつか)。たとえば、

  • セットaとセットbを比較します。
  • セットcとセットdを結合します。
  • セットの制限を通じてsub set fを取得しますe;
  • nセットの交差からnサブセットを生成します。
  • プロジェクトn属性セットf
  • セットxとセットyの和集合の結果であるセットzから情報を取得します。
  • 等々。

baseテーブル(CREATE TABLE … ( … );ステートメントで宣言されたテーブル)だけでなく、_でも操作できるため、データ操作の可能性は実際に巨大です-リレーショナルパラダイムの比類のない多様性を示しています-得られたもの(SELECT …;演算で表現されたもの。VIEWsとして修正されることもある)。言い換えると、(i)newデータ構造を(ii)以前のデータ構造で動作している(iii)単一の基礎となる関係構造、つまり数学的関係に基づいて表現できます。

明らかに、リレーショナルデータベースのベーステーブルと列の配置は進化する可能性があり、(a)新しいベーステーブルまたは列は、(b)新しいエンティティタイプまたはエンティティタイププロパティを追跡することが価値があると見なされたときに、データベースに組み込むことができます。適切なビジネスコンテキスト。言い換えると、どちらでもない初期構造でもリレーショナルデータベースの開始制約は、静的または不変であることが期待されます。さらに、最初から適切に構成されたデータベースは、新しい情報要件が発生したときに変更するのがはるかに簡単になる傾向があります。

上記の考慮事項に同意して、該当するセットの論理形式は、データベースの論理レベルで宣言的に作成する必要があります。セットのグラフィカルまたはプレゼンテーショナルフォーマット(たとえば、使用されているカラーリングまたはフォントフェース)は、1つまたは複数のアプリケーションプログラムのコードを使用して処理する必要があります(はい、ほとんどそのようなセットのアクセスと表示をユーザーフレンドリーにするために、手続きの方法で、おそらくオブジェクト指向のフレームワーク、HTMLなどの助けを借りて)。もちろん、データベースに接続するレポートソフトウェアを使用することもできます。

関連性のあるデータベースのモデリング

センサーデータ(他の機能の中でも、通常時系列の形の情報が含まれる)を扱う場合、複数のデータベースの設計と全体的な管理に役立つことがあります。 @ PerformanceDBA による2つの例外的な回答に含まれる原則と題された質問への回答:

リレーショナル、フラットファイル、NoSQLのアプローチ

リレーショナルモデルDr。Edgar Frank Codd は、1970年に発表されましたが、問題に対処するために(ロジックと集合論に基づく)本当に最もモダンでエレガントな方法であり続けていますデータ管理の。個別のSQL DBMSは、リレーショナル理論で提案されたシステムにとって最も人気のある近似です(ただし、完全に準拠しているわけではありませんが、それでも非常に強力です)。レベルのメカニズム)今でも数十年。さらに、メインのSQLプラットフォームはもちろん、最新のストレージ(ハードドライブなど)および処理(CPUなど)のテクノロジーを非常に効率的に使用できます(使用できるようになります)。

強力なDBMSで構築された場合、概念、論理、および物理レベルで適切に設計されたリレーショナルデータベースは、(1)信頼でき、(2)提供する自己完結型、自己記述型、および自己保護型の資産になります。高速応答、ご存じのとおり、非常に重要な2つの側面。

フラットファイル

したがって、続く主張

フラットファイルを使用する理由は、リレーショナルデータベースはオーバーヘッドがかかりすぎると彼らが信じているということです。

フラットファイルアプローチは次のようになるため、簡単に破棄できます。

  • 科学前;
  • 大量のデータに最適とはほど遠い。
  • 面倒すぎる;
  • アプリケーションプログラムに依存します(適切なDBMSがネイティブに提供するほとんどの機能を手動で実装する必要があります)。
  • そのパフォーマンスは簡単に損なわれます。
  • 等.

一方、控えめに言っても、リレーショナル方式は「はるかに便利」です。

  • 大きなスケーラビリティを提供します(物理レベルに依存しないため、必要に応じて、基礎となる物理メカニズムを強化できます)。
  • abstractオペレーションを介して)データを操作するシンプルなスタイルをもたらし、
  • 複数のアプリケーションプログラム同時に(たとえば、1つ以上のモバイルアプリ、1つ以上のWebアプリ、1つ以上のデスクトップアプリなど)で動作する可能性があります。

ただし、フラットファイルの利用を選択する場合は、DBMSではない(そしてそのように設計されていない)にもかかわらず、対処するための便利なリソースを提供する Awk のような堅牢なユーティリティの採用を評価する必要があります。 ファイルレコードフィールドなど。これの詳細については、 The GNU Awkユーザーガイド を参照してください。件名。

NoSQL

「非構造化データ」および関連用語

彼らの宣伝によると、NoSQL DBMSの使用の最初の正当化は、それらが「非構造化データ」の処理を含むビジネスドメインで使用されることを意図しているため、質問が必要です:

  • 「非構造化データ」とはどういう意味ですか?

その点で、データはその性質上、is構造化されていると言う必要があります。それが構造を持たない場合、それは意味のないものになるため、そのようなものは(i)notはデータと見なされ、(ii)notは管理する価値があります。したがって、「非構造化データ」は矛盾した不幸な表現です。

これらのコンテキストの他のフレーズは、「半構造化データ」です。このフレーズは、「一部」または「半分」で構成されたデータが存在することを示唆しているため、前の段落に従って、構成された「一部」または「半分」のみが実際のデータになり、残りの「部分」は実際のデータになります。または「半分」は単に形のないものです。これは、構造が欠けており、データと呼ぶことができないためです。

さらに別の悲しいことに、NoSQLマーケティングで見られる典型的な用語は「多態性データ」です。上記の用語が「多くの異なる形式のデータ」のようなものを表す場合、それは実際には通常のデータであり、いつものように多くの異なる形式で発生します。また、多くの異なる形式があるため、多くの異なる構造体が表示されるため、この「種類の」データについて特別なことは何もありません。

言うまでもなく、データとデータ構造は常に変更の影響を受けやすいため、この点でも異常はありません。

データ量の増加

明らかに、コンピューター化されたシステムによって管理される情報の量は、年を追うごとに確実に増加し、新しいシステムが毎日構築されているため、時間の経過とともに指数関数的に増加し続けますが、それは関係ありません。情報の構造それ自体

丸められた理論的基盤の欠如

NoSQLシステム(document-とgraph-ベースの異なるクラスがあるなど)の重大な制限は、現在の製品がどれも販売されていないことです。 ” —は、適切なDBMSの3つの最も重要な要素、つまりデータ(a)定義、(b)操作、および(c)狭窄のためのツールのすべてをサポートする健全な理論的基盤を(もしあれば)持っています。したがって、NoSQLのアプローチは実際には、データの処理がアドホックで実行され、不必要な複雑さを伴う不健全なアクションで古代の時代への回帰を示唆しています。

現在、グラフシステムは「NoSQL」の範囲に含まれています。これらのソフトウェア製品は、2異なる構造:ノードおよびリレーションシップに対する操作により、データを管理することを勧めます。これも、「非構造化データ」—そして、それらは数学的な基盤を持っているため、「NoSQL」グループで際立っています。ただし、グラフ製品はnetworkプラットフォームにかなり似ており、数十年前からobsoleteとみなされています(明らかな欠点は、上記のように、データ表現に2つの構造が必要であることです)一方、リレーショナルDBMSは情報の原則に従って1つだけ必要です)。

さまざまなNoSQLシステムの作成がSQL DBMSの大部分の起源と比較して年代的に新しい場合でも、NoSQL製品の基礎となる概念のほとんどは、実際にはプリミティブです。

NoSQLプログラムは、主に次のようなシナリオで使用する必要があります。

  • iT担当者は、関心のあるデータの構造を(たとえば、その複雑さのために)決定する(または適切に決定する)ために必要な技術的スキルを欠いている。および/または
  • 組織は現在のスタッフに適切な教育とトレーニングを提供する余裕がない、または必要な教育とトレーニングを持っている新しいスタッフを雇うことができない。および/または
  • データの整合性と一貫性が特に重要ではない場合。および/または
  • 関連するデータを、高精度を要求するミッションクリティカルなシステムのデータとブレンドする場合は、期待できません。

ただし、問題のデータの構造が定義されていない場合でも、before関係するシステムの作成では、1人以上の人が必然的に

  • 前述の構造を発見し、
  • 周囲の「干渉」をすべて破棄し、
  • 適切なデータを収集してリンクする

プロジェクトに投資されたすべてのリソースを最大限に活用できるようにするために、データベースとアプリが本稼働段階に入り、データ構造の描写はバイパスされるため、遅かれ早かれ実行する必要があります。

したがって、NoSQLの方法を採用することは可能ですが、前述のすべての要因を確実に考慮する必要があります。

最も堅牢な方法

対照的に、ビジネス環境の情報要件にリレーショナルな方法で(つまり、一般的なパラダイムを後ろにして)アプローチすると、(1)データを最初から自然な構造で管理できるため、他のデータソースとの統合が容易になります。また、(2)前のセクションで説明したように、堅牢な科学的根拠を持つ単一の機器の操作によって、信頼できる新しい構造を作成することもできます。

問題のシナリオの説明によると、関連する組織のニーズの観点から特定の構造をすでに特定しているため、ビジネスドメインの専門家に検証を依頼することをお勧めします。続いて、(i)上記の構造とそれぞれのデータを処理するためにリレーショナルモデルによって提供される構成(関係、制約、および操作)を利用することをお勧めします。現在の要求に対応でき、将来のスケーラビリティを提供する非常に効率的な物理ツールを提供します。

11
MDCCL