とりゅふの森

GCPデータエンジニアとして生きる

データエンジニアなら知っておきたい、NoSQLってなに?

今日はRDBと違うデータベース、「NoSQL」についてご紹介します。

データベースというと、OracleやMySQLといったリレーショナルデータベース(RDB)を思い浮かべると思います。

NoSQLとは、「RDBでないデータベース」のことです。

RDBばかり触っている方には馴染みがないかもしれません。

しかし、RDBのように固定化したスキーマにとらわれずにデータを格納できたり、スケーラビリティがあったりと、用途によってはRDBよりも、違う形式のNoSQLのほうが便利なケースもあったりします。

ということで、本日のテーマはこちら!

NoSQLとはなにか、どのような種類があるのかを知ろう!

データエンジニアなら、RDBのみにとらわれずに、NoSQLについても学びましょう!

NoSQLとは

NoSQLとは、RDBでないデータベースのことを呼びます。「Not Only SQL」の略です。

RDBがWebアプリケーション、業務アプリケーションで幅広く使われるのに対し、NoSQLは煩雑なテーブル設計が不要なアプリケーションや、ビッグデータ周りでも使われます。

例えばGoogleのNoSQL、Google BigTableは、GoogleマップやYouTubeなどの超大規模サービスのデータ管理を担っています。

RDBはその性質上スケールアウトがしづらく、NoSQLはスケールアウトがしやすいと言われています。そのため、大量のアクセスや高速な処理をしやすいのがNoSQLです。

一方でスケールアウトのしやすさを実現するために、データの整合性が保証されていないというデメリットもあったりします。
また、文字通りSQLを利用してデータアクセスができないという特徴もあります。

NoSQLの種類

NoSQLはいくつかの種類に分けられます。今日はうち2種類をご紹介します。

キーバリュー型

文字通り、KeyとValueの組み合わせた単純な構造のデータストアです。KVS(Key-Value Store)とも呼ばれます。
memchaedやRedisなどのメモリ上にデータを保存して高速でデータを返すKVSが広く使われています。

KVS(Key-Value Store)のイメージ
KVS(Key-Value Store)のイメージ

ドキュメント指向型

JSONやXML形式のようなドキュメントの形で管理するデータストアのことをドキュメント指向型と呼びます。下記図のように、KeyがあってValueがあったり、その中でネストして更にKey-Valueがあったり、配列があったりと、JSONそのままの形でデータを格納できます。
MongoDBや、GoogleのCloud Firestoreなどがドキュメント指向型を採用しています。スキーマレスで、列を定義しなくとも構造化データを格納することができ、Keyで素早くデータを取得することができます。

ドキュメント指向型データベースのイメージ
ドキュメント指向型データベースのイメージ

無制限にスケールするRDBもあるらしい

GCPには、RDBとNoSQLのいいとこ取りをしたデータベース、Cloud Spannerというプロダクトもあります。

Cloud Spanner  |  Google Cloud

世界中のデータセンターに分散し、無制限にスケールし、最大 99.999% の可用性を備えたフルマネージド リレーショナル データベース、と説明されています。
NoSQL、RDBそれぞれの良さを理解すれば、このCloud Spannerがとんでもプロダクトであるこということが理解できるかもしれません。
費用の高さから、エンタープライズ向けプロダクトです。金融、決済プラットフォームや、高負荷なアクセスが想定されるゲームのバックエンドで利用されています。

■参考

engineering.mercari.com

まとめ

以上、本日はNoSQLとはなにか、その種類について簡単にまとめました。
データエンジニアであれば、データストアにはRDB以外の選択肢があること、目的に応じた種類のNoSQLがあることを理解し、適切なデータストアを選定できる能力を身に着けていきたいと考えています。

次回以降、GCPのNoSQLサービスであるCloud Firestoreについて、実際の手順やコードとともに本ブログで紹介していこうと思います!