אם איזה DB נכון להשתמש?
-
שלום וברכה
יש לי פרויקט עכשיו ליישם
ברעיון הכללי שלו הוא דומה לאקסס (אמרתי דומה, לא לשאול אז למה לא להשתמש וכו.... )
המשתמש רוצה לעדכן משתמשים שלהם יהיו טפסים שימלאו כביכול טבלאות
כאשר לכל משתמש טפסים בעלי אימות שונה וטבלאות בעלי עמודות שונות
כמובן שלאחר מכן הוא ירצה להציג שאילתות מתוך אותם טבלאותהאם לתת לו אפשרות ליצור טבלאות ממש עבור כל משתמש?
או לעבוד עם DB מבוסס אובייקטים (או אולי SQL עם אפשרות לשדה JSON)?
אשמח לשמוע תגובות ורעיונות בהתבסס על כל הבחינות.תודה מראש.
-
@ש-ב-ח אמרת:
אשמח לשמוע תגובות ורעיונות בהתבסס על כל הבחינות.
אבל נתת אפיון מאוד כללי למערכת שלך, וקביעת סוג ה-db תלויה בהרבה גורמים. האם ידוע מראש הסכימה, או שהיא עתידה להיות משתנה במהלך הפיתוח והפרודוקשן? כיצד תבוצע שליפת הנתונים? באילו שאילתות אתה מעונין? מה הפלטפורמה בכלל?
על כל פנים הנה השנקל שלי:
האם לתת לו אפשרות ליצור טבלאות ממש עבור כל משתמש?
באופן כללי, טבלה לכל משתמש זה נשמע כמו פרקטיקה גרועה מאוד.
או לעבוד עם DB מבוסס אובייקטים (או אולי SQL עם אפשרות לשדה JSON)?
אני לא מבין למה הכוונה "מבוסס אובייקטים". אני מנחש שכוונתך לNoSQL ושכאן אתה מנסה לפתור את הבעיה של הסכימה שאינה ידועה מראש. כאן דעתי נוטה לכיוון מונגו. SQL עם שדה JSON הרבה יותר מסורבל אם אתה הולך לשמור נתונים גם בJSON וגם במבנה רלציונאלי סטנדרטי.
-
@odeddvir
אני אנסה לפרט יותר
מדובר בחברה שמנהלת עסקים (כלומר יועצים, ומנהלים בפועל כמו מזכירות וכדו')
עד היום הם בנו לכל לקוח שלהם קובץ אקסל
הוא מעוניין להחליף את הרעיון לתוכנה בשרת (הרווחים הם: וויזואל נקי וחוויתי, אפשרות לבצע שינויים בקוד מרחוק, עדכוני נתונים מרחוק, עבודה בצוות וכו', הוא בדק את google shhets וזה לא מתאים לו וגם לא מסייע בבעיה הוויזואלית)מקווה שעכשיו יותר ברור מה האפיון...
בקיצור הסכימה גם היא דינמית ומשתנה מלקוח ללקוח (מזכיר לי יותר את מבנה הפוסטים של וורדפרס, למי שמכיר)
וכאן השאלה עם לעבוד כמו וורדפרס או לעבוד עם מונגוDB (אני עובד עם laravel כך שאצטרך קומבינציה למונגו) או לעבוד עם SQL ושדה JSON או ליצור לכל משתמש db נפרד!!! ויצירת טבלאות נפרדות... -
@ש-ב-ח אני בכלל לא מכיר את וורדפרס ולא את Laravel, כך שאין לי דעה בענין.
מנקודת מבט של תכנון ה- Backend, נראה לי שעדיף טבלה אחת גדולה, כי יש כאן חברת ניהול אחת לכל העסקים. עיין מה שכתבתי כאן: https://tchumim.com/topic/9394/תכנון-db/6
אם היית מנהל כמה חברות כאלו, לכאורה הייתי משתמש ב-db נפרד לכל אחת, על אף שהלוגיקה העסקית זהה.
יש כאן עוד דיון מעניין בנושא החלוקה לכמה בסיסי נתונים: https://dba.stackexchange.com/questions/1043/what-problems-will-i-get-creating-a-database-per-customer -
@odeddvir
בוורדפרס הפוסטים נשמרים באופן הבא:
טבלת postsid | title | content | ...
וטבלת postmeta
id | post_id | meta_key | meta_value
כך בעצם ניתן להוסיף כמה meta שתרצה.
לא הבנתי, אתה מתכוון שאם היו לי כמה לקוחות כאלו, או שכוונתך שכיוון שהלקוח שלי מנהל כמה וכמה חברות כדאי שלכל אחד יהיה DB נפרד? (אגב חשבתי על זה מראש, זה נראה לך יותר נכון?)
-
@ש-ב-ח נראה לי שלא הובנתי.
השתמשתי במונחים שבהם השתמשת, כפי שאתה הגדרת אותם בשאלתך:
חברת ניהול היא גוף שמנהל כמה עסקים נפרדים.
הקו המנחה הוא פשוט:
- היכן שיש צורך להתייחס לכל הנתונים בצורה גלובלית (למשל: שאילתת ניתוח הפעילות של כל העסקים ביחד) - עדיף לאגד הכל תחת db יחיד. לכן, אם אתה מתעסק מול חברת ניהול אחת שמנהלת כמה עסקים - תשתמש ב- db יחיד.
- היכן שאין קשר בין הישויות (כלומר: אתה מתעסק עם כמה חברות ניהול נפרדות, שכל אחת מנהלת כמה עסקים) - תשתמש ב- db נפרד לכל חברת ניהול.