DBテクノロジーの
過去と現在と未来

SQLとNoSQLとは?

一般的な、オラクルやSQL Sever, MySQLなどのRDBは、行と列をもつ表示形式の データテーブルによって管理されています。NoSQLは、この表形式のテーブル構造の枠に収まらないデータを扱うデータベースです。

  • リレーショナルDB / SQL DB 電話番号と住所を保存する電話帳のような構造
  • Non-Relational DB / NoSQL DB 電話帳から買い物の好みまですべてを保存する構造。ファイルをフォルダに保存するように分散して管理する

RDB vs. NoSQL DB

RDB(リレーショナルデータベース)は、構造化データを定義済みのカラムに格納します。NoSQL DB(非リレーショナルデータベー ス)には、テーブルモデルは組み込まれていません。 代わりに、データを単一のド キュメントファイルとして保存することができます。

RDBとSQL

RDBとSQL
RDB SQL
固定的で構造化され、整理されたストレージです。 RDBのためのプログラミング言語です。
列と行を持つ2つ以上のテーブルで構成されています。 SQLは、そのシンプルでありながら強力なJOINコマンドのため、RDBに重たい仕事 をさせることができる言語です (単一のコマンドで、複数のテーブルに格納されているデータを移動できます)。
情報を追加する前にスキーマを明確に定義する必要があります。後で変更する場合は、 DB全体を変更する必要があるため、変更が非常に困難です。後で問題が起こるのを 避けるためにスキーマを慎重に設計することが不可欠です。 情報を追加する前にスキーマを明確に定義する必要があります。後で変更する場合は、 DB全体を変更する必要があるため、変更が非常に困難です。後で問題が 起こるのを 避けるためにスキーマを慎重に設計することが不可欠です。
よく知られているおり広くサポートされている多数のソフトウェアがあります。  
Java、PHP、Pythonなどのオブジェクト指向言語ではうまく機能しません。  

よく利用されているNoSQLデータベース

  • MySQL

    CMSサイトやブログによく利用され、最も人気のあるオープンソースデータベース。

  • Oracle

    C++で書かれたオブジェクトRDB管理システム。予算が十分にあれば、優れ たカスタマーサービスと信頼性のあるフルサービスを受けることができる。Oracleは NoSQLデータベースもリリースしている。

  • IBM DB2

    IBMが高度なビッグデータ分析を行うために構築したDBサーバー製品

  • Sybase

    Linux用のエンタープライズレベルのDBMSであり、Unix OS上で使用されている企業向けのリレーショナルモデルのデータベースサーバー製品

  • MS SQL Server

    SQLとNoSQLの両方のアーキテクチャーをサポートしたエンタープ ライズレベルのデータベースとしてマイクロソフトが開発したRDB管理システム

  • Microsoft Azure

    あらゆるオペレーティングシステムをサポートし、データを1か所に 格納、コピー、および拡張できるクラウドコンピューティングプラットフォーム。 最 近の調査では、企業のデータストレージに関して、アマゾンウェブサービスとグーグル クラウドストレージよりも先に進んでいると評価されている。

  • MariaDB

    MySQLの拡張版 •PostgreSQLーSQLレベルのコードに加えて、PerlやPythonなどの手続き型言語を使用 できるエンタープライズレベルのオブジェクトリレーショナルDB管理システム

Non-Relational DBとNoSQL

RDBとSQL
Non-Relational DB NoSQL
RDBよりも高い柔軟性を持ち、動作速度が速いことが強みです。 Java、PHP、Python、またはAPIを介して利用します。
大きな買い物袋のように、テキスト、リンク、写真、ソーシャルメディアなどの非構 造化データ、センサーデータ、Webからのデータ、ソーシャルシェア、個人情報、位 置情報、オンラインの行動履歴、使用状況メトリクスなどをより多くの情報を保持できます。 開発者は、SQLやDBアーキテクチャの知識を習得せずにクエリを実行できます。
SQLよりもスキーマレスの定義されていない表現を許容できます。 SQLはクエリを実行し、データを取得し、新しいレコードを更新、削除、作成することでデータを編集します。
スケーラビリティは優れていますが、データの一貫性が失われることがあります。  
ドキュメント指向の自由な形式のデータを保存するデータベースです。  
データがRDBのように構成されていないため、冗長な処理と冗長な記憶領域が必要になります。  
アプリ開発者にとってのアクセスが簡単で、APIを使って起こりうるプログラミングの問題を回避しやすくなります。  

