16 KiB
データの操作: 非リレーショナルデータ
![]() |
---|
NoSQLデータの操作 - スケッチノート by @nitya |
講義前クイズ
データはリレーショナルデータベースに限定されません。このレッスンでは、非リレーショナルデータに焦点を当て、スプレッドシートとNoSQLの基本を学びます。
スプレッドシート
スプレッドシートは、セットアップや開始に手間がかからないため、データを保存して探索するための一般的な方法です。このレッスンでは、スプレッドシートの基本的な構成要素、数式や関数について学びます。例はMicrosoft Excelを使用して説明しますが、他のスプレッドシートソフトウェアと比較しても、ほとんどの部分やトピックは似た名前や手順を持っています。
スプレッドシートはファイルであり、コンピュータ、デバイス、またはクラウドベースのファイルシステムのファイルシステムでアクセス可能です。ソフトウェア自体はブラウザベースの場合もあれば、コンピュータにインストールする必要があるアプリケーションやアプリとしてダウンロードする必要がある場合もあります。Excelでは、これらのファイルはワークブックとして定義されており、このレッスンではこの用語を使用します。
ワークブックには1つ以上のワークシートが含まれ、それぞれのワークシートはタブでラベル付けされています。ワークシート内にはセルと呼ばれる長方形があり、実際のデータが含まれます。セルは行と列の交差点であり、列はアルファベット文字で、行は数字でラベル付けされています。一部のスプレッドシートでは、セル内のデータを説明するために最初の数行にヘッダーが含まれています。
Excelワークブックのこれらの基本要素を使用して、Microsoft Templatesの在庫管理に焦点を当てた例を使い、スプレッドシートの追加部分を見ていきます。
在庫管理
"InventoryExample"という名前のスプレッドシートファイルは、在庫内のアイテムをフォーマットしたスプレッドシートで、"Inventory List"、"Inventory Pick List"、"Bin Lookup"という3つのワークシートが含まれています。"Inventory List"ワークシートの4行目はヘッダーで、ヘッダー列内の各セルの値を説明しています。
セルが他のセルの値に依存してその値を生成する場合があります。在庫リストスプレッドシートは、在庫内の各アイテムのコストを追跡していますが、在庫全体の価値を知りたい場合はどうすればよいでしょうか?数式はセルデータに対して操作を行い、この例では在庫の価値を計算するために使用されます。このスプレッドシートでは、"Inventory Value"列に数式を使用して、"QTY"ヘッダーの下の数量と"COST"ヘッダーの下のコストを掛け合わせて各アイテムの価値を計算しています。セルをダブルクリックまたはハイライトすると数式が表示されます。数式は等号(=)で始まり、その後に計算や操作が続きます。
在庫価値のすべての値を合計してその総価値を求めるために、別の数式を使用することもできます。これは各セルを加算して合計を生成することで計算できますが、それは手間のかかる作業です。Excelには関数と呼ばれる、セル値に対して計算を行うための事前定義された数式があります。関数には引数が必要で、これらは計算を行うために必要な値です。関数が複数の引数を必要とする場合、特定の順序でリストする必要があり、そうしないと関数が正しい値を計算できない可能性があります。この例ではSUM関数を使用し、"Inventory Value"の値を引数として使用して、B3(3行目、B列)にリストされている合計を生成しています。
NoSQL
NoSQLは、非リレーショナルデータを保存するさまざまな方法を指す包括的な用語であり、「非SQL」、「非リレーショナル」、または「SQLだけではない」と解釈されることがあります。この種のデータベースシステムは、4つのタイプに分類できます。
キー値データベースは、ユニークなキー(値に関連付けられた一意の識別子)と値をペアにします。これらのペアは、適切なハッシュ関数を使用してハッシュテーブルに保存されます。
出典: Microsoft
グラフデータベースはデータの関係を記述し、ノードとエッジのコレクションとして表されます。ノードは、学生や銀行の明細書など、現実世界に存在するエンティティを表します。エッジは2つのエンティティ間の関係を表します。各ノードとエッジには、それぞれの追加情報を提供するプロパティがあります。
カラム型データストアは、リレーショナルデータ構造のようにデータを列と行に整理しますが、各列は「カラムファミリー」と呼ばれるグループに分けられます。同じカラム内のすべてのデータは関連しており、一つの単位として取得および変更できます。
Azure Cosmos DBを使用したドキュメントデータストア
ドキュメントデータストアは、キー値データストアの概念を基に構築されており、一連のフィールドとオブジェクトで構成されています。このセクションでは、Cosmos DBエミュレーターを使用してドキュメントデータベースを探ります。
Cosmos DBデータベースは「SQLだけではない」という定義に当てはまり、Cosmos DBのドキュメントデータベースはSQLを使用してデータをクエリします。前回のレッスンではSQLの基本を学びましたが、ここではドキュメントデータベースに同じクエリを適用できます。Cosmos DBエミュレーターを使用して、ローカルコンピュータ上でドキュメントデータベースを作成し、探索します。エミュレーターについての詳細はこちらをご覧ください。
ドキュメントはフィールドとオブジェクト値のコレクションであり、フィールドはオブジェクト値が何を表しているかを説明します。以下はドキュメントの例です。
{
"firstname": "Eva",
"age": 44,
"id": "8c74a315-aebf-4a16-bb38-2430a9896ce5",
"_rid": "bHwDAPQz8s0BAAAAAAAAAA==",
"_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"",
"_attachments": "attachments/",
"_ts": 1630544034
}
このドキュメントで注目すべきフィールドは、firstname
、id
、age
です。アンダースコア付きの他のフィールドはCosmos DBによって生成されました。
Cosmos DBエミュレーターを使用したデータの探索
エミュレーターはWindows用はこちらからダウンロードしてインストールできます。macOSおよびLinuxでエミュレーターを実行する方法については、このドキュメントを参照してください。
エミュレーターを起動するとブラウザウィンドウが開き、Explorerビューでドキュメントを探索できます。
一緒に進めている場合は、「Start with Sample」をクリックしてSampleDBというサンプルデータベースを生成してください。SampleDBを展開すると、Persons
というコンテナが見つかります。コンテナはアイテムのコレクションを保持しており、これらはコンテナ内のドキュメントです。Items
の下にある4つの個別のドキュメントを探索できます。
Cosmos DBエミュレーターを使用したドキュメントデータのクエリ
新しいSQLクエリボタン(左から2番目のボタン)をクリックすると、サンプルデータをクエリすることもできます。
SELECT * FROM c
はコンテナ内のすべてのドキュメントを返します。where句を追加して、40歳未満の人を見つけてみましょう。
SELECT * FROM c where c.age < 40
クエリは2つのドキュメントを返します。それぞれのドキュメントのage値が40未満であることに注目してください。
JSONとドキュメント
JavaScript Object Notation (JSON)に慣れている場合、ドキュメントがJSONに似ていることに気付くでしょう。このディレクトリにはPersonsData.json
というファイルがあり、エミュレーターのPersonsコンテナにアップロードできます。Upload Item
ボタンを使用してください。
多くの場合、JSONデータを返すAPIは、直接ドキュメントデータベースに転送して保存できます。以下は別のドキュメントで、MicrosoftのTwitterアカウントからTwitter APIを使用して取得され、Cosmos DBに挿入されたツイートを表しています。
{
"created_at": "2021-08-31T19:03:01.000Z",
"id": "1432780985872142341",
"text": "Blank slate. Like this tweet if you’ve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK",
"_rid": "dhAmAIUsA4oHAAAAAAAAAA==",
"_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"",
"_attachments": "attachments/",
"_ts": 1630537000
このドキュメントで注目すべきフィールドは、created_at
、id
、text
です。
🚀 チャレンジ
TwitterData.json
というファイルがあり、SampleDBデータベースにアップロードできます。別のコンテナに追加することをお勧めします。以下の手順で行えます:
- 右上の新しいコンテナボタンをクリック
- 既存のデータベース(SampleDB)を選択し、コンテナIDを作成
- パーティションキーを
/id
に設定 - OKをクリック(このビューの他の情報は無視して構いません。これはローカルマシン上で動作する小さなデータセットです)
- 新しいコンテナを開き、
Upload Item
ボタンでTwitter Dataファイルをアップロード
いくつかのSELECTクエリを実行して、textフィールドにMicrosoftが含まれるドキュメントを見つけてみてください。ヒント:LIKEキーワードを使用してみてください。
講義後クイズ
復習と自己学習
-
このレッスンではカバーしていない、スプレッドシートに追加されたフォーマットや機能があります。Excelについてもっと学びたい場合は、Microsoftの豊富なドキュメントとビデオライブラリをご覧ください。
-
非リレーショナルデータのさまざまなタイプの特性については、このアーキテクチャドキュメントをご覧ください:非リレーショナルデータとNoSQL
-
Cosmos DBは、ここで説明したさまざまなNoSQLタイプを保存できるクラウドベースの非リレーショナルデータベースです。このCosmos DB Microsoft Learn Moduleでこれらのタイプについてさらに学びましょう。
課題
免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は責任を負いません。