システム設計の基本を無料で学べるGithubリポジトリ[System Design Primer]の良い点・物足りない点

Software Design

system-design-primer/README-ja.md at master · donnemartin/system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. - donnemartin/s...

どんなサイトか?

このサイトはシステム設計の基礎に関して包括的に解説をしています。

扱っているトピックはパフォーマンス・スケーラビリティ・一貫性・データベース・キャッシュ・ネットワークなど幅広いです。

初心者のエンジニアは自分が好きな領域に関してざっと目を通して置くとかなり実務でも役に立つと思います。

データベースに関するトピック

私は特にデータベースに関するトピックが好きなので、どのような内容を扱っているかご紹介します。

以下の通り、データベースに関しては、RDB・NoSQLについてざっくりと扱っています。

RDBMS

レプリケーションに関する知識やシャーディングについては特にジュニアレベルのアプリケーションのエンジニアだとあまり役に立たないかもしれないですが、アーキテクチャを考える上でとても重要なので呼んでおくと良いと思います。

またSQLチューニングのトピックでもざっくりどのようなことをするとパフォーマンス劣化するからやめようみたいなことがかかれています。

例えば、NULL値はパフォーマンス劣化の原因となることがある、みたいな話です。

NoSQL

NoSQLについては、NoSQLにはどのようなジャンルのDBがあり、それぞれのメリット・デメリットが解説されています。

これも技術選定の際に参考になるので、一通り目を通しておきたいですね。

物足りない点

NewSQLに関する記載は無い

ただいくつか物足りない点があります。

例えば、NewSQLに関するトピックは2025年3月時点で取り上げられていません。

NewSQLは読み書きが水平スケールしなおかつACID特性があるクラウドネイティブなDBとして、近年注目されており、PayPayやMercariなどの国内のビックテックも採用していたりします。

もしNewSQLについてご存じない方は、以下の記事を一読することをおすすめします。

SQLチューニング

また他の点で言うとSQLチューニングに関して、もっといろいろな方法が紹介されていると良いなと思いました。

例えば過剰なジョインに対する解決策として非https://amzn.to/3DYiYEh正規化が記事内で紹介されていますが、他にもサブクエリとして先に絞り込むことでジョインコストを低くする方法などもあります。

そのようなトピックについては以下の書籍も参考にしてみると良いです。

どちらの書籍もDBの構造を踏まえた上でどのようにパフォーマンスに優れたクエリを書くのか?という点について解説しています。おすすめ。

タイトルとURLをコピーしました