酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

RDBMSとNoSQLのメリット・デメリットについて

RDBMSとNoSQLの特徴、メリット・デメリットについて調べたのでそのメモです。今まで言葉の表面的な部分ばかりを見てきていたことを反省中。自分の頭のなかにあるキーワードをしっかりと構造化していくように、基礎固めを頑張ります!


RDBMS

概要

強み

* トランザクションによってデータの一貫性を保証
* 正規化(キーに基づいて複数テーブルを連鎖させることでデータ管理) => 更新コストの削減
* SQLを使うことができ、複雑な条件での検索や集計を行う事ができる
* 運用実績が豊富で、ノウハウが蓄積されている

弱み

(1) データの読み込み部分に関してはレプリケーションによってスケールさせることができる。 一方で、書き込み部分においてデータの一貫性を保証するためには、競合時の制御や振り分け処理などの対応が必要となり、導入の難易度が高い。

(2) カラムの追加やインデックスの追加時に長時間のロックがかかる可能性がある

NoSQL

概要

「Not Only SQL」の略。 RDBMSではないデータベースシステムを表す概念。特定の処理に特化した仕組みが幾つかある。 KVS(Key-Value Store型)のMemcacheやRedis、ドキュメント指向型のMongoDBが有名。

特徴

(1) RDBMSよりもスケールアウト(サーバを増加させることで性能をアップ)させやすい
(2) スキーマレスなので、カラムを自由に定義することができる
(3) トランザクションやテーブル間のジョインのような仕組みがないものが多い

弱み

(1) 参照や追加処理が大半のシステムに適している。更新や削除処理が多い仕組みには向かない
(2) 複数サーバにデータが分散している場合は、サーバ間の整合性が保証されないケースが多い

Special Thanks

NoSQLデータベースが登場した背景と特徴

RDB開発者におくるNoSQLの常識(1):NoSQLはRDBMSに取って代わるものなのか? (1/3) - @IT

NoSQL徹底解剖!@ヒカリエ 勉強会に参加してきました。 - tagamidaiki.com

おすすめの書籍