הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   יעילות מסדי נתונים, SQL | MYSQL | ACCESS (https://hosts.co.il/forums/showthread.php?t=83923)

OrPol 21-07-10 21:59

יעילות מסדי נתונים, SQL | MYSQL | ACCESS
 
שאלה -
אני עובד על אפליקציה גדולה ורצינית בימים אלו, והיא מבצעת תיעוד לכל פעולה.
התיעוד כולל שמירה של שורה עם נתונים של ID, מחרוזת בת 170 תווים, TIMESTAMP, שני שדות INT, עם 10 תווים כל אחד, וTINYINT בודד של ספרה אחת.

המערכת מבצעת בערך 200,000 - 1,000,000 שורות בחודש.

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


בתודה מראש,
אור.

RS324 22-07-10 08:50

בשביל מה אתה צריך את התיעוד הזה ?
אתה גוזר ממנו נתונים אחר כך ?
אתה יכול לשמור עותק לוקאלי ברמה חודשית \ שבועית וכד'
ולרוקן את הטבלה

OrPol 22-07-10 09:30

ציטוט:

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

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

~The_Sultan~ 22-07-10 10:13

אתה מתכוון שהשליפה לדעתך תהיה כבדה מדי בעבור השרת? אם כן, אתה יכול לנסות לחלק את זה לכמה טבלאות עם PREFIX שונה, למשל - כל השורות בעלות ה-ID מ-1 ועד 10000 יהיו בטבלה first_table, כל השורות בעלות ה-ID מ-10001 ועד 20000 יהיו בטבלה second_table ואז בהתאמה, לשלוף לפי ה-ID שקיבלת: אם קיבלת מספר מ-1 עד 10000 תשלוף מהטבלה השניה וכו' וכו'. זה כמובן דורש עבודה מעצבנת בכל מיני מקומות של התאמת השאילתות..

Shay Ben Moshe 22-07-10 11:25

סולטן, אין שום סיבה לעשות דבר כזה.
אור, הDB מתוכנן לעבוד מול טבלאות גדולות, גם כאלה וגם יותר. אני ממליץ לך לכתוב את הטבלה בצורה נכונה (indexים מתאימים וdata type נכון לכל דבר).
אין שום סיבה שזה לא יעבוד טוב.

OrPol 22-07-10 12:21

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 772320)
סולטן, אין שום סיבה לעשות דבר כזה.
אור, הDB מתוכנן לעבוד מול טבלאות גדולות, גם כאלה וגם יותר. אני ממליץ לך לכתוב את הטבלה בצורה נכונה (indexים מתאימים וdata type נכון לכל דבר).
אין שום סיבה שזה לא יעבוד טוב.

השאלה היא מה תופס פחות נפח ויותר אמין.
אין לי בעיה לפתח את מערכת התיעוד הזו בASP או PHP.

Shay Ben Moshe 22-07-10 13:58

מה הכוונה תופס פחות נפח. זה לא משנה אם תפתח בASP או בPHP, זה הכל מול מסד נתונים חיצוני הרי.
לגבי ההשוואה בין Access לMySQL אתה לא יכול לדעת בלי להריץ. תפתח מסד עם טבלה כמו שלך ותכניס מלא נתונים ותראה מה קורה.
מה שכן, לדעתי MySQL אמור לתפקד יותר טוב מול מסד גדול. אם אתה רוצה בASP אז עדיף SQL Server.

OrPol 22-07-10 18:40

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 772339)
מה הכוונה תופס פחות נפח. זה לא משנה אם תפתח בASP או בPHP, זה הכל מול מסד נתונים חיצוני הרי.
לגבי ההשוואה בין Access לMySQL אתה לא יכול לדעת בלי להריץ. תפתח מסד עם טבלה כמו שלך ותכניס מלא נתונים ותראה מה קורה.
מה שכן, לדעתי MySQL אמור לתפקד יותר טוב מול מסד גדול. אם אתה רוצה בASP אז עדיף SQL Server.

Mysql ואני חברים יותר טובים.

~The_Sultan~ 22-07-10 21:30

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 772320)
סולטן, אין שום סיבה לעשות דבר כזה.
אור, הDB מתוכנן לעבוד מול טבלאות גדולות, גם כאלה וגם יותר. אני ממליץ לך לכתוב את הטבלה בצורה נכונה (indexים מתאימים וdata type נכון לכל דבר).
אין שום סיבה שזה לא יעבוד טוב.

