📌

mixiさんの新卒研修が公開されてたから自分用備忘録としてまとめた~データベース~

2021/05/22に公開

[WIP]ミクシィの21新卒技術研修の資料と動画を公開します!
自分も21卒エンジニアなので、復習も兼ねてGitの動画を拝見しました
めちゃくちゃ勉強になった無料で見れてええんかコレ...

データシステム基礎

データシステム設計の機能要件

  • データを保存/見つけられるようにする(DB)
  • よく参照されるデータを記憶する(Cache)
  • キーワードで検索できる(SearchIndex)

データシステム設計の非機能要件

  • 信頼性・・・何か問題が生じたとしても正しく動作し続けるか、fault(問題を起こしうるもの)耐性があるか
  • スケーラビリティ
    • スケールアップ・・・マシンを強力に
    • スケールアウト・・・負荷分散
  • メンテナンス性
    • 運用性・・・ヘルスチェックして効率的な管理方法か
    • 単純性・・・抽象化でクリーンなアーキテクチャになってるか
    • 進化性・・・システムの修正容易性、開発技法に影響

汎用的なデータモデル

  • リレーショナルモデル・・・SQL、手続き的にデータを探す必要がなく、スキーマを強制
  • ドキュメントモデル・・・NoSQL、JSON、スキーマを強制せず、ローカリティに優れている
  • グラフデータモデル・・・多対多に特化したモデルで、手続き的
    • スキーマとは・・・構造化または構造のこと、構造的なことを強制
    • ローカリティとは・・・参照やアクセスが一部分に偏ったり集中すること

クエリ言語・・・問い合わせ言語

  • SQLは宣言的クエリ言語、クエリを宣言することでSQLを操作できる

ストレージエンジン・・・データの保存と取り出しを行う方法を決めるもの

  • OLTP
    • エンドユーザーとやりとりするインタラクティブな用途で利用
    • 大量データから特定のキーの値を効率的に見つけることに長けている
  • OLAP
    • 分析用途に特化した列指向(MySQLは行指向)
    • 書き込みが苦手

エンコーディング・・・インメモリの表現からバイトの並びへ変換すること
後方互換性、前方互換性

分散データの取り扱い

レプリケーション・・・複数のマシンに同じデータのコピーを保持しておくこと
パーティショニング・・・データを分割して保存
トランザクション・・・全ての読み書きを1つの操作として実行

GitHubで編集を提案

Discussion