支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • NoSQLとは?詳しく解説させていた

NoSQLとは

企業が大量のデータを取得し、分析・活用し営業活動を行うことは今や当然となってきております。 特にビッグデータ時代に突入しデータを取り扱う技術は日々進化していることもあり、 企業の担当者やITエンジニアにとってデータの取り扱いやデータベースに関する知識・情報を学ぶことは必須と言えるでしょう。 データーベースには様々な知識が必要とされますがここではNoSQLという言葉について解説させていただきます。 NoSQLとはデータベースのカテゴリを指します。 そもそもデータベースとは様々な方法で取得したデータを格納するものであり、大きく分けてRDB(リレーショナルデータベース)とNoSQLに分類されます。 NoSQLはRDB(リレーショナルデータベース)以外のデータベース管理システムを指すという解釈になります。 RDBMS(リレーショナルデータベース)はSQLを利用してデータベースを操作を行う一方で NoSQLは「Not only SQL」の略で、SQL言語を使わずにデータの操作ができるデータベースというのが両者の大きな特徴となりますが、技術的な説明については後程詳しく紹介させていただきます。 ここでは、NoSQLについて深く掘り下げて説明させていただきますので、データベースに興味のあるエンジニアの方は是非参考にしてみてください。

NoSQLの歴史

NoSQLの歴史について解説させていただきます。 NoSQLという言葉は1998年に最初に用いられた事がきっかけです。 近年になりNoSQLが注目を浴びている理由としてはビッグデータを中心した様々なデータの取り扱いや活用方法についての関心の高まりが理由となります。 RDBMS(リレーショナルデータベース)はトランザクション処理を実行できるため、処理の一貫性や安定性を担保することが可能です。 一方でNoSQLはデータの更新・削除といった操作には不向きですがとにかく大量のデータを保有することに 適しているといえるでしょう。 どちらかがより優れているという問題ではなく、企業はデータの適切な取り扱いを行うことにより 効率的なデータ分析を行うことができますので企業の担当者やITエンジニアはそのための正しい知識を持つことが大切です。 RDB(リレーショナルデータベース)だけでなくNoSQLを適所で利用することでさらにパフォーマンスを高めることが可能になることは間違いありません。 また、NoSQLは「Not only SQL」の略語となっておりますが、SQLが不要であるというネガティブな印象を持たれかねないとして様々な議論を呼んでおります。 以上が簡単ではありますがNoSQLの歴史とNoSQLが注目を浴びている背景の説明となります。

リレーショナルデータベースについて

NoSQLを理解するためには RDB(リレーショナルデータベース)についての知識が必要となりますので、簡単に説明させていただきます。 RDB(リレーショナルデータベース)はIBMのエドガー・F・コッドによって考案されたデータベースであり、 長年データベースの主流であり、現在もその地位は揺るぎません。 データベースを利用する際にクエリをデータベースに与えデータを検索することや変更することが可能となります。 エドガー・F・コッドは"A Relational Model of Data for Large Shared Data Banks" (大規模共有データバンクのデータ関係モデル)という論文で RDB(リレーショナルデータベース)の概念を発表しておりますが、IBMではなかなか本格的な開発が進められませんでした。 それはIBMの既存顧客に対して導入していたIBMのIMS ( Information Management System)との兼ね合いによるものと言われております。 エドガー・F・コッドはSQL/DS(DB2)やSQLの開発も行いました。 エドガー・F・コッドの"A Relational Model of Data for Large Shared Data Banks" (大規模共有データバンクのデータ関係モデル)に影響を受けて製品開発を行ったのがOracleのラリー・エリソンとなります。 IBMが開発に時間をかけている間隙を縫い製品をリリースし、市場のシェアを奪うことに成功します。 また、SQLがIBMの RDB(リレーショナルデータベース)の標準となることでOracleの製品もシェアを伸ばしていきます。 以上が簡単ではありますがRDB(リレーショナルデータベース)についての説明とさせていただきます。

トランザクションとNoSQL

