מתן שירות לבסיס משתמשים גדול עם נתוני אחזור אמינים, עקביים ונמוכים הוא אתגר קשה מאוד עבור כל צוות עורפי. בלדג'ר, בחרנו את הבחירה האסטרטגית לארח שירותי הליבה של בלוקצ'יין משלנו. על ידי אי הסתמכות על צדדים שלישיים, אנו יכולים לנהל את נתוני הלקוחות שלנו בעצמנו, ולהבטיח שהתהליכים הבסיסיים עומדים בהנחיות האבטחה שלנו וביעדי רמת השירות (SLO) מוכווני הביצועים שלנו.
אבל האסטרטגיה הזו מביאה גם מערכת אתגרים משלה.
האתגר הראשון שלנו הוא להעביר את שירותי הליבה האלה לספק נתונים הרחק מכלי noSQL מגניבים ונוצצים. במאמר זה אצלול למה קיבלנו את ההחלטה הקשה הזו, המורכבויות שפגשנו והיתרונות שקטפנו.
המטרה של מאמר זה היא להראות את ההיבטים הטכניים שהובילו אותנו לבחור ב-PostgreSQL כשכבת האחסון הבסיסית החדשה שלנו לנתוני בלוקצ'יין.
צלול עמוק לתוך נתוני בלוקצ'יין
לנתוני בלוקצ'יין מספר תכונות מפתח.
ראשית, הוא הולך וגדל, ושום דבר לא נמחק ממנו לעולם. אולם בפועל, למרות שרוב הבלוקצ'יין אינו ניתן לשינוי, החלק הצעיר ביותר של הבלוקצ'יין עשוי להשתנות עקב קונפליקטים שצריך לפתור. ואכן, מכיוון שהרשת היא רשת עמית לעמית, מספר בלוקים לגיטימיים עשויים להתקיים במקביל באופן זמני. בדרך כלל, הישן יותר נמחק, וכתוצאה מכך מה שאנו מכנים ארגון מחדש. בקיצור, הנתונים מחולקים בין זנב קר בלתי משתנה ומצב ראש שמשתנה לעיתים רחוקות.
הבעיה שאנו מנסים לפתור היא שבעוד ש-blockchains מצוינים עבור נתונים סובלני תקלות ביזנטיים, הם פחות יעילים לחיתוך ולחתוך אותם על פני צירים רבים. כלומר, קשה מאוד לקבל את רשימת הפעולות שהשפיעו על חשבון. אפילו קבלת יתרת חשבון בבלוקצ'יין כמו ביטקוין היא אתגר כשאין לך עדיין את רשימת העסקאות.
כדי להתגבר על האתגרים הללו, Ledger Explorer Services מדד את כל הבלוקצ'יין.. זהו שירות גדול, קריטי ורגיש לביצועים שנכתב במלואו ב-Scala, באמצעות אפקט חתולים זמן ריצה בעל ביצועים גבוהים. אנחנו מעל 10 סל"ד בביטקוין, תוך שמירה על זנב P95 שהייה מתחת ל-100 אלפיות השנייה. אנחנו גם מגייסים 😊.
קצת היסטוריה
בתחילת הסיפור שלנו, הרבה לפני שהצטרפתי לחברה, שכבת שירות הנתונים של Ledger טופלה על ידי מסד נתונים Neo4j מוטבע. כל קופסת הגשה אינדקסה את הנתונים שלה והגישה אותם באופן מקומי, מה שגרם להרבה בעיות.
עקביות נתונים בין מופעים לא הובטחה, והגודל העצום של המצב שהיה צריך להיות אינדקס, בשילוב של שימוש בדיסק neo4j ו-RAM, לא היה ניתן להרחבה. בעיה זו רק החמירה ככל שהחברה גדלה, מה שהפך את זה למאתגר יותר ויותר להוליד מקרים חדשים.
קסנדרה נבחר אז כמנהל ההתקן הראשי של ההגדרה החדשה הזו: זהו מסד נתונים מקובץ, ניתן להרחבה אופקית, שנמצא בצד ה-AP של משפט CAP. זה פותר את הבעיות הקשורות לשיתוף נתונים ומאפשר הפרדה ברורה בין האינדקס, הרכיב המודע לבלוקצ'יין לבין שרתי ה-API חסרי הראש.
אבל מה הטעם בכך שכל המדינה ההיסטורית תהיה זמינה אם לעולם לא נקרא ממנו באמת?
לגבי מקרה השימוש שלנו, לעתים רחוקות יש צורך בנתונים היסטוריים גולמיים מכיוון שניתן לצבור ממנו את מצב החשבון של המשתמש שלנו. זה הוביל אותנו לאתגר את פתרון אחסון הנתונים הקיים המבוסס על מסד הנתונים המבוזר Cassandra.
נפח הנתונים שאנו צריכים לאחסן לכל בלוקצ'יין, אם כי בטווח הטרה-בייט, הוא לא מה שאפשר לכנות "ביג דאטה". יתר על כן, החלק של אם זה ישמש לענות על רוב השאילתות (המכונה The hot path) קטן עוד יותר. כיום ניתן למצוא בקלות שרתי חומרה עם יותר מ-16TB של אחסון NVMe SSD. קנה מידה אנכי הוא כלי חזק מאוד, וגם מסד נתונים יחסי.
לבסוף, הבעיה העיקרית שהייתה לנו עם ההגדרה הנוכחית של קסנדרה לא הייתה מודל האחסון הבזבזני או מקרה השימוש בנתונים לא מתאים, אלא חוסר הידידותיות למפתחים. פיתוח תכונה חדשה מבוססת נתונים על קסנדרה הוכיחה את עצמה כגוזלת זמן מיותר. חתרנו ליישם כל ציר חדש שעליו אנחנו צריכים לספק נתונים.
לאור המומחיות של הצוות שלנו במיומנויות מודל נתונים ובמיומנות SQL, PostgreSQL היה המועמד המושלם. פתרון זה נבדק בקרב, חזק, קל להרחבה, מה שהופך אותו לבחירה אידיאלית.
מדוע בחרנו ב-SQL על פני NoSQL:
- קורא / כותב יתרות: מקרה השימוש בנתוני בלוקצ'יין היה מוטה מאוד על פני קריאה ולא כתיבה (בלוקצ'יין כותב מעט מאוד נתונים בקצב סביר מאוד, אפילו עבור בלוקצ'יין כמו פוליגון). לקסנדרה יש יכולת לספוג כמות גבוהה מאוד של כתיבה - נתיב הקריאה הוא למעשה עוד מאשר נתיב הכתיבה.
- תמיכה באינדקס: מדדים הם מרכיב מפתח ב-DBMS כדי לענות על שאילתות ומקרים עסקיים חדשים או הזדמנויות. לקסנדרה יש תמיכה מוגבלת באינדקס. מדדים יעילים רק אם השאילתה כבר מציינת דרך לרסן את המחיצה שעליה תפעל השאילתה. אנחנו משלמים כאן את העלות שיש מופץ שרירותי מאגר מידע. תמיכת PostgreSQL למדדים יעילה, ניתנת להרחבה ובקצה.
- תמיכת צבירה: אותו מקרה עבור צבירה; מכיוון שקסנדרה אינה מאפשרת צבירה מרובת מחיצות ואינה סובלת שום סעיף GROUP BY בשפת השאילתה שלה, התמיכה שלה די לוקה בחסר. PostgreSQL מציעה תמיכת צבירה נרחבת, אפילו בסוגי נתונים אקזוטיים כמו טווחים ו-jsonb blobs.
- מודל נתונים: קסנדרה מאוד מאוד מגבילה באופן שבו מודל נתונים אפשרי. יש ליצור טבלה כמעט עבור כל בקשה שברצונך לענות עליה, ויש לבטל את הנתונים לשורות גדולות (באמצעות מלא חנות עמודים רחבה היבט של C* וגם העובדה שכותבים זולים). PostgreSQL מאפשר לנו למנף את ההיבט היחסי של הבלוקצ'יין (שיחות, עסקאות, חסימות) ושטח דיסק פנוי, ומעודד שימוש חוזר בנתונים.
- שאילתות אד-הוק וביקורת: היכולת להשתמש בסטנדרט המלא של SQL ולבצע שאילתות שרירותיות פירושה שנוכל לחקור ולחפש גורם שורש באג פוטנציאלי או שיש לנו נתונים גישושים למקרי שימוש עתידיים. אנחנו באמת יכולים להשתמש במסד הנתונים ככלי אינטראקטיבי וחכם ולא כאחסון מטופש. עושים זאת על קסנדרה ללא אשכול מחשוב אנליטיקס נרחב ויקר כמו Presto, Spark וכו' (וכאשר אנו פועלים על שרתי מתכת חשופים, אין לנו גישה לכלי ניתוח נתונים מבוזרים שהולידה בקלות כמו EMR).
- שימוש באחסון: ההנחה של קסנדרה היא שהאחסון זול מאוד וניתן להרחיב את האשכול בקלות עם מכונות חדשות. זה אומר ש יש לשלם עבור כל המגבלות הן על המדדים והן על אגרגציות עם אחסון. אין מדדים יעילים גלובליים ותמיכה בהצטרפות פירושו שעלינו לעשות דה-נורמליזציה ולאחסן עותק של כל הטבלה עבור כל ציר שאנו רוצים לבצע שאילתה. PostgreSQL חוסך מאיתנו טרה-בייט של אחסון.
- עֲקֵבִיוּת: מכיוון שקסנדרה היא מסד נתונים מבוזר, מונחה AP (התקשורת מתבצעת עם רכילות בין צמתים), העקביות היא רק בסופו של דבר מבחינת כתיבה. אתה יכול לכוון את מדיניות העקביות של כל הצהרה הן לקריאה והן לכתיבה, אך המטרה של מסד נתונים זה מעולם לא הייתה לקבל עקביות חזקה. ל-PostgreSQL יש סיפור חזק של שימוש למשימות קריטיות והוא עמיד מאוד. ריכוזיות פירושה גם שאין רשת מעורבת בנתיב הכתיבה.
- עסקאות ו-MVCC:
- עסקאות: קסנדרה תומכת רק עסקאות קלות משקל על שאילתות DML. ניתן ליישם אצווה מסוימת (doc) אבל ישנן מספר אזהרות, כלומר שהשורות צריכות להיות באותו שרת (=מחיצה) כדי לא לקבל ביצועים איומים.
- MVCC: קסנדרה תומכת בהחתמת זמן שורה אך ה-MVCC המלא אינו מובטח. דחיסה יכולה למחוק נתונים מיושנים ואין שום דרך לומר ל-C* שזה לא צריך (כמו למשל עם טרנזקציה ב-PG).
- PostgreSQL תומך במודל MVCC חזק המבטיח נתיב קריאה עקבי למשתמשים שלנו.
- נוסע: ל-PostgreSQL יש כלים רבים נוספים שנמצאים בשימוש נרחב להפעלת מסד הנתונים בקלות. יתר על כן, כלי כמו דרך טיסה מבטיח שנשמור על גרסאות חזקות של סכימת מסד הנתונים. כבר שילבנו אותו עם בסיס הקוד שלנו בהצלחה. אין מקבילה לרמת בגרות זו על קסנדרה.
- מדרגיות אופקית: זוהי נקודת המכירה העיקרית של Cassandra. פשוט הוסף עוד מכונות ככל שהנתונים שלך מתרחבים. אין מקבילה עבור PostgreSQL שכן יש לבצע פיצול וחלוקה ידנית.
איך אנחנו מתכננים להרחיב
כפי שראינו, החיסרון היחיד בשימוש בהגדרת Postgres הוא קנה מידה הן בקריאה והן באחסון. מה אנחנו יכולים לעשות כדי להתגבר על מגבלה זו?
הכלי היעיל הראשון שיש לנו הוא להפריד כל פרוטוקול או בלוקצ'יין שאנו תומכים בו למסד הנתונים שלו, כך שניתן להתאים אותו בהתאם לנפח והתעבורה. פילוח לפי תחום עסקי מבטיח שכבה ראשונה של קנה מידה.
על ידי לקיחת מושג זה הלאה, אנו יכולים גם לפלח נתונים היסטוריים קרים לחלוקה זמנית. הגרסאות האחרונות של Postgres שיפרו רבות את השימושיות של טבלאות מחולקות, שיכולות לאפשר להעביר נתונים בצורה חלקה על פני אשכול של מכונות. לדוגמה, נוכל להשתמש במכונות זולות יותר עם פחות כוח מחשוב כדי לארח את רוב הנתונים ההיסטוריים, תוך שמירה על קבצי זיכרון בשרניים המוערמים ב-RAM על מנת לארח טבלאות מצטברות ואת הפעולות האחרונות של המשתמש.
גישה זו עובדת טוב מאוד במקרה השימוש שלנו מכיוון שאין מפתחות זרים חוצי מחיצה באחסון היסטורי (הכל בסופו של דבר מחובר לבלוק). מנקודת המבט של השרת הראשי, ניתן היה לגשת לנתונים היסטוריים אפילו בשקיפות באמצעות חלוקה למחיצות וסיומת postgres_fdw.
על מנת לסייע בהצבת כל זה במקום, בדקנו גם את ההרחבה TimescaleDB. הרחבה זו מוסיפה הרבה פונקציונליות ל-postgres הבסיסי, ורובם מתאימים באופן מושלם למקרי השימוש שלנו:
- חלוקה אוטומטית של טבלאות על סמך עמודה כמו זמן (במקרה שלנו, אנו מתאימים אותה על ידי נטילת גובה הבלוקצ'יין כהתייחסות שלנו).
- דחיסה אוטומטית, מודע לסוג הנתונים ודחיסה מבוססת עמודות של נתחים ישנים יותר. זה מבטיח יחס דחיסה כמעט מושלם על ידי שימוש באלגוריתמים מתקדמים על נתונים דומים מאוד.
- צבירה יעילה מבוססת דלי זמן כדי לחשב בקלות יתרות היסטוריות וגרפים נתוני שוק.
אנחנו רק בתחילת הניסוי לגבי אחסון, וזה פותח הרבה מקרי שימוש. הוכחת מושגים באמצעות כמות קטנה של נתונים (כ-10 בלוקים ברשת האתריום, אז בערך יומיים של נתונים) הראה צמצום שטח דיסק עד 40%.
כפי שראינו, נפח הנתונים, בתנאי שנשתמש באסטרטגיה הנכונה, אינו מהווה בעיה. אבל איך להתאים את גודל בסיס המשתמשים שלנו?
כבר יש לנו יתרון נחמד כאן: אנו מאנדקסים את כל נתוני הבלוקצ'יין. לפיכך, האחסון הדרוש לא יגדל כמו מספר המשתמשים, אלא כמו גודל הבלוקצ'יין הכולל. אופטימיזציות של אחסון וקריאה הן אורתוגונליות לחלוטין ברזולוציה שלהן.
ההגדרה הזו, בשילוב עם צורך הכתיבה הנמוך מאוד ביחס לנפח הקריאה שצריך להגיש, היא הגדרת החלום לדפוס העתק של מנהיג-עוקב. על מנת לשפר ביצועים ותפוקה נוספים, אנו גם יכולים למקם את ההעתקים של הקריאה של postgres באותם מכונות כמו שרתי ה-API ולנצל את שקעי התחום של UNIX כדי לדלג על הנסיעות הלוך ושוב ברשת.
הנה דוגמה לאסטרטגיית שכפול נתונים שבה נוכל להשתמש כדי להגדיל את הקריאות שלנו. תיבות אפורות בהירות מייצגות שרתים בודדים. אנו יכולים לראות כאן שתרמימי API ממוקמים ישירות יחד עם העתקים של הנתונים החמים ביותר כדי להבטיח זמן העברה מינימלי בין אחסון למשתמשים. מופעי ארכיון שתוארו קודמים אינם מיוצגים כדי לא לסבך את הסכימה יותר מדי.
הערות סיכום
בתור משתמש קסנדרה לטווח ארוך, אני רוצה להדגיש שזהו מסד נתונים נהדר בעיצוב שלו, שמתאים למגוון רחב של יישומים. לרוע המזל, הבחירה שנעשתה בלדג'ר להשתמש בו נעשתה על מקרה שימוש בנתונים שמעולם לא התממש.
הפרודוקטיביות של הצוות שלנו הושפעה, ומצפים לאתגרים שעלינו לפתור, בחרנו לנגוס בכדור ולא ליפול לכשל בעלויות השקועות.
במקרים רבים, הנתונים שלך אינם ביג דאטה. ניהול הפצת נתונים אינו משימה קשה ברוב המקרים, וצריך לשקול היטב את היתרונות של מסד נתונים מבוזר מלא. השיקול המרכזי הוא חווית המפתח שכן היא מפנה זמן יקר לבניית כל דבר אחר. זהו מקרה השימוש האמיתי שאנו צריכים להשקיע בו רבות.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoAiStream. Web3 Data Intelligence. הידע מוגבר. גישה כאן.
- הטבעת העתיד עם אדריאן אשלי. גישה כאן.
- קנה ומכירה של מניות בחברות PRE-IPO עם PREIPO®. גישה כאן.
- מקור: https://www.ledger.com/blog/serving-web3-at-web2-scale
- :יש ל
- :הוא
- :לֹא
- $ למעלה
- 10
- 10K
- 20
- a
- יכולת
- יכול
- גישה
- נצפה
- חֶשְׁבּוֹן
- לרוחב
- למעשה
- להסתגל
- להוסיף
- מוסיף
- לדבוק
- יתרון
- - צבירה
- אלגוריתמים
- תעשיות
- להתיר
- מאפשר
- כְּבָר
- גם
- למרות
- כמות
- an
- אנליזה
- ניתוח
- ו
- לענות
- כל
- דבר
- API
- יישומים
- יישומית
- גישה
- כראוי
- ארכיון
- ARE
- סביב
- אמנות
- מאמר
- AS
- אספקט
- היבטים
- הנחה
- At
- זמין
- מודע
- רָחוֹק
- AXES
- צִיר
- קצה אחורי
- איזון
- יתרות
- בסיס
- מבוסס
- Baseline
- BE
- כי
- היה
- לפני
- התחלה
- בהמות
- להיות
- הטבות
- בֵּין
- גָדוֹל
- נתונים גדולים
- קצת
- ביטקוין
- לחסום
- blockchain
- נתוני
- blockchains
- אבני
- שניהם
- אריזה מקורית
- תיבות
- מביא
- חרק
- לִבנוֹת
- עסקים
- אבל
- by
- שיחה
- שיחות
- CAN
- מועמד
- כּוֹבַע
- בזהירות
- מקרה
- מקרים
- לגרום
- גרם
- מְרוּכָּז
- שרשרת
- לאתגר
- האתגרים
- אתגר
- שינוי
- משתנה
- זול
- זול יותר
- מכונות זולות יותר
- בחירה
- לבחור
- בחר
- נבחר
- ברור
- אשכול
- קוד
- בסיס קוד
- קר
- טור
- משולב
- מצרך
- תקשורת
- חברה
- מורכבות
- רְכִיב
- לחשב
- מושג
- מושגים
- התחשבות
- נחשב
- עִקבִי
- קריר
- ליבה
- עלות
- יכול
- נוצר
- קריטי
- נוֹכְחִי
- נתונים
- ניתוח נתונים
- שיתוף מידע
- אחסון נתונים
- מסד נתונים
- ימים
- החלטה
- מְתוּאָר
- עיצוב
- מפתח
- מתפתח
- קשה
- ישירות
- עפר
- מופץ
- הפצה
- מחולק
- do
- עושה
- עושה
- תחום
- לא
- downside
- חלום
- נהג
- ראוי
- e
- כל אחד
- בקלות
- קל
- אדג '
- אפקטיבי
- יעיל
- אחר
- מוטבע
- להדגיש
- לאפשר
- מעודד
- להגביר את
- לְהַבטִיחַ
- מבטיח
- הבטחתי
- שווה
- וכו '
- ethereum
- ETHEREUM MAINNET
- אֲפִילוּ
- בסופו של דבר
- אי פעם
- כל
- הכל
- דוגמה
- קיימים
- אקזוטי
- מתרחב
- ניסיון
- מומחיות
- לחקור
- חוקר
- להאריך
- הארכה
- נרחב
- עובדה
- ליפול
- מאפיין
- תכונות
- מעטים
- ראשון
- מתאים
- בעד
- זר
- קדימה
- יְדִידוּת
- החל מ-
- מלא
- מן המניין
- לגמרי
- פונקציות
- נוסף
- עתיד
- מקבל
- נתן
- ברחבי עולם
- מטרה
- הולך
- גרפים
- אפור
- גדול
- קְבוּצָה
- לגדול
- גדל
- מובטח
- הנחיות
- היה
- קשה
- חומרה
- יש
- יש
- ראש
- בִּכְבֵדוּת
- גובה
- לעזור
- כאן
- גָבוֹהַ
- מאוד
- היסטורי
- המארח
- חַם
- החם ביותר
- איך
- איך
- אולם
- HTML
- HTTPS
- i
- אידאל
- if
- בלתי ניתן לשינוי
- מושפעים
- יישום
- משופר
- in
- יותר ויותר
- מדד
- מדדים
- למשל
- משולב
- אינטראקטיבי
- אל תוך
- להשקיע
- מעורב
- סוגיה
- בעיות
- IT
- שֶׁלָה
- להצטרף
- הצטרף
- jpg
- רק
- שמירה
- מפתח
- מפתחות
- סוג
- חוסר
- שפה
- גָדוֹל
- חֶבִיוֹן
- האחרון
- שכבה
- הוביל
- פנקס
- לגיטימי
- פחות
- רמה
- תנופה
- אוֹר
- קַל מִשְׁקָל
- כמו
- הגבלה
- מגבלות
- מוגבל
- רשימה
- קְצָת
- באופן מקומי
- ארוך
- נראה
- הסתכלות
- מגרש
- נמוך
- מכונה
- עשוי
- ראשי
- mainnet
- לתחזק
- הרוב
- עשייה
- לנהל
- ניהול
- באופן ידני
- רב
- שוק
- נתוני מסחר
- בגרות
- max-width
- מאי..
- אומר
- מתכת
- נודד
- מינימלי
- משימות
- מודל
- דוגמנות
- יותר
- יתר על כן
- רוב
- המהלך
- הרבה
- צריך
- כלומר
- כמעט
- צורך
- נחוץ
- צרכי
- לא זה ולא זה
- רשת
- לעולם לא
- חדש
- נחמד
- לא
- צמתים
- שום דבר
- מספר
- רב
- יעדים
- of
- on
- ONE
- רק
- להפעיל
- תפעול
- הזדמנויות
- or
- להזמין
- שלנו
- בעצמנו
- יותר
- להתגבר על
- שֶׁלוֹ
- נפרע
- חלק
- צדדים
- נתיב
- תבנית
- תשלום
- להציץ
- עניין על עניין
- ביצועים
- פרספקטיבה
- מקום
- תכנית
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- תרמילים
- נקודה
- מדיניות
- מְצוּלָע
- אפשרי
- פוסטגרסל
- פוטנציאל
- כּוֹחַ
- חזק
- תרגול
- בעיה
- תהליכים
- פִּריוֹן
- הוכחה
- פרופורציה
- מציע
- פרוטוקול
- מוכח
- לספק
- ובלבד
- גם
- שאילתות
- RAM
- רכס
- ציון
- במקום
- יחס
- חי
- חומר עיוני
- ממשי
- בֶּאֱמֶת
- סביר
- הפחתה
- בדבר
- קָשׁוּר
- אָמִין
- רה - ארגון
- תגובה
- שכפול
- לייצג
- מיוצג
- לבקש
- מִתאוֹשֵׁשׁ מַהֵר
- החלטה
- נפתרה
- וכתוצאה מכך
- שימוש חוזר
- תקין
- חָסוֹן
- שורש
- עגול
- שׁוּרָה
- הפעלה
- ריצה
- אותו
- סולם
- להרחבה
- סולם
- דרוג
- בצורה חלקה
- חיפוש
- אבטחה
- לִרְאוֹת
- לראות
- קטע
- פילוח
- מכירת
- נקודת מכירה
- שרות
- שירותים
- הגשה
- סט
- התקנה
- כמה
- sharding
- שיתוף
- קצר
- לְהַצִיג
- צד
- דומה
- since
- יחיד
- מידה
- מיומנויות
- קטן
- קטן יותר
- חכם
- So
- פִּתָרוֹן
- לפתור
- פותר
- כמה
- מֶרחָב
- לעורר
- תַפטִיר
- SQL
- תֶקֶן
- מדינה
- הצהרה
- אחסון
- חנות
- סיפור
- אסטרטגי
- אִסטרָטֶגִיָה
- חזק
- בְּתוֹקֶף
- בהצלחה
- תמיכה
- תומך
- שולחן
- לקחת
- נטילת
- המשימות
- נבחרת
- טכני
- לספר
- מונחים
- מֵאֲשֶׁר
- זֶה
- אל האני
- הבלוק
- המדינה
- שֶׁלָהֶם
- אז
- שם.
- אלה
- הֵם
- שְׁלִישִׁי
- צד שלישי
- זֶה
- תפוקה
- זמן
- ל
- גַם
- כלי
- כלים
- סה"כ
- לְגַמרֵי
- תְנוּעָה
- עסקה
- עסקות
- להעביר
- בשקיפות
- סוג
- סוגים
- בסופו של דבר
- תחת
- בְּסִיסִי
- לצערי
- יוניקס
- פותח
- ללא צורך
- us
- שמישות
- נוֹהָג
- להשתמש
- במקרה להשתמש
- מְשׁוּמָשׁ
- משתמש
- משתמשים
- באמצעות
- בְּדֶרֶך כְּלַל
- בעל ערך
- מגוון
- אנכי
- מאוד
- כֶּרֶך
- רוצה
- היה
- דֶרֶך..
- we
- Web2
- Web3
- טוֹב
- מה
- מה
- מתי
- אשר
- בזמן
- בעוד
- כל
- למה
- רָחָב
- באופן נרחב
- יצטרך
- עם
- לְלֹא
- עובד
- לכתוב
- כתוב
- אתה
- הצעיר ביותר
- זפירנט