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

  • 固定的で構造化され、整理されたストレージです。
  • 列と行を持つ2つ以上のテーブルで構成されています。
  • 情報を追加する前にスキーマを明確に定義する必要があります。後で変更する場合は、 DB全体を変更する必要があるため、変更が非常に困難です。後で問題が起こるのを 避けるためにスキーマを慎重に設計することが不可欠です。
  • よく知られているおり広くサポートされている多数のソフトウェアがあります。
  • Java、PHP、Pythonなどのオブジェクト指向言語ではうまく機能しません。

SQL

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

よく利用されているSQLデータベースとRDB管理システム

  • 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管理システム

RDBとSQL

RDB

  • 固定的で構造化され、整理されたストレージです。
  • 列と行を持つ2つ以上のテーブルで構成されています。
  • 情報を追加する前にスキーマを明確に定義する必要があります。後で変更する場合は、 DB全体を変更する必要があるため、変更が非常に困難です。後で問題が起こるのを 避けるためにスキーマを慎重に設計することが不可欠です。
  • よく知られているおり広くサポートされている多数のソフトウェアがあります。
  • Java、PHP、Pythonなどのオブジェクト指向言語ではうまく機能しません。

SQL

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

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

  • MongoDB 特にスタートアップの間で最も人気のあるNoSQLシステム。 Craigslist、 eBay、Foursquareのようなサイトのバックエンドに使われている。リレーショナル テーブルの代わりに、動的スキーマの中にJSONのようなドキュメントを持つドキュメ ント指向のデータベース。 オープンソースなので無料で利用できる。
  • Hadoop ひとつのデータベースではなく、むしろ超並列コンピューティングを可能に するソフトウェアエコシステム。 これは特定のタイプのNoSQL分散データベース (HBaseなど)を可能にし、パフォーマンスをほとんど低下させることなく、何千ものサーバーにデータを分散させることができる。
  • Spark 大量のデータを扱い、分析、機械学習、グラフ処理などを行うビッグデータ処 理フレームワーク。 これは、Map Reduce、Hive、Impala、Mahout、およびHadoopの HDFS上に構築されたデータ処理層に似ている。
  • Apache CouchDB ドキュメント指向のオープンソースデータベース。
    Web用のDBと して、ドキュメントを保存するためにJSONデータ交換フォーマットを使用する。 ド キュメントのインテックス付け、結合、および変換のためのJavaScriptを使用し、その APIとしてHTTPを利用。
  • 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

  • Hbase、BigTabble、Hyper Tale

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

  • MongoDB、CouchDB

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

  • Polyglot, Neo4J

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

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

SQLが適しているケース

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

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

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

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

NoSQLが適しているケース

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

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

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

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

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

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

データベースの歴史

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

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

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

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

データモデルの進化

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

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

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

XML(Extensible Markup Language)とは

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

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