よく利用されているNoSQLデータベース

  • MongoDB

    特にスタートアップの間で最も人気のあるNoSQLシステム。 Craigslist、 eBay、Foursquareのようなサイトのバックエンドに使われている。リレーショナル テーブルの代わりに、動的スキーマの中にJSONのようなドキュメントを持つドキュメ ント指向のデータベース。 オープンソースなので無料で利用できる。

  • Hadoop

    ひとつのデータベースではなく、むしろ超並列コンピューティングを可能に するソフトウェアエコシステム。 これは特定のタイプのNoSQL分散データベース (HBaseなど)を可能にし、パフォーマンスをほとんど低下させることなく、何千ものサーバーにデータを分散させることができる。

  • Spark

    大量のデータを扱い、分析、機械学習、グラフ処理などを行うビッグデータ処 理フレームワーク。 これは、Map Reduce、Hive、Impala、Mahout、およびHadoopの HDFS上に構築されたデータ処理層に似ている。

  • Apache CouchDB

    Linux用のエンタープライズレベルのDBMSであり、Unix OS上で使用されている企業向けのリレーショナルモデルのデータベースサーバー製品

  • HBase

    オープンスースの分散データベース。Hadoopプロジェクトの一部として開発 された。GoogleのBigTableをモデルとして、Javaにより書かれている。FacebookのMessaging Platformなどデータ駆動型のWebサイトでも利用されている。

  • Oracle NoSQL

    OracleがNoSQLの分野に参入した製品。

  • Apache Cassandra DB

    Facebookが生み出したCassandraは、膨大な量の構造化デー タを処理するのに優れた分散データベース。
    Cassandraはスケールアップに優れて おり、インスタグラム、コムキャスト、アップル、そしてSpotifyなどで利用されている。

  • Riak

    Amazon Dynamoの論文に基づいて実装されているNoSQLデータベース。 Erlangで書かれたオープンソースのKey-Valueストアデータベース。 優れたパフォーマ ンスを実現するために、フォールトトレランス機 能と自動データ配布機能が組み込まれ ています。Riakは、フォーチュン50カンパニーの25%を含む数千社で導入されている。 採用企業は、シマンテック、ベストバイ、ヤフージャパン、ボーイング、AOL、AT&T などがある。

NoSQLデータベースの分類

  • Cassandra、Azzure、LevelDB、Riak

    key

    Valueモデルーインデックス付きのキーと値を使用してスキーマのない方法でデー タを格納する最も単純なNoSQL

  • MongoDB、CouchDB

    Document DB

    Key-Valueをより複雑にしたもの。 各ドキュメントには、取得するた めの独自のデータと固有のキーがある。 半構造化文書であるデータを保存、取得、 管理するための優れた選択肢。

  • Hbase、BigTabble、Hyper Tale

    Column Store

    データテーブルを行ではなく列として格納。 列を分割することで、 優れたスケーラビリティと高性能が可能。

  • Polyglot, Neo4J

    Graph DB

    データモデルとして、グラフ構造を採用しているデータベース。ソーシャル ネットワークの分析や可視化、データ処理などに適している。

データベースのタイプ別比較表

DBタイプ パフォーマンス 拡張性 柔軟性 複雑性
Key-Value Store 非常に良い 非常に良い 非常に良い  
Column Store 非常に良い 非常に良い 良い 悪
Document DB 非常に良い 通常 非常に良い 良い 悪
Graph DB 通常 通常 非常に良い 非常に良い

SQLが適しているケース

ACID凖拠(整合性、一貫性、分離性、耐久性)を確認する必要がある

ACID準拠は、トランザクションがデータベースとどのようにやり取りするかを正確に規定することによって、異常を減らし、データベースの整合性を保証します。 一般的に、NoSQLデ ータベースは柔軟性と処理速度のためにACID準拠を犠牲にしますが、多くの電子商取引や金融アプリケーションにとっては、ACID準拠データベースは依然として必要な選択肢です。

データが構造化されてデータおり、あまり変更がない

より多くのサーバーを必要とするような大規模に成長していくビジネスではなく、一貫性のあるデータのみを使用している場合は、さまざまなデータタイプと大量のトラフィックをサポートするように設計されたシステムを使用する理由はありません。

NoSQLが適しているケース

ほとんどが非構造化データの大容量のデータを保存する

NoSQLデータベースは、一緒に格納できるデータの種類に制限を設けず、ニーズの変化に応じてさまざまな新しい種類を追加できます。 文書ベースのデータベースでは、データの「タイプ」を事前に定義しなくても、データを同じ場所に格納できます。

クラウドコンピューティングとストレージを最大限に活用する

クラウドベースのストレージは優れたコスト削減ソリューションですが、スケールアップするにはデータを複数のサーバーに簡単に分散させる必要があります。 CassandraのようなNoSQLデータベースは、手ごろな価格で手ごろなサイズのハードウェアをオンサイトまたはクラウドで使用することができ、対応するソフトウェアが豊富に用意されています。

迅速な開発が求められている

もし、2週間以内にアジャイルスプリントを使用して開発するとしたら、短時間で反復処理を実行する場合、またはバージョン間で多くのダウンタイムを発生させることなくデータ構造を頻繁に更新する必要がある場合は、リレーショナルデータベースでは、処理が遅くなります。これに対して、NoSQLデータは事前準備に時間を取られることがありません。

データベースの歴史

  1. 1960

    パンチカードとテー

  2. 1970

    ナビゲーショナルデータベース

  3. 1980~2000

    リレーショナル/SQL データベース

  4. 2000~

    NoSQLとNewSQL データベース

データベース管理システムの歴史

データベース管理システムは以下の図のように進化してきました。

