פרוייקט סינון - תיכנון מסד נתונים.

  • פותח הנושא mat
  • פורסם בתאריך

mat

------- Magicode -------
בהמשך לזה אני פותח דיון לגבי המסד נתונים.

שאני הולך לבנות מסד נתונים שאמור להכיל מליוני שורות. צריך לתכנן אותו נכון שיעבוד כמה שיותר מהר.

המסד נותנים שאני רוצה לעשות צריך להיות מבוסס על הדרישות הסינון.

יש אתרים שצריך לסנן את כל האתר כולו.
יש אתרים כמו פרוג. שאותם לא צריך לסנן.כלל.
זה פשוט מאוד להגדיר. http://www.prog.co.il/*

יש אתרים כמו גוגל שחלק מהאתר טוב חלק רע. כמו למשל את החלק של התמונות.
אז פה יש בעיה.

איך בדיוק לסדר את זה.

אם אני הולך לפי מחרוזות regex. וככה לרשום את כל הurls עם כלל ליד זה של פתיחה סגירה.

מה אשם גולש פרוג שהאתר שלו נקי שכל דף ולינק יצטרך להמתין לחיפוש של כל ה urls.

המחשבה שיש לי לעשות את זה ככה.

טבלה ראשונה.
שדות.
domain - מכיל את שם הדומיין כמו למשל prog.co.il
type - מסוג enum יכול להכיל שני ערכים action או cname.
value - מכיל את הערך.

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

הבעיה שיש פה זה עם דומיינים כפולים.

כמו s2.domain.com s1.domain.com s3.domain.com s4.domain.com

ככה זה עובד באתר הזה. http://www.filehippo.com/.

אנחנו לא רוצים להגדיר את כל האפשריות יותר קל לעשות ככה *.domain.com

אבל במצב כזה אנחנו משתמשים ב regex שזה לוקח המון משאבים.


התוכנית שלי זה לא כן/לא. יש גם באמצע ולכן השרת של הסינון בנוי בצורה שאפשר להוסיף לו מלא הגדרות סינון. למשל יש אתרים שבהם תוריד תמונות גדולות או תסנן מילים לא יפות.

מי שיש לו רעיון הצעה הערה שיגיב.
 

wmw

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

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

חיים פ

משתמש צעיר
האמת לא כל כך הבנתי את התכנית שלך.

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

צריך לאנדקס את המפתחות והשדות הרלוונטיים.

לגבי הדומיינים הכפולים אתה יכול במידה ואין תשובה לנסות בפעם השנייה עם LIKE
 

mat

------- Magicode -------
In Memory. זה על הרם?

אם ככה אני יכול לעשות בלינוקס כונן ראם. ולהעיבר לשם את הdata של mysql.
 

KingYes

משתמש צעיר
אם כבר העלאת את הנושא הזה, האם שימוש ב-InnoDB שיושב על SSD, יהיה שווה ברמת הביצועים אם אני מריץ עם מנוע Memory?
 

חיים פ

משתמש צעיר
נכתב ע"י mat;943643:
In Memory. זה על הרם?

אם ככה אני יכול לעשות בלינוקס כונן ראם. ולהעיבר לשם את הdata של mysql.

ראשית אציין שאני לא מומחה בנושא. קח את דבריי בעירבון מוגבל.
בגדול כן, הרעיון הוא שהDATA כולו על הראם. אבל זה לא כזה פשוט כמו שזה נשמע.
משולבות בזה הרבה טכנולוגיות בשביל צורת גישה, אחסון, ושמירה על הנתונים (לדוגמא RAM מתנקה כשאין חשמל, דרך הקריאה וכתיבה עליו שונה וכו')
זה לא שתיקח את הMYSQL שלך , תשים על הRAM והוקוס פוקוס..
השוק הזה נשלט ע"י חברות גדולות כמו SAP IBM ORACLE.. מזה לבד אתה למד על העלויות..

לא חושב שכדאי לך להתעמק בזה כרגע. זרקתי את זה כחשיבה לטווח רחוק. במידה והפרויקט יצליח וישתמשו בו הרבה אולי תצטרך את זה...


נכתב ע"י KingYes;943852:
אם כבר העלאת את הנושא הזה, האם שימוש ב-InnoDB שיושב על SSD, יהיה שווה ברמת הביצועים אם אני מריץ עם מנוע Memory?

אין קשר בין SSD וIn memory.
SSD מתפקד כמו דיסק רגיל רק מהיר יותר. (יש לו חסרונות משלו לגבי זמן הכתיבה לאחר שהדיסק מלא וכו)
 

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

הפרק היומי

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


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

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

לוח מודעות

למעלה