Architecture Decision Record

Active theme: Light

← דוגמאות לרשומות החלטה

רשומת החלטה ארכיטקטונית: בחירת טכנולוגיית מסד נתונים

מצב

התקבלה

הקשר

אנו מתכננים יישום חדש שדורש אחסון ואחזור נתונים באופן ניתן להרחבה ובעל ביצועים טובים. זיהינו שלושה סוגים של טכנולוגיות מסדי נתונים הנפוצים בשימוש: מסדי נתונים יחסיים, מסדי נתונים מסמכיים ומסדי נתוני אירועים.

מסדי נתונים יחסיים מאחסנים נתונים בטבלאות עם סכמות קבועות ואוכפים אילוצי שלמות נתונים קפדניים. הם מתאימים ליישומים שדורשים קשרי נתונים מורכבים וטרנזקציות. דוגמאות כוללות MySQL, PostgreSQL ו-Oracle.

מסדי נתונים מסמכיים מאחסנים נתונים במסמכים דמויי JSON וחסרי סכמה. הם מתאימים היטב ליישומים שדורשים מודלי נתונים גמישים והרחבה אופקית. דוגמאות כוללות MongoDB, Couchbase ו-Amazon DynamoDB.

מסדי נתוני אירועים מאחסנים נתונים כסדרה של אירועים, ולוכדים כל שינוי בנתונים. הם מתאימים ליישומים שדורשים ביקורת, event sourcing ועיבוד נתונים מורכב. דוגמאות כוללות Apache Kafka, Apache Pulsar ו-AWS Kinesis.

החלטה

לאחר הערכה קפדנית של הדרישות והאילוצים של היישום שלנו, החלטנו להשתמש במסד נתונים מסמכי.

נימוק

בחרנו במסד נתונים מסמכי כי:

  1. היישום שלנו דורש מודל נתונים גמיש שיכול להתפתח עם הזמן. מסדי נתונים מסמכיים מאפשרים לנו לאחסן נתונים בפורמט חסר סכמה, כלומר אנו יכולים להוסיף שדות חדשים או לשנות את מבנה המסמכים הקיימים בלי לשנות את סכמת מסד הנתונים.

  2. היישום שלנו צריך להתרחב אופקית כדי לטפל בנפחים גדולים של נתונים ותעבורה. מסדי נתונים מסמכיים מספקים תמיכה מובנית ב-sharding ובשכפול, מה שמאפשר לנו לפזר נתונים על פני כמה שרתים ולטפל בתפוקת קריאה וכתיבה גבוהה.

  3. היישום שלנו דורש אחזור נתונים מהיר ויעיל. מסדי נתונים מסמכיים מספקים יכולות אינדוקס ושאילתות עוצמתיות שמאפשרות לנו לאחזר נתונים במהירות וביעילות.

  4. היישום שלנו אינו דורש טרנזקציות מורכבות או קשרי נתונים מורכבים. אף שמסדי נתונים יחסיים מצטיינים באכיפת אילוצי שלמות נתונים ובטיפול בטרנזקציות מורכבות, ליישום שלנו אין דרישות כאלה. מסדי נתונים מסמכיים יכולים לספק ערבויות עקביות ועמידות מספיקות למקרה השימוש שלנו.

השלכות

בבחירה במסד נתונים מסמכי, נצטרך להשקיע בלימוד והבנה של הטכנולוגיה הספציפית שנבחר להשתמש בה. בנוסף, נצטרך לוודא שמודל הנתונים של היישום שלנו מתאים היטב למודל הנתונים של מסד הנתונים המסמכי כדי למקסם ביצועים ויכולת הרחבה.

עם זאת, אנו מאמינים שיתרונות השימוש במסד נתונים מסמכי עולים על העלויות, ושהוא ההתאמה הטובה ביותר לדרישות ולאילוצים של היישום שלנו.