NoSQL(Not only SQL)とは?MongoDB、Redis、Riakの中小規模データベースシステム

ざっくりと

  • SQLを用いないDB方式
  • RDBと共存のデータベース
  • MongoDBやRedisなどの代表的製品

NoSQL(Not only SQL)とは、SQLを用いない新しいDB方式です。

概要説明

NoSQL(Not only SQL)とは、SQLを使用しない新しいデータベース方式である。なぜなら、柔軟なデータ構造が求められる時代のニーズに応えるため。

例えば、MongoDBやRedisのような製品が人気である。そして、これらの製品は中小規模のデータベースシステムの主流となっている。

つまり、RDBとは異なる様々な用途と特性を持つ。だから、適材適所で使い分けることが大切。

RDB(リレーショナルデータベース、Relational Database)は、データを行と列の集合体である「テーブル」の形式で保存するデータベースシステム。

職業職種

  • データベース管理者
    データベース管理者は、NoSQLをよく使う。なぜなら、柔軟なデータベース構造が求められるプロジェクトで必要だから。例えば、大規模なデータ収集プロジェクト。
  • Web開発者
    Web開発者は、NoSQLを使うことが多い。なぜなら、高速な読み書き速度や拡張性が求められるWebアプリの開発に適しているから。例えば、SNSやEコマースサイトの開発。
  • データサイエンティスト
    データサイエンティストは、NoSQLを使用することがある。なぜなら、複雑なデータ構造の解析や処理を効率的に行うため。例えば、大量のユーザーデータの解析。

NoSQL(Not only SQL)は、名前の由来は「Not only SQL」です。これは、「SQLだけでない」という意味になります。

代表例

  • Amazon
    Amazonは、Amazon Web Servicesの一部としてDynamoDBというNoSQLデータベースを提供している。なぜなら、スケーラブルで高可用性のデータベースがクラウド環境で必要だから。例えば、大規模なWebサービスやアプリのバックエンドとして使用される。
  • Facebook
    Facebookは、CassandraというNoSQLデータベースの初期開発者である。なぜなら、ユーザーの巨大なデータを効率的に管理するために独自のデータベースを必要としたから。例えば、ユーザープロフィールや友人関係を保存するために使用する。
  • Salvatore Sanfilippo
    Salvatore Sanfilippoは、RedisというNoSQLデータベースの主要開発者である。なぜなら、高速なインメモリデータベースを開発する情熱を持っていたから。例えば、リアルタイムアプリケーションでのデータの読み書きを高速化するために利用される。

手順例

NoSQLの1つ、MongoDBの基本的なセットアップ手順です。
  1. インストール
    MongoDBをインストールする。なぜなら、データベースを実行するためのソフトウェアが必要だから。例えば、公式サイトからダウンロードしてインストールする。
  2. 設定ファイルの編集
    MongoDBの設定ファイルを編集する。なぜなら、動作環境に合わせたカスタマイズが可能だから。例えば、データの保存場所やポート番号を指定する。
  3. サービスの起動
    MongoDBのサービスを起動する。なぜなら、データベースとしての機能を利用開始するためだから。例えば、コマンドラインから`mongod`コマンドを実行する。
  4. 接続確認
    MongoDBに接続して動作を確認する。なぜなら、正しく設定できているかを確認するためだから。例えば、`mongo`コマンドを使ってデータベースにアクセスする。
  5. データの操作
    コレクションを作成したり、データを追加したりする。なぜなら、データベースとしての基本的な操作を覚えることで、さまざまなアプリケーションでの利用が可能になるから。例えば、`insert`や`find`コマンドを使ってデータの追加や検索を行う。

類似語

  • Database
    Databaseは、データを保存・管理するためのシステム全体を指す言葉である。なぜなら、NoSQLもその一部として位置づけられるから。例えば、RDBやファイルベースのデータベースなどがある。
  • Big Data
    Big Dataは、巨大なデータの集まりを指す。なぜなら、NoSQLデータベースがこのような大量のデータを効率的に処理するために生まれたから。例えば、SNSやEコマースサイトのユーザーデータなど。
  • Distributed Systems
    Distributed Systemsは、複数のコンピュータが連携して動作するシステムを指す。なぜなら、多くのNoSQLデータベースがこのような分散環境で動作設計されているから。例えば、複数のサーバ間でデータをレプリケートすることで、高可用性や耐障害性を実現する。

反対語

  • RDBMS
    RDBMSは、SQLベースのデータベースである。なぜなら、関係型データベースの管理と操作にSQLを使用するから。例えばOracleやMySQL。
  • テーブル
    テーブルは、データを行と列で構成するものである。なぜなら、RDBMSの基本単位として使われるから。例えば顧客リストや商品カタログ。
  • クエリ
    クエリは、データの取得や更新をする命令である。なぜなら、データベースとのやり取りの中心になるから。例えばSELECT * FROM users

会話例

  • プロジェクトミーティング
    「新しいアプリのデータベース、NoSQLを使うべきか?」
    「うん、高速でスケーラブルだから、特に大量のデータを扱う場合はいいよ。ただ、どのNoSQLを使うかは要検討だね。」
  • データベース設計の相談
    「このデータ構造でCassandraは使える?」
    「Cassandraはカラム指向だから、このデータ構造だと他のNoSQLの方がいいかも。」
  • パフォーマンスチューニング相談
    「NoSQLのクエリ速度が遅いんだけど、なんで?」
    「インデックス設定やデータモデルを再確認した方がいい。NoSQLも最適化は必要だよ。」

注意点

NoSQLを使用する時の注意点は、用途に適したタイプを選ぶことである。なぜならば、NoSQLにはいくつかの種類があり、それぞれに特性と用途があるからだ。

例えばMongoDBはドキュメント指向である。そして、リアルタイム分析にはRedisが適している。だから、プロジェクトの要件に合わせて選ぶ必要がある。

NoSQL(Not only SQL)とNewSQLは、間違えやすいので注意しましょう。

NoSQLは、SQLを主としないデータベース方式です。

一方、NewSQLは、関係型データベースの高性能バージョンです。

記事を書いてる人

ガラケー時代からWEB開発やってる自宅SE です。

「○○を知りたい!!」「○○が分からない!!」などありましたら、Twitterでもブログでもコメントいただければ、ご期待に添えるように頑張ります!

ネット事件簿チャンネルを運営しているので、YouTubeもぜひ覗いてみてください!!

雨おやじのSNSを覗く!!
IT用語辞典
雨おやじのSNSを覗く!!
ITkagyo

コメント