データ指向アプリケーションデザイン 感想(前半)
タグ:
技術書感想
データベースの基礎から分散データの扱いまで
めちゃくちゃ面白い。Twitterで紹介されてるのを見て即買ったけど当たりだった。
ただあまりにも長すぎるので、半分読んだ時点で振り返り。
(他は、「JavaScript 第7版」と今度出る「詳解 システム・パフォーマンス 第2版」ですかね・・)
DBスペシャリスト落ちた時に分散システム周りの単語が全然理解できなかったけど、これ読んでるとめちゃ理解が進む気がするなあ。
やっぱり原理原則に一度触れておくのは大事。
第1部 信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション
・アプリケーションは演算指向ではなく
・データシステム(DBやキャッシュ、キューなど)を設計する上で課題となるのは、信頼性、スケーラビリティ、メンテナンス性の3つ
信頼性・・・何か問題が生じたとしても正しく動作し続けること。
スケーラビリティ・・・負荷の増大に対してシステムが対応できる能力のこと。
メンテナンス性・・・メンテナンスがしやすいこと(運用性、単純性、進化性を持つこと)。
第2部 データモデルとクエリ言語
・代表的なデータモデルとして
・NoSQLのうち代表的なものは
リレーショナルモデル・・・非常に汎用性があるモデル。
ドキュメントモデル・・・フォルダ構成のように、ほとんどが1対多で構成されたり、ノード間の関係が薄い場合。
グラフモデル・・・ドキュメントとは逆で、ほとんどが多対多で構成されており、ノード間の関係が強い場合。
第3部 ストレージと抽出
・ストレージエンジンは
トランザクション処理・・・一般ユーザーからの大量のリクエストを受けるが、1つのリクエストに必要なレコードは少量。
分析処理・・・・主にアナリストが使用するもので、リクエストの数は少ないが、1つのリクエストに大量のレコードが必要。
・トランザクション処理には
log-structuredの考え方・・・ファイルに対して追記と古いものの削除だけを行い、更新は決して行わない。
インプレースで更新を行う考え方・・・ディスクを更新可能な固定サイズの集合とする。
・分析処理には
列指向のストレージ・・・行ごとではなく列ごとにデータをまとめる方法。分析は列ごとに行うことが多いため。
第4部 エンコーディングと進化
(追記します)