RDBMSとNoSQLの特徴、メリット・デメリットについて調べたのでそのメモです。今まで言葉の表面的な部分ばかりを見てきていたことを反省中。自分の頭の中にあるキーワードをしっかりと構造化していくように、基礎固めを頑張ります!
🎳 RDBMS
概要
- 1件のデータを複数のフィールドの集合として表現する。データの集合をテーブルで表す
- ACID属性をもつ => ACID (コンピュータ科学) - Wikipedia
強み
* トランザクションによってデータの一貫性を保証 * 正規化(キーに基づいて複数テーブルを連鎖させることでデータ管理) => 更新コストの削減 * SQLを使うことができ、複雑な条件での検索や集計を行う事ができる * 運用実績が豊富で、ノウハウが蓄積されている
弱み
(1) データの読み込み部分に関してはレプリケーションによってスケールさせることができる。
一方で、書き込み部分においてデータの一貫性を保証するためには、競合時の制御や振り分け処理などの対応が必要となり、導入の難易度が高い。
(2) カラムの追加やインデックスの追加時に長時間のロックがかかる可能性がある
😎 NoSQL
概要
「Not Only SQL」の略。
RDBMSではないデータベースシステムを表す概念。特定の処理に特化したしくみがいくつかある。
KVS(key-value Store型)のMemcacheやRedis、ドキュメント指向型のMongoDBが有名。
特徴
(1) RDBMSよりもスケールアウト(サーバを増加させることで性能をアップ)させやすい (2) スキーマレスなので、カラムを自由に定義することができる (3) トランザクションやテーブル間のジョインのような仕組みがないものが多い
弱み
(1) 参照や追加処理が大半のシステムに適している。更新や削除処理が多い仕組みには向かない (2) 複数サーバにデータが分散している場合は、サーバ間の整合性が保証されないケースが多い
🚌 参考リンク
RDB開発者におくるNoSQLの常識(1):NoSQLはRDBMSに取って代わるものなのか? (1/3) - @IT
NoSQL徹底解剖!@ヒカリエ 勉強会に参加してきました。 - tagamidaiki.com