זה לא תמיד נכון, כמו למשל אם עושים order by rand() במסד ענק זה ישחיט לך את השרת.. (לא ישחיט באמת, פשוט יכביד וייקח הרבה זמן :))

Shay Ben Moshe 22-07-10 23:45

ORDER BY RAND() זו פקודה ממש ממש לא חכמה. אבל זו בכלל לא הבקשה פה.

kfirfer 22-07-10 23:46

ציטוט:

נכתב במקור על ידי Or Polaczek (פרסם 772379)
Mysql ואני חברים יותר טובים.

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

OrPol 23-07-10 10:02

ציטוט:

נכתב במקור על ידי kfirfer (פרסם 772418)
אז תתחבר גם לSql server ותנסה לעבוד איתו, זה מערכת מעולה לא פחות מmysql וזה יכול להיות אמין יותר.
אתרים שאני בונה מאוחסנים על linux עם גישה למסד נתונים של mssql. זה עובד מצויין. אם לא הכי טוב שיכול להיות.

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

kfirfer 25-07-10 06:37

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

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

OrPol 25-07-10 07:34

ציטוט:

נכתב במקור על ידי kfirfer (פרסם 772665)
זה לא עולה המון ממש, פשוט צריך 2 אחסונים אחד של win ואחד של linux שמחוברים ביחד בכרטיסי רשת או 2 אחסונים בשרת יעודי אחד(vps), לתת גישה למסד נתונים בווינדוס שהלינוקס יכולה לגשת אליה.

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

VPS לכשעצמו מתחיל ב150 ש"ח, אירוח שיתופי של לינוקס (ברמה הכי בסיסית) לפחות 30 ש"ח בחודש. למצוא חברה כזאת ולבקש ממנה לבצע את הקישוריות הזאת זה סרט.

במיוחד כשאין לי בעיה להסתדר עם MYSQL. אני עובד עם שרת SQL לתוכנת הנה"ח שלנו, ואני לא מת עליו.

בניה 25-07-10 09:07

mysql יעשה את העבודה הזו בלי בעיה.
בהנחה שלא אמורות להיות הרבה גישות למידע הזה או עריכות אלא בעיקר הכנסות של מידע אני ממליץ על המנוע MyISAM
ואם אתה רוצה לשפר את יעילות ההכנסה של השורות, אתה יכול להכניס כל יום את השורות לטבלה זמנית קטנה או לשמור אותם בקובץ טקסט ולטעון אותם עם
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
בזמנים שהשרת לא עמוס.

OrPol 25-07-10 18:21

ציטוט:

נכתב במקור על ידי בניה (פרסם 772672)
mysql יעשה את העבודה הזו בלי בעיה.
בהנחה שלא אמורות להיות הרבה גישות למידע הזה או עריכות אלא בעיקר הכנסות של מידע אני ממליץ על המנוע MyISAM
ואם אתה רוצה לשפר את יעילות ההכנסה של השורות, אתה יכול להכניס כל יום את השורות לטבלה זמנית קטנה או לשמור אותם בקובץ טקסט ולטעון אותם עם
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
בזמנים שהשרת לא עמוס.

אני ככלל, עובד רק עם MYISAM

RS324 25-07-10 20:15

ציטוט:

נכתב במקור על ידי Or Polaczek (פרסם 772749)
אני ככלל, עובד רק עם MYISAM

INNODB עושה עבודה מצויינת (תחפש INNODB VS MYISAM תקרא קצת)

לגבי השוואה ל SQL SERVER , אני לא מכיר את SQL SERVER
אבל אני יכול להגיד ש MYSQL יכול להתמודד עם מיליונים של שורות ללא שום בעיות
(כמובן שהכל בתנאי שאתם יודעים להגדיר את השרת)

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

kfirfer 26-07-10 01:13

ציטוט:

נכתב במקור על ידי RS324 (פרסם 772766)
INNODB עושה עבודה מצויינת (תחפש INNODB VS MYISAM תקרא קצת)

לגבי השוואה ל SQL SERVER , אני לא מכיר את SQL SERVER
אבל אני יכול להגיד ש MYSQL יכול להתמודד עם מיליונים של שורות ללא שום בעיות
(כמובן שהכל בתנאי שאתם יודעים להגדיר את השרת)

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

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

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

