NTT DATA REAL INTELLIGENCE with Agilityのビッグデータソリューション
  • Customer Stories
  • Solutions
    • Solution一覧
    • ユースケース
  • Column
  • Our Thought
  • Contact
English
EnglishNTT DATA Trusted Global Innovator
02

MarkLogic ColumnXMLやJSONの登録と検索

MLについて
馬場 雅大
目次 [
表示非表示
]
  • はじめに
  • MarkLogicに格納できるデータ
  • XMLとJSON
  • データの挿入と検索
  • まとめ

はじめに

本稿では、MarkLogicに格納できるデータを紹介し、実際にクエリコンソール上で挿入と検索を行う例をご紹介します。

MarkLogicに格納できるデータ

MarkLogicはXMLデータベースとしてスタートしましたが、現在のバージョン11では以下のようなデータを格納することができます。

  • XML
  • JSON
  • テキストファイル
  • バイナリ
  • Triple

今回は、このうちXMLデータとJSONデータの2つに焦点を当ててご紹介します。

XMLとJSON

XML (Extensible Markup Language)とはタグ付け言語の略です。テキストベースとデータ交換用フォーマットの1つであり、HTMLのようなタグでデータを囲んだマークアップ言語の1つです。

この<birth>2000</birth>全体を要素、2000というデータは要素値といいます。また<name id="01">Yamada</name>要素の中にあるidのことを属性、"01"のことを属性値と言います。タグに何らかの接頭辞(例えば、<test:name>のtest)がついているものがあります。これは名前空間といいます。

JSON (JavaScript Object Notation) もテキストベースのデータ交換用フォーマットの1つです。表記法はJavaScriptのオブジェクト記法に依っています。

XMLの要素<birth>2000</birth>に対応するのは、JSONのオブジェクト"birth": 2000です。先頭部分にオブジェクト名があり、コロンで連携した先に値が入ります。

JSONはマークアップ言語ではないことから、XMLに比べて軽量な構造を持つと言えます。また一般的には、JSONデータからXMLデータに変換することもできます。一方で名前空間や属性に直接対応するものがないため、XMLデータからJSONデータへの変換の際には注意が必要です。

データの挿入と検索

データの挿入と検索を確かめるために、クエリコンソールを使ってクエリを実行してみます。MarkLogic端末に向けてWebブラウザからポート8000番にアクセスします。MarkLogicがインストールされた端末で実行する場合は、http://localhost:8000をWebブラウザのURLに指定します。アカウント情報を求められますが、MarkLogicをインストールする時に作った管理者アカウントで構いません。

①XMLデータをXQueryで挿入する。

先に例を挙げた「会員id=01、2000年生まれの大阪在住Yamadaさん」を挿入するクエリを作成します。挿入するためにはxdmp:document-insert関数を用います。クエリコンソールのDatabaseをデフォルトで存在する「Documents」、Query Typeを「XQuery」として中部のテキストフィールドに貼り付けて実行します。この時オプションとしてコレクションを設定していますが、後ほど検索をするときに説明します。

②JSONデータをJavaScriptで挿入する。

次に「会員id=01、2000年生まれの東京在住Tanakaさん」のデータを挿入します。

MarkLogicではXQueryと等価なJavaScriptでのプログラミングも可能です。JavaScriptはJSONとの親和性が高いので、今度はJavaScriptで挿入クエリを書いてみます。

ここでは、XMLで属性値だったidを新たなオブジェクトとしています。クエリコンソールのQuery Typeを「JavaScript」として中部のテキストフィールドに貼り付けて実行します。

最後にMarkLogicの検索関数cts:searchを用いて検索を行った例を示します。

顧客データのうち、生年が2000年のものを返す。

今回のデータでは「顧客データ」という検索範囲を示すためには、挿入先URIの「/customer/」を検索条件に用います。このとき用いる検索条件関数はcts:directory-queryです。次に生年はcollectionにある「/my/additional/collection/birth_2000」を用いることとします。これにはcts:collection-queryを用います。2つの検索条件はAND条件なので、cts:and-queryで1つにします。

クエリコンソールのQuery Typeを「XQuery」として以下のクエリを貼り付けて実行してみたら、画面の下部に挿入した2個のデータが出ることを確認します。

顧客データのうち、名前がYamadaのものを返す。

名前に関してはcollectionを設定していないため、データの中身のname要素まで見に行くことになります。このときに用いるcts:element-value-queryは、要素名またはオブジェクト名と値を指定して完全一致するかを検索条件とする関数です。

同じように、クエリコンソールに貼り付けて実行してみます。今度はYamadaさんのデータのみが出たのことが確認できます。

まとめ

本稿の内容をまとめます。

  • XMLとJSONの違いを簡単に説明しました。MarkLogicはどちらも格納し、かつ1つのクエリで両方を得ることもできます。
  • MarkLogicに対するクエリのうち、XQueryとJavaScriptを紹介しました。
  • MarkLogicに対する検索は、ドキュメントURI・collection・要素値などに基づいて行うことができます。
コラム一覧へ戻る
  1. NTT DATA REAL INTELLIGENCE with Agilityのビッグデータソリューション
  2. Solution
  3. MarkLogic(マークロジック)
  4. コラム一覧
  5. XMLやJSONの登録と検索

Contact

本取組みに関するお問い合わせは
下記までご連絡ください。
株式会社NTTデータ
第一金融事業本部
 金融グローバルITサービス事業部 
ABLER推進担当

お問い合わせフォーム
ABLER | We see what others don't
  • TOP
  • Customer Stories
  • Use Cases
  • Our Thought
  • Solutions
Intelligent Data Fusion
  • - MarkLogic
  • - DataDiscovery™
Intelligent Analysis
  • - iTreasure for Trade Services
  • - XBRL
Others
  • - OpenCanvas
  • - Consent Wallet®
Intelligent Search
  • - iTreasure for Intelligent Search
  •  
Intelligent Know Your 3rd Party
  • - iCrawler®
  • - iTreasure for Intelligent Know Your
    3rd Party
  • - iTreasure for Intelligent HRM
Intelligent Data Fusion
  • - MarkLogic
  • - DataDiscovery™
Intelligent Search
  • - iTreasure for Intelligent Search
Intelligent Analysis
  • - iTreasure for Trade Services
  • - XBRL
Intelligent Know Your 3rd Party
  • - iCrawler®
  • - iTreasure for Intelligent Know Your
    3rd Party
  • - iTreasure for Intelligent HRM
Others
  • - OpenCanvas
  • - Altemista®
  • - Consent Wallet®
  • Tips
  • Talent Catalog
  • Column
  • Demo
  • リンク・免責事項
  • プライバシーポリシー
  • サイトのご利用条件
NTT DATA Trusted Global Innovator
Copyright © 2018 NTT DATA Corporation