トランザクションとNoSQLについて説明させていただきます。 トランザクションとは、データの更新・取り消しなどを管理する処理のことを指します。 また、複数の処理を一つにまとめたものでその処理を分離されることはできないという考え方がベースとして存在します。 トランザクションを説明する際によく用いられるのが銀行の振込の例となりますので、ここでも紹介させていただきます。 例えばAさんがBさんの銀行口座に10000円のお金を振り込むとします。 Aさんの銀行口座から10000円のお金の引き落とし処理が成功する事とBさんの銀行口座に10000円が 入金される処理が成功することで初めてトランザクション成功が成立します。 例えばAさんの銀行口座から10000円のお金の引き落としの処理が成功したにも関わらず、何らかの理由によってBさんの銀行口座に10000円が入金される処理が成功しないままデータベースに反映されてしまうと問題となってしまいます。 上記のようなケースはトランザクション失敗として扱わますので、ロールバックが行われデータベースに反映が行われません。 このように、複数の処理を一つにまとめて効率よくデータベースを運営していくのがトランザクションの役割です。 少し前置きが長くなりましたがRDB(リレーショナルデータベース)ではトランザクション機能が十分であることに対してNoSQLではその機能が弱いことがRDB(リレーショナルデータベース)とNoSQLについての違いとなります。 ただし近年となり、NoSQLの抱えるトランザクションの問題を解決するような技術的な方法も生まれておりますので、その動向には注目しておきたいところです。 いずれにせよ企業の担当者やITエンジニアにとっては、RDB(リレーショナルデータベース)にせよNoSQLにせよトランザクションについての基礎知識の理解は必須となりますのでしっかり抑えておく必要があります。

NoSQLの特徴

NoSQLの特徴について説明させていただきます。 ポイントを3つに絞り紹介させていただきますので、参考にしてみてください。

大量のデータを高速で処理する

NoSQLの特徴の一点目が大量のデータを高速で処理することになります。 すでに本文で説明したように、NoSQLではRDB(リレーショナルデータベース)とはトランザクション処理能力の違いがあるため、 データの一貫性が低い面とはいえデータを高速で処理することが可能です。 当然ながらトランザクション処理が頻繁に発生するとデータの整合性に問題が生まれてしまうケースがあるため、データ処理についてRDB(リレーショナルデータベース)かNoSQLいずれで処理を実行するかという点は 企業のコストや提供しているサービスやデータとの兼ね合いと言えるでしょう。

構造化、非構造化、半構造化

NoSQLの特徴の二点目が構造化、非構造化、半構造化となります。 ビッグデータは様々なデータの種類を扱うことになります。 構造化データはExcel形式やCSV形式などの行・列形式を持つデータを指します。 非構造化データはPDFやメールや音声などの構造を持たないデータを指します。 半構造化データは構造化データと非構造化データの中間となります。 NoSQLでは「キーバリュー型」「カラム志向型」「ドキュメント型」「グラフ型」 といったように様々なデータに対して処理を実行することが可能となります。

システム拡張

NoSQLの特徴の三点目がシステム拡張となります。 NoSQLでjは処理能力実行を行う際にはサーバーの数を増やすなどのスケールアウトが比較的容易であるため システム拡張性に優れている点は大きなメリットと言えるでしょう。

NoSQLの分類

NoSQLの分類には型があり、4つほど紹介させていただきますので参考にしてみてください。

キーバリュー型

NoSQLの分類の一点目がキーバリュー型となります。 キーバリュー型はキーとバリューの組み合わせを一対として管理されます。 非常にシンプルで分かりやすい構造を持つ点がキーバリュー形の特徴と言えるでしょう。 新しいバリュー増えるとキーが付与されデータが増加していくいう形をとるため、 メンテナンスも容易という点もキーバリュー型の特徴です。

カラム型

NoSQLの分類の分類の二点目がカラム型となります。 カラム型はすでに紹介させていただいたキーバリュー型にカラムの概念を持たせた形であり、データベースの列方向の処理に強いという点がカラム型データベースの特徴となります。 カラム型データベースは、特定の列や任意の列のみを更新するなどの列方向の処理を 得意とするために集計や分析に強いという点も大きなメリットと言えます。

ドキュメント型

