📌
mixiさんの新卒研修が公開されてたから自分用備忘録としてまとめた~データベース~
[WIP]ミクシィの21新卒技術研修の資料と動画を公開します!
自分も21卒エンジニアなので、復習も兼ねてGitの動画を拝見しました
めちゃくちゃ勉強になった無料で見れてええんかコレ...
データシステム基礎
データシステム設計の機能要件
- データを保存/見つけられるようにする(DB)
- よく参照されるデータを記憶する(Cache)
- キーワードで検索できる(SearchIndex)
データシステム設計の非機能要件
- 信頼性・・・何か問題が生じたとしても正しく動作し続けるか、fault(問題を起こしうるもの)耐性があるか
- スケーラビリティ
- スケールアップ・・・マシンを強力に
- スケールアウト・・・負荷分散
- メンテナンス性
- 運用性・・・ヘルスチェックして効率的な管理方法か
- 単純性・・・抽象化でクリーンなアーキテクチャになってるか
- 進化性・・・システムの修正容易性、開発技法に影響
汎用的なデータモデル
- リレーショナルモデル・・・SQL、手続き的にデータを探す必要がなく、スキーマを強制
- ドキュメントモデル・・・NoSQL、JSON、スキーマを強制せず、ローカリティに優れている
- グラフデータモデル・・・多対多に特化したモデルで、手続き的
- スキーマとは・・・構造化または構造のこと、構造的なことを強制
- ローカリティとは・・・参照やアクセスが一部分に偏ったり集中すること
クエリ言語・・・問い合わせ言語
- SQLは宣言的クエリ言語、クエリを宣言することでSQLを操作できる
ストレージエンジン・・・データの保存と取り出しを行う方法を決めるもの
- OLTP
- エンドユーザーとやりとりするインタラクティブな用途で利用
- 大量データから特定のキーの値を効率的に見つけることに長けている
- OLAP
- 分析用途に特化した列指向(MySQLは行指向)
- 書き込みが苦手
エンコーディング・・・インメモリの表現からバイトの並びへ変換すること
後方互換性、前方互換性
分散データの取り扱い
レプリケーション・・・複数のマシンに同じデータのコピーを保持しておくこと
パーティショニング・・・データを分割して保存
トランザクション・・・全ての読み書きを1つの操作として実行
Discussion