LoginSignup
4
2

More than 3 years have passed since last update.

Azure Cosmos DB ~NoSQLについて~

Posted at

はじめに

マイクロソフトのCosmosDBの勉強会に行ってきました。
いままでNoSQLについてあまり触れる機会がなかったので、
できるだけわかりやすいようにまとめました。

データベースの種類

MySQLは誰もが1回は触ったことがあるデータベースだと思います。
MySQLはリレーショナルデータベース(RDB)という種類のデータベースです。
しかし最近はNoSQLと呼ばれるものがあります。

このリレーショナルデータベース(RDB)NoSQLは何が違うのでしょうか。

リレーショナルデータベースのメリット

・リレーションでデータをつなげることが出来る
たとえばuserテーブルにユーザーの情報を持ち、そのidを別のテーブルにuser_idなどとして持つと、
テーブルの連結ができる

・データの型が決まっている
CHAR型、 INT型, DATE型などで入れられるデータが決まっているので
それ以外のものを入れられないので変なデータが入らず、整合性が高まる

・トランザクションで整合性が保てる
トランザクションを複数行ではれるので、途中で失敗してもロールバックすることですべてをもとに戻せる。

リレーショナルデータベースのデメリット

・データ量が増加することにより、パフォーマンス低下に繋がる
膨大なデータ(例えばユーザーログ)等とは相性が悪い。

・データの型が決まっているので自由にデータを入れられない
JSON型のデータなどを扱うには相性が悪く、さらにカラムを1個追加する場合はSQLが必要である。

基本的にはスケールアップ(DBサーバーのスペックを上げること)でしか対応できない
スケールアップにも限界があるので、巨大なシステムになるといつか詰む。

NoSQLのメリット

・データの型が決まってないので自由にデータを入れられる
JSON型でもINT型でもDATE型でも、どんなデータでも自由に入れられるので拡張性がある。

・スケールアップでなくスケールアウト出来る
DBサーバーの台数を増やせるので柔軟に対応出来る

・拡張性に優れている
何個も簡単にレプリカつくれたりする

NoSQLのデメリット

・一貫性ががない
トランザクション処理に弱いので、ここからここまでで一個のトランザクションっていうのが出来ない
※基本的には1トランザクション1件になる

NoSQLは万能なわけではない

NoSQL向きなものとして例をあげると
ツイッターのメッセージ等は投稿してすぐに世界中のみんなが見れなくても特に問題にはならない
そのかわり、毎日大量に投稿される

逆にNoSQLに向いてないものとして整合性が重視されるものがある
銀行口座の金額は必ず正確でなければいけないし、予約システムでは二重予約などがおこってはいけない。
こういうものはリレーショナルデータベースが向いている

最後に

これらの基礎知識をもったうえで次はAzure CosmosDBについて実際にに触れていく
→次へ続く...

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2