データベース管理システムのパイオニア

  1. 1960

    1. 1960年
      • IBM DBOMP
    2. 1963年
      • チャールズ・バックマンIBM DBOMP
    3. 1964年
      • GE IDS(Integrated Data Store)
    4. 1966年
      • CODASYL standard for network database
    5. 1968年
      • 1968 IBM IMS
  2. 1970

    1. 1970年
      • エドガー・F・コッド(データベース管理の関係モデル)
    2. 1973年
      • Cullinane 統合データベース管理システム
    3. 1974年
      • IBM System R プロトタイプ
    4. 1975年
      • ANSI-SPARK 3層 スキーマ アーキテクチャー
    5. 1976年
      • ピーター・チェン 実体関連モデル
    6. 1979年
      • Oracle イングレス
  3. 1980

    1. 1981年
      • IDEF1(ICAM定義)後のIDEFIX1(米国空軍)
    2. 1983年
      • IBM DB2
    3. 1984年
      • テラデータ(データベースアプリケーション)
    4. 1985年
      • PCデータベース
    5. 1986年
      • Gemstone(オブジェクトデータベース)
    6. 1989年
      • Kognitio(インメモリデータベース)
  4. 1990

    1. 1990年
      • RedBrick Warehouse(DWデータベース)
    2. 1991年
      • バークレーDB(Key/value データベース)
    3. 1992年
      • Essbase(多次元データベース)
    4. 1996年
      • UML(統一モデリング言語 オッブジェクト指向)
      • PCデータベース
    5. 1998年
      • KDSB(Key/multi-valueデータベース)
    6. 1999年
      • W3C RDF(セマンテックウェブ スタンダード開始)
  5. 2000

    1. 2001年
      • Profium SIR(セマンテックルータ)
    2. 2002年
      • Aduna Sesame(RDFデータベース)
    3. 2003年
      • Marklogic(ドキュメント/グラフ データベース)
    4. 2005年
      • Streambase(タイムシリーズ データベース)
    5. 2007年
      • Neo4J(プロパティグラフ データベース)
    6. 2008年
      • Hive(Facebook オープンソース)
    7. 2009年
      • Hadoop/Cloudera, MongoDBなど
  6. 2010~

    1. 2010年
      • Hbase
    2. 2013年
      • Relational Hadoop
    3. 2015年
      • Apache Spark(インメモリ)

データモデルの進化

  • 初代
    1960-1970年

    ファイルシステム
    (VMS/VSAMなど)

    IBMのメイン フレーム システムで 主に使われた

  • 第2世代
    1970年代

    階層ネットワーク
    (IMS、ADABAS、IDS-Ⅱなど)

    初期のデータベースシステム

  • 第3世代
    1970年半-現在

    リレーショナル
    (DB2、Oracle、MS SQL-Serverなど)

    シンプルなコンセプト初期のRDBモデル

  • 第4世代
    1980年半-現在

    オブジェクト指向/リレーショナルの拡張(Versant, VFS/FastObjects、Objectivity/DB、DB2 UDB、Oracle 10gなど)

    複雑なデータをサポートRDBを拡張データウェアハウスWeb DBとして普及

  • 第5世代
    1990年-現在

    XML
    (Versant, VFS/FastObjects、 Objectivity/DB、DB2 UDB、Oracle 10gなど)

    非構造化データを管理XML文書をサポート

  • 次世代
    2010年以降

    XMLをベースにした新しいモデル
    (dBengosiなど)

    非構造化データと構造化データをXMLでサポート

データベースのコンセプトとデータモデル

データベースのコンセプトとデータモデルは以下のように進化しています。

データベースおよび関連技術は、社会のニーズに応えるために進化し続けています。人間の生活を向上させるために、大容量のデータをより高速で処理できるように進化してきました。データのタイプは、様々なものがあり、データ量も増加しています、リアルタイムでの処理が求められ、精密な分析ツールが必要になってきました。我々は、現在、情報の洪水とも言える状況に直面しており、大量のデータをシンプルに素早く、しかも正確に処理することが求められています。この競争の勝者となるためには、大量のデータの整合性とセキュリティを維持しながら、正確に情報を素早く分析できる方法を見つけ出すことが必要です。

XML(Extensible Markup Language)とは

  • XMLは、HTMLによく似たマークアップ言語です。
  • XMLは、データを保管し、転送するために設計されました。
  • XMLは、様々なデータを表現できるように設計されました。
  • XMLは、情報にタグで囲み、送信、受信、あるいは表示するためにソフトウェアの一部として書かれる必要があります。
  • XMLは、データを運ぶために設計されました 。これに対してHTMLは、データを表示するために設計されたものです。
  • XMLタグは、HTMLタグのようなもので事前に定義されていません。
  • XMLは、拡張可能であり、物事を簡素に表現します。
  • データ共有、データ転送、プラットフォームの変更、データの可用性に柔軟に対応できるように設計されています。

データテック社は、XMLが持つ特性を最大限に引き出し、時代が求める性能を発揮できる次世代のデータモデルの構築を実現するため に活動していきます。