2025-06-07 16:16:12 +03:00
*[English](README.md) ∙ [日本語 ](README-ja.md ) ∙ [简体中文 ](README-zh-Hans.md ) ∙ [繁體中文 ](README-zh-TW.md ) | [العَرَبِيَّة ](https://github.com/donnemartin/system-design-primer/issues/170 ) ∙ [বাংলা ](https://github.com/donnemartin/system-design-primer/issues/220 ) ∙ [Português do Brasil ](https://github.com/donnemartin/system-design-primer/issues/40 ) ∙ [Deutsch ](https://github.com/donnemartin/system-design-primer/issues/186 ) ∙ [ελληνικά ](https://github.com/donnemartin/system-design-primer/issues/130 ) ∙ [עברית ](https://github.com/donnemartin/system-design-primer/issues/272 ) ∙ [Italiano ](https://github.com/donnemartin/system-design-primer/issues/104 ) ∙ [한국어 ](https://github.com/donnemartin/system-design-primer/issues/102 ) ∙ [فارسی ](https://github.com/donnemartin/system-design-primer/issues/110 ) ∙ [Polski ](https://github.com/donnemartin/system-design-primer/issues/68 ) ∙ [русский язык ](https://github.com/donnemartin/system-design-primer/issues/87 ) ∙ [Español ](https://github.com/donnemartin/system-design-primer/issues/136 ) ∙ [ภาษาไทย ](https://github.com/donnemartin/system-design-primer/issues/187 ) ∙ [Türkçe ](https://github.com/donnemartin/system-design-primer/issues/39 ) ∙ [tiếng Việt ](https://github.com/donnemartin/system-design-primer/issues/127 ) ∙ [Français ](https://github.com/donnemartin/system-design-primer/issues/250 ) | [Add Translation ](https://github.com/donnemartin/system-design-primer/issues/28 )*
**עזרו [לתרגם ](TRANSLATIONS.md ) את המדריך!**
# המדריך לתכנון מערכות (The System Design Primer)
< p align = "center" >
< img src = "images/jj3A5N8.png" >
< br / >
< / p >
## מוטיבציה
< div dir = "rtl" >
> ללמוד איך לתכנן מערכות ב-scale גדול.
>
> להתכונן לראיונות ארכיטקטורה.
### ללמוד איך לתכנן מערכות ב-scale גדול
ללמוד כיצד לתכנן מערכות סְקֵילָבִּילִיוּת יסייע לך להפוך למהנדס תוכנה טוב יותר.
תכנון מערכות הוא נושא רחב. יש ** כמות אדירה של משאבים ברחבי הרשת** על עקרונות של תכנון מערכות.
ה-repo הזה הוא ** אוסף מסודר** של משאבים שנועדו לעזור לך ללמוד איך לבנות מערכות ב-scale.
### ללמוד מקהילת הקוד הפתוח
מדובר בפרויקט קוד פתוח (open source) שמתעדכן באופן מתמשך.
מוזמנים [לתרום! ](#contributing )
### להתכונן לראיונות ארכיטקטורה
בנוסף לראיונות קידוד, ארכיטקטורה היא ** רכיב נדרש** כחלק מתהליך ** ראיונות טכניים** בהרבה חברות טכנולוגיות.
**תוכל לתרגל שאלות ארכיטקטורה נפוצות** ואף ** להשוות** את התוצאות שלך עם ** פתרונות לדוגמה**: דיונים, קוד, ודיאגרמות.
### נושאים נוספים להכנה לראיונות:
< ul >
< li > < a href = "#study-guide" > מדריך למידה< / a > < / li >
< li > < a href = "#how-to-approach-a-system-design-interview-question" > איך לגשת לשאלת תכנון מערכת בראיון< / a > < / li >
< li > < a href = "#system-design-interview-questions-with-solutions" > שאלות ראיון בתכנון מערכות, < strong > כולל פתרונות< / strong > < / a > < / li >
< li > < a href = "#object-oriented-design-interview-questions-with-solutions" > שאלות ראיון בתכנון מונחה עצמים, < strong > כולל פתרונות< / strong > < / a > < / li >
< li > < a href = "#additional-system-design-interview-questions" > שאלות נוספות לראיונות תכנון מערכות< / a > < / li >
< / ul >
< / div >
2025-06-07 20:22:53 +03:00
## כרטיסיות Anki
< div dir = "rtl" >
< p align = "center" >
< img src = "images/zdCAkB3.png" >
< br / >
< / p >
החבילות המוכנות של כרטיסיות [Anki ](https://apps.ankiweb.net/ ) משתמשות בשיטת ** חזרתיות מבוססת מרווחים (Spaced Repetition)** כדי לעזור לך לזכור מושגים חשובים בתכנון מערכות.
< ul dir = "rtl" >
< li > < a href = "https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design.apkg" > חבילת תכנון מערכות< / a > < / li >
< li > < a href = "https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design%20Exercises.apkg" > חבילת תרגילים בתכנון מערכות< / a > < / li >
< li > < a href = "https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/OO%20Design.apkg" > חבילת תכנון מונחה עצמים< / a > < / li >
< / ul >
מומלצות לשימוש בדרכים.
### משאב לראיונות קידוד: אתגרי קידוד אינטראקטיביים
מחפש משאבים שיעזרו לך להתכונן [**לראיונות קידוד** ](https://github.com/donnemartin/interactive-coding-challenges )?
< p align = "center" >
< img src = "images/b4YtAEN.png" >
< br / >
< / p >
תעיף מבט על ה-repo המקביל [**Interactive Coding Challenges** ](https://github.com/donnemartin/interactive-coding-challenges ), שמכיל חבילת Anki נוספת:
< ul dir = "rtl" >
< li > < a href = "https://github.com/donnemartin/interactive-coding-challenges/tree/master/anki_cards/Coding.apkg" > חבילת קידוד< / a > < / li >
< / ul >
< / div >
2025-06-08 12:53:00 +03:00
## תרומה למדריך
< div dir = "rtl" >
> ללמוד מהקהילה.
אל תהסס להגיש pull requests כדי לעזור:
< ul dir = "rtl" >
< li > תיקון שגיאות< / li >
< li > שיפור קטעים קיימים< / li >
< li > הוספת קטעים חדשים< / li >
< li > < a href = "https://github.com/donnemartin/system-design-primer/issues/28" > תרגום לשפות נוספות< / a > < / li >
< / ul >
תכנים שעדיין דורשים ליטוש מסומנים בתור < a href = "#under-development" > תחת פיתוח< / a > .
מומלץ לעיין ב< a href = "CONTRIBUTING.md" > הנחיות לתרומה< / a > לפני התחלה.
< / div >
2025-06-08 17:50:46 +03:00
## אינדקס נושאים בתכנון מערכות
< div dir = "rtl" >
> סיכומים של נושאים שונים בתכנון מערכות, כולל יתרונות וחסרונות. **כל החלטה כוללת פשרות (trade-offs)**.
>
> כל חלק מכיל קישורים להרחבה וללמידה מעמיקה יותר.
< p align = "center" >
< img src = "images/jrUBAF7.png" >
< br / >
< / p >
< ul dir = "rtl" >
< li > < a href = "#system-design-topics-start-here" > נושאים בתכנון מערכות: התחל כאן< / a >
< ul >
< li > < a href = "#step-1-review-the-scalability-video-lecture" > שלב 1: צפה בהרצאה על סקילביליות< / a > < / li >
< li > < a href = "#step-2-review-the-scalability-article" > שלב 2: קרא מאמרים על סקילביליות< / a > < / li >
< li > < a href = "#next-steps" > השלבים הבאים< / a > < / li >
< / ul >
< / li >
< li > < a href = "#performance-vs-scalability" > ביצועים (performance) מול סקילביליות (scalability)< / a > < / li >
< li > < a href = "#latency-vs-throughput" > שיהוי (latency) מול תפוקה (throughput)< / a > < / li >
< li > < a href = "#availability-vs-consistency" > זמינות (availability) מול עקביות (consistency)< / a >
< ul >
< li > < a href = "#cap-theorem" > משפט CAP< / a >
< ul >
2025-06-08 17:59:58 +03:00
< li > < a href = "#cp---consistency-and-partition-tolerance" > עקביות וטולרנטיות לפיצול (CP)< / a > < / li >
< li > < a href = "#ap---availability-and-partition-tolerance" > זמינות וטולרנטיות לפיצול (AP)< / a > < / li >
2025-06-08 17:50:46 +03:00
< / ul >
< / li >
< / ul >
< / li >
< li > < a href = "#consistency-patterns" > דפוסי עקביות< / a >
< ul >
< li > < a href = "#weak-consistency" > עקביות חלשה (weak)< / a > < / li >
< li > < a href = "#eventual-consistency" > עקביות לא מיידית (eventual)< / a > < / li >
< li > < a href = "#strong-consistency" > עקביות חזקה (strong)< / a > < / li >
< / ul >
< / li >
< li > < a href = "#availability-patterns" > דפוסי זמינות< / a >
< ul >
< li > < a href = "#fail-over" > גיבוי בזמן כישלון (fail-over)< / a > < / li >
< li > < a href = "#replication" > שכפול (replication)< / a > < / li >
< li > < a href = "#availability-in-numbers" > זמינות במספרים< / a > < / li >
< / ul >
< / li >
< li > < a href = "#domain-name-system" > מערכת שמות דומיינים (DNS)< / a > < / li >
< li > < a href = "#content-delivery-network" > רשתות הפצת תוכן (CDN)< / a >
< ul >
< li > < a href = "#push-cdns" > דחיפה (Push)< / a > < / li >
< li > < a href = "#pull-cdns" > משיכה (Pull)< / a > < / li >
< / ul >
< / li >
< li > < a href = "#load-balancer" > מאזן עומסים (load balancer)< / a >
< ul >
< li > < a href = "#active-passive" > אקטיבי-פסיבי (active-passive)< / a > < / li >
< li > < a href = "#active-active" > אקטיבי-אקטיבי (active-active)< / a > < / li >
< li > < a href = "#layer-4-load-balancing" > איזון עומסים בשכבה 4< / a > < / li >
< li > < a href = "#layer-7-load-balancing" > איזון עומסים בשכבה 7< / a > < / li >
< li > < a href = "#horizontal-scaling" > גדילה אופקית (horizontal)< / a > < / li >
< / ul >
< / li >
< li > < a href = "#reverse-proxy-web-server" > פרוקסי 'הפוך' (Reverse Proxy)< / a >
< ul >
< li > < a href = "#load-balancer-vs-reverse-proxy" > מאזן עומסים לעומת פרוקסי הפוך< / a > < / li >
< / ul >
< / li >
< li > < a href = "#application-layer" > שכבת האפליקציה< / a >
< ul >
< li > < a href = "#microservices" > מיקרוסרביסים (microservices)< / a > < / li >
< li > < a href = "#service-discovery" > גילוי שירותים (service discovery)< / a > < / li >
< / ul >
< / li >
< li > < a href = "#database" > מסדי נתונים< / a >
< ul >
< li > < a href = "#relational-database-management-system-rdbms" > מסדי נתונים רלציוניים (RDBMS)< / a >
< ul >
< li > < a href = "#master-slave-replication" > שכפול Master-Slave< / a > < / li >
< li > < a href = "#master-master-replication" > שכפול Master-Master< / a > < / li >
< li > < a href = "#federation" > פדרציה (federation)< / a > < / li >
< li > < a href = "#sharding" > חלוקה (sharding)< / a > < / li >
< li > < a href = "#denormalization" > דה-נורמליזציה (denormalization)< / a > < / li >
< li > < a href = "#sql-tuning" > SQL Tuning< / a > < / li >
< / ul >
< / li >
< li > < a href = "#nosql" > NoSQL< / a >
< ul >
< li > < a href = "#key-value-store" > מפתח-ערך (Key-Value)< / a > < / li >
< li > < a href = "#document-store" > מסמכים (Document Store)< / a > < / li >
< li > < a href = "#wide-column-store" > רב-עמודות (Wide Column)< / a > < / li >
< li > < a href = "#graph-database" > גרפים (Graph DB)< / a > < / li >
< / ul >
< / li >
< li > < a href = "#sql-or-nosql" > SQL או NoSQL< / a > < / li >
< / ul >
< / li >
< li > < a href = "#cache" > מטמון (Cache)< / a >
< ul >
2025-06-08 17:59:58 +03:00
< li > < a href = "#client-caching" > מטמון בצד לקוח< / a > < / li >
< li > < a href = "#cdn-caching" > מטמון ב-CDN< / a > < / li >
< li > < a href = "#web-server-caching" > מטמון בשרת< / a > < / li >
< li > < a href = "#database-caching" > מטמון במסד נתונים< / a > < / li >
< li > < a href = "#application-caching" > מטמון באפליקציה< / a > < / li >
< li > < a href = "#caching-at-the-database-query-level" > מטמון ברמת שאילתה< / a > < / li >
< li > < a href = "#caching-at-the-object-level" > מטמון ברמת אובייקט< / a > < / li >
2025-06-08 17:50:46 +03:00
< li > < a href = "#when-to-update-the-cache" > מתי לעדכן את ה-cache?< / a >
< ul >
2025-06-08 17:59:58 +03:00
< li > < a href = "#cache-aside" > אסטרטגיית Cache-aside< / a > < / li >
< li > < a href = "#write-through" > אסטרטגיית Write-through< / a > < / li >
< li > < a href = "#write-behind-write-back" > אסטרטגיית Write-behind (write-back)< / a > < / li >
< li > < a href = "#refresh-ahead" > אסטרטגיית Refresh-ahead< / a > < / li >
2025-06-08 17:50:46 +03:00
< / ul >
< / li >
< / ul >
< / li >
< li > < a href = "#asynchronism" > אסינכרוניות (asynchronism)< / a >
< ul >
< li > < a href = "#message-queues" > תורי הודעות (MQ)< / a > < / li >
< li > < a href = "#task-queues" > תורי משימות< / a > < / li >
< li > < a href = "#back-pressure" > לחץ אחורי (Back Pressure)< / a > < / li >
< / ul >
< / li >
< li > < a href = "#communication" > תקשורת< / a >
< ul >
2025-06-08 17:59:58 +03:00
< li > < a href = "#transmission-control-protocol-tcp" > פרוטוקול Transmission control protocol (TCP)< / a > < / li >
< li > < a href = "#user-datagram-protocol-udp" > פרוטוקול User datagram protocol (UDP)< / a > < / li >
< li > < a href = "#remote-procedure-call-rpc" > קריאת Remote procedure call (RPC)< / a > < / li >
< li > < a href = "#representational-state-transfer-rest" > פרוטוקול Representational state transfer (REST)< / a > < / li >
2025-06-08 17:50:46 +03:00
< / ul >
< / li >
< li > < a href = "#security" > אבטחה< / a > < / li >
< li > < a href = "#appendix" > נספחים< / a >
< ul >
< li > < a href = "#powers-of-two-table" > טבלת חזקות של 2< / a > < / li >
< li > < a href = "#latency-numbers-every-programmer-should-know" > מספרי latency חשובים< / a > < / li >
< li > < a href = "#additional-system-design-interview-questions" > שאלות נוספות לראיונות< / a > < / li >
< li > < a href = "#real-world-architectures" > ארכיטקטורות מהעולם האמיתי< / a > < / li >
< li > < a href = "#company-architectures" > ארכיטקטורות של חברות< / a > < / li >
< li > < a href = "#company-engineering-blogs" > בלוגים טכניים של חברות< / a > < / li >
< / ul >
< / li >
< li > < a href = "#under-development" > תחת פיתוח< / a > < / li >
< li > < a href = "#credits" > קרדיטים< / a > < / li >
< li > < a href = "#contact-info" > פרטי קשר< / a > < / li >
< li > < a href = "#license" > רישיון< / a > < / li >
< / ul >
< / div >