מבחינת ביצועים, מה עדיף לטעון מידע מ- DB או מ- JSON?
היי חברים, שאלה, לדוגמא יש אתר ecommerce עם 10000 מוצרים, מבחינת ביצועים, איך טעינת המידע של המוצרים עדיפה, מתוך DB או מקבצי JSON?
תודה רבה.
אפשרויות ניהול
dj_boy
10.09.2217:59
1. טעינה לתוך מה?בתגובה להודעה מספר 0
כעיקרון כמה שפחות IO יותר טוב אבל זה מאוד תלוי בצרכים המדויקים שלך
Lonjie
10.09.2218:40
2. טעינת המידע לתוך העמוד.בתגובה להודעה מספר 1
קריאה מתוך DB, או קריאה מתוך קבצי JSON
@dj_boy@
dj_boy
10.09.2222:04
5. שתף קצת יותר על המערכתבתגובה להודעה מספר 2
לא נתת מספיק מידע בשביל לקבל תשובה יעילה סביר להניח ש־DB זה הדבר היחיד ההגיוני, אבל... זה תלוי מה בדיוק את עושה ואיך.
Lonjie
11.09.2210:53
7. בגדול מדובר ב- 2 אתרים,בתגובה להודעה מספר 5
2 אתרים המבוססים וורדפרס, אחד מהם הוא Scarper שקורא מידע ממקור חיצוני, מעבד, ואז דוחף לאתר הראשי.
האתר הראשי אמור להיות רזה ולהכיל רק את המידע על המוצרים בתצורת DB או JSON. וורדפרס בכללי עובדת עם MySQL.
אז סתם עניין אותי, אולי שווה להחליף את העבודה עם MySQL עם קבצי JSON.
@dj_boy@
dj_boy
11.09.2215:28
9. JSON מיועד לשלב ההעברה ולא לשלב השימושבתגובה להודעה מספר 7
DB מיועד לשלב השימוש במידע. ציינת שאתה על וורדפרס ככה שבזיליון אחוז לא תרוויח דבר משמירה של מידע כזה ב־JSON
Lonjie
12.09.2210:39
12. אוקי, קיבלתי, מעולה.בתגובה להודעה מספר 9
@dj_boy@
Along1
10.09.2219:11
3. DB....... תחקור קצת כדי להבין את ההבדלים והשימושים.בתגובה להודעה מספר 0
Mr Andersson
10.09.2219:17
4. במידה ומדובר באתר סטנדרטי שהמוצרים בו דינאמיים - אין ספק שעדיף DBבתגובה להודעה מספר 0
Lonjie
12.09.2210:37
10. המוצרים כן השתנו (יותר נכון התוכן בהם), לא יודע עדיין באיזו תדירות.בתגובה להודעה מספר 4
@Mr Andersson@
Bar
11.09.2207:41
6. כמו שאמרו, בכללי עדיף DB לדברים כאלו.בתגובה להודעה מספר 0
סיבה מובהקת: בשביל לקרוא שדה מתוך JSON, צריך לטעון את כל הJSON במלואו מהדיסק לתוך הזיכרון, בעוד שבDB אתה מבצע שאילתא ספציפית עבור הערכים שאתה צריך, והקריאה של הערך מהדיסק קצרה יותר.
נשלח ע"י הסלולרי
sza
11.09.2214:54
8. +1 נוסיף את עניין אינדוקס המידע ומהירות השליפה לעומת איטרציה על כל האובייקטיםבתגובה להודעה מספר 6
צחי.
Lonjie
12.09.2210:38
11. מקבלבתגובה להודעה מספר 8
@Bar@ @sza@
Lonjie
12.09.2210:41
13. שאלה נוספת חברים, איך עדיף לנהל את הכניסה למוצרים,בתגובה להודעה מספר 0
ברגע שהלקוח הסופי נכנס למוצר רק אז לעשות קריאת API לשרת חיצוני, או ברגע שהלקוח הסופי נכנס למוצר אז עושים קריאת DB לשרת שלי. (והקריאות ל- API החיצוני מתבצעות עם CronJob חיצוני על מנת ל"שאוב" את המידע)
בדרך הראשונה, אני בעצם לא שומר הרבה מידע על השרת שלי בדרך השני, המידע נשמר אצלי ואז כמובן ה- DB יהיה בהתאם.
אשמח לשמוע את דעתכם בנושא.
dj_boy
12.09.2212:19
14. תלוי חחהבתגובה להודעה מספר 13
כעיקרון כמה שפחות לקרא מה־API יותר טוב אם אתה יודע מה ה"תוקף" של המידע המתקבל מה־API אז אתה צריך לקרא מה־API רק כשהתוקף עבר אם לא, אם המידע לא יכול להיות שגוי בשופ"א אז אתה צריך לעשות בכל פעם קריאה אם המידע יכול להיות "ישן" תעשה קריאה ל־API רק אם עבר חמש דקות (או כל פרק זמן הגיוני אחר עבורך) מאז הקריאה הקודמת
בעיקרון הקונספט הזה נקרא מטמון תקרא על זה קצת api caching
sza
12.09.2216:48
15. קח בחשבון שקריאה מDB תהיה מהירה בהרבה מאשר קריאת http מהשרת החוצהבתגובה להודעה מספר 13
ותחשוב שאם נכנסים עומס של משתמשים לדף מסויים, השרת שלך יבצע הרבה קריאות http החוצה. רוב הסיכויים שבשביל חווית משתמש נורמאלית עדיף לך לשלוף את המידע ולהשאיר אותו על db לוקאלי (ברשת לוקאלית של השרת או על השרת עצמו ממש). ככה הכניסה לדף תהיה מהירה בהרבה עבור המשתמש.
צחי.
דוקטור חייק
14.09.2220:45
16. אני לא רואה כל כך את ההבדלבתגובה להודעה מספר 15
ערכתי לאחרונה בתאריך 14.09.22 בשעה 20:48 בברכה, דוקטור חייק
יכול להיות שלא הבנתי אותו כמו שצריך, אבל נראה לי שהוא שאל אם לשמור את המידע על ה- DB שלו, או שלא ושהמידע ישב על ספק חיצוני.
אני הבנתי (ואולי לא הבנתי טוב) שהוא שואל לגבי שלב הכניסה לעמוד של מוצר - האם המידע ישלף מהשרת שלו (מה- DB שלו) או ישירות מהספק החיצוני.
במקרה הזה, במידה ומדובר ב- SINGLE PAGE APPLICATION, אז יהיה פניית http החוצה בשני האפשרויות, וחווית המשתמש צריכה להיות פחות או יותר זהה. מבחינה ה- BACK או שהוא יפנה לשרת שלו, או של הספק החיצוני (או לשרת שלו שיהווה middleware לשרת החיצוני, אני לא רואה את כל התמונה אז אני לא יודע)
בכל אופן לא הבנתי כל כך את הסיטואציה, אבל לא נראה לי שיהיה הבדל בין 2 הפתרונות, למה לדעתך DB לוקאלי יהיה יותר מהיר ? אולי השרת של הספק החיצוני יותר מהיר מהשרת שלו ?
kickass
31.10.2203:24
17. DB ואם אתה ממש ממש מודאג ממהירותבתגובה להודעה מספר 0
יכול להשתמש בMemcache על מנת לשמור בזכרון מידע. זה יעזור אם יש מוצרים יותר פופולריים ויחסוך טעינה מהדאטאבייס. אבל עם חומרה טובה ואינדקסים נכונים לא אמורה להיות לך בעיה בכלל