mirror of
				https://github.com/donnemartin/system-design-primer.git
				synced 2025-11-04 10:12:32 +03:00 
			
		
		
		
	Add Ebook generation script (#207)
This commit is contained in:
		
				
					committed by
					
						
						Donne Martin
					
				
			
			
				
	
			
			
			
						parent
						
							0022c9708e
						
					
				
				
					commit
					55d09f611d
				
			
							
								
								
									
										60
									
								
								README-ja.md
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								README-ja.md
									
									
									
									
									
								
							@@ -3,7 +3,7 @@
 | 
			
		||||
# システム設計入門
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/jj3A5N8.png">
 | 
			
		||||
  <img src="http://i.imgur.com/jj3A5N8.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
## 暗記カード
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/zdCAkB3.png">
 | 
			
		||||
  <img src="http://i.imgur.com/zdCAkB3.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +61,7 @@
 | 
			
		||||
コード技術面接用の問題を探している場合は[**こちら**](https://github.com/donnemartin/interactive-coding-challenges)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/b4YtAEN.png">
 | 
			
		||||
  <img src="http://i.imgur.com/b4YtAEN.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -91,7 +91,7 @@
 | 
			
		||||
> それぞれのセクションはより学びを深めるような他の文献へのリンクが貼られています。
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/jrUBAF7.png">
 | 
			
		||||
  <img src="http://i.imgur.com/jrUBAF7.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -436,7 +436,7 @@
 | 
			
		||||
### CAP 理論
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/bgLMI2u.png">
 | 
			
		||||
  <img src="http://i.imgur.com/bgLMI2u.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://robertgreiner.com/2014/08/cap-theorem-revisited>Source: CAP theorem revisited</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -530,7 +530,7 @@
 | 
			
		||||
## ドメインネームシステム
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/IOyLj4i.jpg">
 | 
			
		||||
  <img src="http://i.imgur.com/IOyLj4i.jpg"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/srikrupa5/dns-security-presentation-issa>Source: DNS security presentation</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -568,7 +568,7 @@ DNSは少数のオーソライズされたサーバーが上位に位置する
 | 
			
		||||
## コンテンツデリバリーネットワーク(Content delivery network)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/h9TAuGI.jpg">
 | 
			
		||||
  <img src="http://i.imgur.com/h9TAuGI.jpg"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://www.creative-artworks.eu/why-use-a-content-delivery-network-cdn/>Source: Why use a CDN</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -609,7 +609,7 @@ CDNを用いてコンテンツを配信することで以下の二つの理由
 | 
			
		||||
## ロードバランサー
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/h81n9iK.png">
 | 
			
		||||
  <img src="http://i.imgur.com/h81n9iK.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html>Source: Scalable system design patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -679,7 +679,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
 | 
			
		||||
## リバースプロキシ(webサーバー)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/n41Azff.png">
 | 
			
		||||
  <img src="http://i.imgur.com/n41Azff.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://upload.wikimedia.org/wikipedia/commons/6/67/Reverse_proxy_h2g2bob.svg>Source: Wikipedia</a></i>
 | 
			
		||||
  <br/>
 | 
			
		||||
@@ -722,7 +722,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
 | 
			
		||||
## アプリケーション層
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/yB5SYwm.png">
 | 
			
		||||
  <img src="http://i.imgur.com/yB5SYwm.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer>Source: Intro to architecting systems for scale</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -759,7 +759,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
 | 
			
		||||
## データベース
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/Xkm5CXz.png">
 | 
			
		||||
  <img src="http://i.imgur.com/Xkm5CXz.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://www.youtube.com/watch?v=w95murBkYmU>Source: Scaling up to your first 10 million users</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -782,7 +782,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
 | 
			
		||||
マスターデータベースが読み取りと書き込みを処理し、書き込みを一つ以上のスレーブデータベースに複製します。スレーブデータベースは読み取りのみを処理します。スレーブデータベースは木構造のように追加のスレーブにデータを複製することもできます。マスターデータベースがオフラインになった場合には、いずれかのスレーブがマスターに昇格するか、新しいマスターデータベースが追加されるまでは読み取り専用モードで稼働します。
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/C9ioGtn.png">
 | 
			
		||||
  <img src="http://i.imgur.com/C9ioGtn.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -797,7 +797,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
 | 
			
		||||
いずれのマスターも読み取り書き込みの両方に対応する。書き込みに関してはそれぞれ協調する。いずれかのマスターが落ちても、システム全体としては読み書き両方に対応したまま運用できる。
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/krAHLGg.png">
 | 
			
		||||
  <img src="http://i.imgur.com/krAHLGg.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -825,7 +825,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
 | 
			
		||||
#### Federation
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/U3qV33e.png">
 | 
			
		||||
  <img src="http://i.imgur.com/U3qV33e.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://www.youtube.com/watch?v=w95murBkYmU>Source: Scaling up to your first 10 million users</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -846,7 +846,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
 | 
			
		||||
#### シャーディング
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/wU8x5Id.png">
 | 
			
		||||
  <img src="http://i.imgur.com/wU8x5Id.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -990,7 +990,7 @@ NoSQL は **key-value store**、 **document-store**、 **wide column store**、
 | 
			
		||||
#### ワイドカラムストア
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/n16iOGk.png">
 | 
			
		||||
  <img src="http://i.imgur.com/n16iOGk.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://blog.grio.com/2015/11/sql-nosql-a-brief-history.html>Source: SQL & NoSQL, a brief history</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1013,7 +1013,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
 | 
			
		||||
#### グラフデータベース
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/fNcl65g.png">
 | 
			
		||||
  <img src="http://i.imgur.com/fNcl65g.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://en.wikipedia.org/wiki/File:GraphDatabase_PropertyGraph.png>Source: Graph database</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1041,7 +1041,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
 | 
			
		||||
### SQLか?NoSQLか?
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/wXGqG5f.png">
 | 
			
		||||
  <img src="http://i.imgur.com/wXGqG5f.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://www.infoq.com/articles/Transition-RDBMS-NoSQL/>Source: Transitioning from RDBMS to NoSQL</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1083,7 +1083,7 @@ NoSQLに適するサンプルデータ:
 | 
			
		||||
## キャッシュ
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/Q6z24La.png">
 | 
			
		||||
  <img src="http://i.imgur.com/Q6z24La.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html>Source: Scalable system design patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1154,7 +1154,7 @@ Redisはさらに以下のような機能を備えています:
 | 
			
		||||
#### キャッシュアサイド
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/ONjORqk.png">
 | 
			
		||||
  <img src="http://i.imgur.com/ONjORqk.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast>Source: From cache to in-memory data grid</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1190,7 +1190,7 @@ def get_user(self, user_id):
 | 
			
		||||
#### ライトスルー
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/0vBc0hN.png">
 | 
			
		||||
  <img src="http://i.imgur.com/0vBc0hN.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1225,7 +1225,7 @@ def set_user(user_id, values):
 | 
			
		||||
#### ライトビハインド (ライトバック)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/rgSrvjG.png">
 | 
			
		||||
  <img src="http://i.imgur.com/rgSrvjG.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1243,7 +1243,7 @@ def set_user(user_id, values):
 | 
			
		||||
#### リフレッシュアヘッド
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/kxtjqgE.png">
 | 
			
		||||
  <img src="http://i.imgur.com/kxtjqgE.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast>Source: From cache to in-memory data grid</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1275,7 +1275,7 @@ def set_user(user_id, values):
 | 
			
		||||
## 非同期処理
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/54GYsSx.png">
 | 
			
		||||
  <img src="http://i.imgur.com/54GYsSx.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer>Source: Intro to architecting systems for scale</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1321,7 +1321,7 @@ def set_user(user_id, values):
 | 
			
		||||
## 通信
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/5KeocQs.jpg">
 | 
			
		||||
  <img src="http://i.imgur.com/5KeocQs.jpg"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.escotal.com/osilayer.html>Source: OSI 7 layer model</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1353,7 +1353,7 @@ HTTPは**TCP** や **UDP** などの低級プロトコルに依存している
 | 
			
		||||
### 伝送制御プロトコル (TCP)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/JdAsdvG.jpg">
 | 
			
		||||
  <img src="http://i.imgur.com/JdAsdvG.jpg"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/>Source: How to make a multiplayer game</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1377,7 +1377,7 @@ TCPは高い依存性を要し、時間制約が厳しくないものに適し
 | 
			
		||||
### ユーザデータグラムプロトコル (UDP)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/yzDrJtA.jpg">
 | 
			
		||||
  <img src="http://i.imgur.com/yzDrJtA.jpg"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/>Source: How to make a multiplayer game</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1406,7 +1406,7 @@ TCPよりもUDPを使うのは:
 | 
			
		||||
### 遠隔手続呼出 (RPC)
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/iF4Mkb5.png">
 | 
			
		||||
  <img src="http://i.imgur.com/iF4Mkb5.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview>Source: Crack the system design interview</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
@@ -1602,7 +1602,7 @@ Notes
 | 
			
		||||
| 質問 | 解答 |
 | 
			
		||||
|---|---|
 | 
			
		||||
| Dropboxのようなファイル同期サービスを設計する | [youtube.com](https://www.youtube.com/watch?v=PE4gwstWhmc) |
 | 
			
		||||
| Googleのような検索エンジンの設計 | [queue.acm.org](http://queue.acm.org/detail.cfm?id=988407)<br/>[stackexchange.com](http://programmers.stackexchange.com/questions/38324/interview-question-how-would-you-implement-google-search)<br/>[ardendertat.com](http://www.ardendertat.com/2012/01/11/implementing-search-engines/)<br>[stanford.edu](http://infolab.stanford.edu/~backrub/google.html) |
 | 
			
		||||
| Googleのような検索エンジンの設計 | [queue.acm.org](http://queue.acm.org/detail.cfm?id=988407)<br/>[stackexchange.com](http://programmers.stackexchange.com/questions/38324/interview-question-how-would-you-implement-google-search)<br/>[ardendertat.com](http://www.ardendertat.com/2012/01/11/implementing-search-engines/)<br/>[stanford.edu](http://infolab.stanford.edu/~backrub/google.html) |
 | 
			
		||||
| Googleのようなスケーラブルなwebクローラーの設計 | [quora.com](https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch) |
 | 
			
		||||
| Google docsの設計 | [code.google.com](https://code.google.com/p/google-mobwrite/)<br/>[neil.fraser.name](https://neil.fraser.name/writing/sync/) |
 | 
			
		||||
| Redisのようなキーバリューストアの設計 | [slideshare.net](http://www.slideshare.net/dvirsky/introduction-to-redis) |
 | 
			
		||||
@@ -1629,7 +1629,7 @@ Notes
 | 
			
		||||
> 世の中のシステムがどのように設計されているかについての記事
 | 
			
		||||
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <img src="http://i.imgur.com/TcUo2fw.png">
 | 
			
		||||
  <img src="http://i.imgur.com/TcUo2fw.png"/>
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=https://www.infoq.com/presentations/Twitter-Timeline-Scalability>Source: Twitter timelines at scale</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user