NoSQLの分類の三点がドキュメント型となります。 ドキュメント型はJSON・XMLなどのデータ形式で記述されたドキュメント形式でデータ管理を実行します。 複雑な階層構造で様々なデータ型を保存できるなどの点がドキュメント型の特徴と言えます。

グラフ型

NoSQLの分類の四点目がグラフ形となります。 グラフ型が国内で導入実績が少ないい一方で海外では需要が高く人気が高い点が特徴です。 RDBMS(リレーショナルデータベース)では時間がかかる複雑なクエリも グラフ型のデータベースであれば高速に処理が実行できる点が強みです。 我々が身近に使うサービスでは、商品検索やレコメンドエンジンといったシステムで 導入されております。こういったサービスではグラフ型を導入することでユーザーとのマッチングを複雑なクエリにより処理し管理すること、もしくは検索を行うことを 実現することが可能としております。

NoSQLとサービス

NoSQLを代表するサービスについて説明させていただきます。

MongoDB

NoSQLを代表するサービスの一つがMongoDBです。 Mongoは英語で「ばかでかい」を意味する 「humongous」からきており、2009年にリリースされました。 MongoDBは2007年にアメリカでDwight Merriman、Eliot Horowitz、Kevin Ryaの三名により創業された会社となります。 同社ではデータを通じてあらゆる人の秘めたる可能性を解き放つというミッションを掲げておりデータを使いやすくすることで、世界を変えることができるという野望を持っております。 データベース管理システム(DBMS)においてはOracle Database、MySQL、SQL Serverの三社が 圧倒的なシェアを誇っていりますが世界で4位もしくは5位にランクインするのがMongoDBとなります。 MongoDBは日本国内での知名度はそこまで高くないものの、世界的な知名度は非常に高く注目を浴びております。 MongoDBはNoSQLデータベースの中ではトップシェアを誇ります。 また、本文でも説明させていただきましたNoSQLの中で分類ではドキュメント型のデータベースに分類され、 ドキュメント型データベースを代表する製品の一つとなります。 MongoDBの指針としては、開発者がデータの課題を解決できるよう支援することであり 最先端の最新データベース上に構築されたアプリケーションデータプラットフォームを提供します。 一般的なクエリインターフェイスと開発者が好むデータモデルを使用しながら、トランザクション、検索、分析、モバイルにおいて開発者を強力に支援することが可能となります。 MongoDBの特徴としては「より速く構築する」「拡張性」「高可用性」などを実現するためのテクノロジーを追求している点をあげることができます。 「より速く構築する」という内容においては、柔軟なドキュメントデータモデルとあらゆるユースケース向けの統合クエリインターフェイスを使用して、高速化を実現します。 「拡張性」においては全てのユーザーに対して拡張性とSLA(Service Level Agreement)を保証し提供します。 「高可用性」についてはデータの整合性を保護し、ミッションクリティカルなワークロードのセキュリティとコンプライアンスの基準を満たします。 MongoDBを支えるテクノロジーとして有名な技術を紹介させていただきます。 一つはシャーティングとなります。 シャーディングとは、データベースの負荷分散の手法の一つであり、複数のサーバを使用して単一の論理データベースを構成する手法のことを指します。 シャーディングの最大のメリットは拡張性に優れていることとなります。 データ量やアクセス量に応じてスケールアウトし、柔軟な構成を構築することが容易である点は大きな魅力です。 また、可用性に優れていることもその特徴となります。 シャーディング構成のおいてはそれぞれのサーバーが独立して存在していることもあり、障害が起きた際に別のサーバーに対して影響を与えず高可用性を担保することが可能となります。 以上がMongoDBに関する説明とさせていただきます。

HBase

