ביצועים

ינח

משתמש מקצוען
D I G I T A L
עמוד חיפוש של אלפי נתונים
האם נכון לאכסן אוביקט בקאש של השרת ולבצע חיפוש עליו או עדיף לפנות לשמור את המידע בדטה בייס ולפנות לדטה בכל חיפוש?
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אין מספיק מידע כדי לענות על השאלה הזאת.
 

ינח

משתמש מקצוען
D I G I T A L
איזה מידע דרוש? השרת חזק. יש הרבה כניסות לדף
השאלה אם לעבוד מול סרביס או לשמור בדטה.
 
נערך לאחרונה ב:

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
חסר עוד הרבה נתונים, כמו צורת הגישה לDB (פרוצדורה/שאילתא/מתוך הקוד וכו'), באיזה DB מדובר (האם DB רציונאלי או לא), מהו צד השרת, כל כמה זמן יתרענן הקאש (אם זה יקרה הרבה, זה יאבד את היתרון שלו), האם הנתונים בטבלאות הנל משתנים הרבה וכו'
 

ינח

משתמש מקצוען
D I G I T A L
גישה לDB - שאילתא מתוך הקוד
mysql
צד שרת PHP
הקאש יתרענן פעם ביום בלילה
הנתונים משתנים פעם ביום וחלקם פעם בחודש.
 

ינח

משתמש מקצוען
D I G I T A L
אפשר לקבל הסבר למה עדיף קאש?
תודה
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
רגע, מה בעצם יכיל הקאש?
 

ינח

משתמש מקצוען
D I G I T A L
בגלל שיש לנו חיפוש חופשי הוא יכיל את כל האלפי תכנים
נניח אוביקט עם 15000 תכנים שמכילים פרטים שונים.
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
זו יכולה להיות שאלה מעניינת, אבל באמת אין כאן מספיק נתונים.
עמוד חיפוש של אלפי נתונים
- כמה אלפים? 2,000 - שזה ממש קצת? או 500,000 שזה כבר יותר מעניין?

האם נכון לאכסן אוביקט
- מה הכוונה אובייקט? הדבר שאותו מחפשים? אם כן מה זה ״לבצע חיפוש עליו״?

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

ינח

משתמש מקצוען
D I G I T A L
עמוד חיפוש של אלפי נתונים
סביבות ה- 15000

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

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

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

התחלתי עכשיו לקרוא קצת על הmamecache..
 
נערך לאחרונה ב:

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
בגלל שיש לנו חיפוש חופשי הוא יכיל את כל האלפי תכנים
נניח אוביקט עם 15000 תכנים שמכילים פרטים שונים.
15,000 לעניות דעתי ממש לא כמות גדולה עבור DB אבל כן גדולה עבור איחסון נתונים בקאש.
לדעתי עדיף DB
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אגב, עד כמה שאני מבינה, זה לא קאש.
קאש זה זכרון של שאילתא שכבר בוצעה.
פה בעצם אתה רוצה לשלוף פעם אחת את כל הטבלה, ולשמור בזכרון.
למה זה קאש?
 

ינח

משתמש מקצוען
D I G I T A L
זה לא נקרא לשמור בזכרון ב memory cache ?
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
אז אכן זה לא נקרא קאש.
קאש זה דבר כזה. נגיד פעם אחת ביקשו ממך כל הרכבים שבין שנות 2015 ל2017 עם נפח מנוע מעל 1400 ועם מחיר פחות מ12000
אז נגיד ששליפה ממסד התנונים אורכת יותר מדי זמן. ומצד שני, יש הרבה אנשים שמריצים בדיוק אותה השאילתא. אז חבל להעמיס על מסד התנונים. במקום זה שומרים את התוצאות בקאש. הקאש, בדרך כלל זה גם מסד נתונים (למשל redis) אבל מסוג אחר - key-value
כלומר לכל שאילתא מוגדרת יש תוצאה מוכנה.

זה לא מה שאת (לשון נקבה, נכון?) מחפשת.
את שוקלת פשוט להעביר את כל הנתנונים מה-DB לתוך הזכרון של ה״שרת״ לתוך ״אובייקט״ ואז כל פעם לחפש בתוך האובייקט הזה.
הבנתי נכון?

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

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

ינח

משתמש מקצוען
D I G I T A L
אכן יש אפשרות לשמור את הנתוניםעל הזכרון ולא על הדיסק עם memcache אבדוק את האופציה הזו

תודה רבה
 

ינאי&רועי

משתמש פעיל
המשתמש נחסם
מישהו כאן יכול לתת לי סקירה קצרה על Redis?
מה זה ואיך משתמשים בזה.
תודה!
 

Bot

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

yitzhak123

משתמש סופר מקצוען
הנדסת תוכנה
מישהו כאן יכול לתת לי סקירה קצרה על Redis?
מה זה ואיך משתמשים בזה.
תודה!
image.png
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
מה שכדאי להבין שזה לא DB אלא מבנה נתונים.
כמו שיש בכל שפה (נורמלית). רשימה, תור, hash set וכו'
רק שזה יכול לשבת על מכונה נפרדת, וכמה מכונות אחרות יכולות לגשת אליו
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קיט ב'

ט בַּמֶּה יְזַכֶּה נַּעַר אֶת אָרְחוֹ לִשְׁמֹר כִּדְבָרֶךָ:י בְּכָל לִבִּי דְרַשְׁתִּיךָ אַל תַּשְׁגֵּנִי מִמִּצְוֹתֶיךָ:יא בְּלִבִּי צָפַנְתִּי אִמְרָתֶךָ לְמַעַן לֹא אֶחֱטָא לָךְ:יב בָּרוּךְ אַתָּה יְהוָה לַמְּדֵנִי חֻקֶּיךָ:יג בִּשְׂפָתַי סִפַּרְתִּי כֹּל מִשְׁפְּטֵי פִיךָ:יד בְּדֶרֶךְ עֵדְוֹתֶיךָ שַׂשְׂתִּי כְּעַל כָּל הוֹן:טו בְּפִקֻּדֶיךָ אָשִׂיחָה וְאַבִּיטָה אֹרְחֹתֶיךָ:טז בְּחֻקֹּתֶיךָ אֶשְׁתַּעֲשָׁע לֹא אֶשְׁכַּח דְּבָרֶךָ:
נקרא  5  פעמים

לוח מודעות

למעלה