RS324 26-07-10 13:29

ציטוט:

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

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

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

Kernel 26-07-10 13:50

בוא נניח ש-MSSQL יותר טוב מ-MYSQL(שזה הנחה קצת עקומה),

משיקולי עלות תועלת, עדיין משתלם לעבוד עם MYSQL.

yonatan 26-07-10 14:24

טוב אם כבר פתחתם את הדיון הזה למה יותר מה פחות.....
עזבו אותכם רק אורקל על REDHAT.

RS324 26-07-10 14:54

אורקל עולה המון כסף
אם אתה לא ממש ממש גדול
אין טעם להכנס אליו :)

yonatan 26-07-10 14:59

ציטוט:

נכתב במקור על ידי RS324 (פרסם 772853)
אורקל עולה המון כסף
אם אתה לא ממש ממש גדול
אין טעם להכנס אליו :)

אני אתקן
אורקל + REDHAT הכי טוב, כשמישהו אחר משלם

:-)

בכל מקרה
MYSQL שובר את MSSQL בביצועים.
ויצא לי להתעסק עם מסד בנפח 60GB על MSSQL , זה לא נחמד בכלל.

satan 26-07-10 16:47

האמת שיש לי מסד עם כמה מאות אלפים רשומות (פחות מ 500 אלף) על MYSQL והמסד עצמו לא שוקל הרבה גג 150 מגהבייט.. בכל זאת ה MYSQL קורס ולא מצליח לעמוד בדרישה (עיקר הפעילות היא על שליפת מידע SELECT).
אז אני באמת לא יודע איפה הדיבור פה על מליונים על גבי מליונים של רשומות..

yonatan 26-07-10 17:06

ציטוט:

נכתב במקור על ידי satan (פרסם 772859)
האמת שיש לי מסד עם כמה מאות אלפים רשומות (פחות מ 500 אלף) על MYSQL והמסד עצמו לא שוקל הרבה גג 150 מגהבייט.. בכל זאת ה MYSQL קורס ולא מצליח לעמוד בדרישה (עיקר הפעילות היא על שליפת מידע SELECT).
אז אני באמת לא יודע איפה הדיבור פה על מליונים על גבי מליונים של רשומות..


אם קורס לך מסד של 150 מגה יש 4 אפשרויות
1. שרת חלש מאוד ( פנטיום 3 ? )
2. לא מספיק זכרון? ( 512MB ?)
3. מערכת הפעלה לא מוגדרת כמו שצריך.
4. התכנות שלך לא טוב במערכת....

תבחר ...

intercooler3819 26-07-10 18:22

אני כרגע מתמודד עם 12 מיליון רשומות בטבלה עם 24 עמודות שרובם לא INT והשליפה מאוד זריזה.. כמובן שיש אינדקסים וחלק מהעמודות מאפשרות FULLTEXT SEARCH

RS324 27-07-10 02:26

ציטוט:

נכתב במקור על ידי yonatan (פרסם 772860)
אם קורס לך מסד של 150 מגה יש 4 אפשרויות
1. שרת חלש מאוד ( פנטיום 3 ? )
2. לא מספיק זכרון? ( 512MB ?)
3. מערכת הפעלה לא מוגדרת כמו שצריך.
4. התכנות שלך לא טוב במערכת....

תבחר ...

ה MYSQL לא מקונפג כמו שצריך.... (גם אפשרות)

Daniel 27-07-10 13:59

למרות שכבר אמרו, אני אחזק.

אם אתה רוצה פתרון זול ואמין - MySQL יבצע את העבודה מעולה. יש לי טבלאות עם מאות אלפי רשומות עם 10-12 עמודות "מכל הסוגים" - אם כל השאילתאות שלך בנויות נכון, אין שום בעיה - בדקתי זאת בעצמי.



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

yonatan 27-07-10 20:48

ציטוט:

נכתב במקור על ידי RS324 (פרסם 772946)
ה MYSQL לא מקונפג כמו שצריך.... (גם אפשרות)

mysql = מערכת הפעלה.
השרת צריך להיות מוגדר לטובת ה SQL בכל הרמות , מהקרנל ועד לדיסקים.

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

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

(אני אעדכן שזה יהיה במצב פרודקשן )


כל הזמנים הם GMT +2. הזמן כעת הוא 00:27.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