NoSQLを代表するサービスの一つがHBaseです。 HBaseはビッグデータと相性が良くい、高速に処理できるプラットフォームとなります。 GoogleのBigTableをモデルとし、Java言語で記述が行われております。 カラム志向型のデータベース処理を行いApacheソフトウェア財団によるプロジェクトの一つとして 大きな注目を集めております。ビッグデータを語る上ではHadoop(Apache Hadoop)とHBase(Apache HBase)の知識は欠かせません。 HBaseの特徴としては拡張性に優れ、リアルタイムスピードと柔軟性が高いことです。 HBaseの公式サイトによる特徴と技術の説明については以下のような記述がされておりますので、是非確認してみてください。 「線形およびモジュール式のスケーラビリティ」 「厳密に一貫した読み取りと書き込み」 「テーブルの自動で構成可能なシャーディング」 「RegionServer間の自動フェイルオーバーのサポート」 「ApacheHBaseテーブルを使用してHadoopMapReduceジョブをバックアップするための便利な基本クラス」 「クライアントアクセス用の使いやすいJavaAPI」 「リアルタイムクエリ用のブロックキャッシュとブルームフィルター」 「サーバー側のフィルターを介したクエリ述語のプッシュダウン」 「Thriftゲートウェイと、XML、Protobuf、およびバイナリデータエンコーディングオプションをサポートするRESTフルWebサービス」 「拡張可能なjrubyベース(JIRB)シェル」 「Hadoopメトリクスサブシステムを介したファイルまたはGangliaへのメトリクスのエクスポートのサポート。またはJMX経由」 HBaseは日本国内の知名度としてはまだまだ低いのですが、世界的には知名度も高く大手企業のサービスの導入されている 事例は多数存在します。 特にビッグデータ時代に突入するため、将来的に大きなシェアを奪う可能性が高い製品の一つと言えるでしょう。 以上がHBaseに関する説明とさせていただきます。

Cassandra

NoSQLを代表するサービスの一つがCassandraです。 CassandraはFacebook社において大規模データの格納のために開発が実施されておりました。 Apple・Netflix・Instagramなど多くの企業で導入が行われております。2008年にFacebook社がOOSとして公開した事を歴史とのスタートとして、2009年にはApache Incubatorプロジェクトとなり、2010年にはトップレベルプロジェクトに昇格しました。 Cassandraの特徴として高パフォーマンスと処理能力となります。 Cassandraは高速なデータの書き込みを特に重視しており、そのためにLog-structured merge-tree(LSM tree)というアルゴリズムを導入していることで知られております。 また、分散コンピューターシステムのコンピューター間の情報複製に関する定理であるCAP定理は 「一貫性(Consistency)」「可用性(Availability)」「ネットワーク分断耐性(Partition-tolerance)」の頭文字を取ったものですが、 この全てを同時に満たすことが難しいという定理となります。 CassandraはNoSQLにおける代表的なサービスの一つとして有名ですが、 Cassandraの最新バージョンである「Apache Cassandra 4.0」ではCAP定理における「Availability(可用性)」の課題を改善し 大きく機能の向上を行い技術的な発展と共に業界でも大きな注目を浴びていることは間違いありません。 以上がCassandraに関する説明とさせていただきます。

GridDB

NoSQLのサービスの一つとしてGridDBを紹介させていただきます。 GridDBは紹介させていただきました他の製品と比較すると知名度やシェアという面では 大きく劣りますが比較的新しいサービスである点と国産のNoSQLという点であることを 理由に取り上げさせていただきます。 GridDBは東芝が開発を手掛けるNoSQLであり、ビッグデータ/IoT向けのデータベースであることが特徴です。 現在ではIoTのさらに包括的な概念としてCPS(サイバーフィジカルシステム)という考え方が生まれてきております。 CPS(サイバーフィジカルシステム)とはフィジカル空間(実世界)にある多様なデータを収集して、それらを サイバー空間で、大規模データ処理技術を駆使し、分析・知識化を行いフィジカル空間(実世界)にフィードバックして活用するという考え方となります。 GridDBはCPS(サイバーフィジカルシステム)時代において活用されるためのデータベース基盤を目指して開発が行われております。 GridDBの特徴としては、高頻度で膨大な時系列データを効率よくリアルタイム処理・管理する時系列データ指向である点やペタバイト規模に対応可能なさまざまなアーキテクチャ上の工夫を組み込み、高い処理能力を実現するテクノロジや拡張性の高さや迅速に開発を行えるプラットフォームなどをあげることができます。 以上がGridDBに関する説明とさせていただきます。

まとめ

いかがでしたでしょうか? NoSQLについて詳しく解説させていただきましたので、 参考にしていただけましたら幸いです。