ת'אמת שמצאתי את עצמי מבולבל מהשפע העצום של הפתרונות..
אניח כאן את המידע הרלוונטי, אשמח לייעוץ והפניות.
בסיס הרעיון הוא סימולטור שעובר על נתונים היסטוריים, מנתח, ומציג או מבצע פעולות בהתאם.
נניח שיש לי רשימה של 100 מליון שורות, כל שורה מורכבת מזמן ומספר, התוכנה מקבלת את הרשימה, עוברת עליה ומציגה גרפים, ניתוחים, בהתאם לדרישות הספציפיות של המשתמש.
אני צריך פילוח מהיר של הנתונים בקיבוץ לפי טווח זמן נבחר, דקה, 5 דקות, שעה וכדו'
יש שני חלקים בלולאה, החלק הראשון שעובר על כל שורה ושורה וחלק פנימי שמחשב בדיקות בהתאם לשורות אחרות בטבלה.
השאלה הראשונה היא האם עדיף להוריד את הנתונים ולשמור אותם ב DB מקומי או לשלוף ישירות מהשרת?
בשביל החלק השני שמבצע חישובים ושאילתות ברור שעדיף לעשות את זה מול נתונים מקומיים גם בשביל מהירות הביצוע, ובפרט בשביל לא להעמיס על השרת בכמויות של שאילתות מהרבה משתמשים בו זמנית (או שאני טועה ?)
בשביל החלק הראשון שעובר על כל הערכים הבנתי ממה שכתבת שזה יכול להיות מהיר מספיק גם בשליפה ישירה מהשרת, גם בריבוי משתמשים?
השאלה השניה, באיזה DB לבחור, האם מתאים לי כאן NOSQL כשבעצם רוב ככל השאילתות הם בעיקר פעולות רוחביות, כמו מציאת הערך המקסימלי בטווח X? מצד שני NOSQL הרבה יותר מהיר לקריאה וכתיבה וגם דחוס, מה שמאפשר הורדה מהירה.
מידע נוסף שיכול להיות רלוונטי:
הטבלה הראשית בשרת מתעדכנת באופן קבוע על בסיס יומי.
אין כתיבה / עדכון / מחיקה בתוך הטבלה המקומית (במידה ואני בוחר להוריד ולהשתמש ב DB מקומי), לצורך שמירת נתונים וביצועים אשתמש ב DB נפרד או מסמכים.
על בסיס המבנה הפשוט של הטבלה אין שאילתות מורכבות, רק ערך הגדול/קטן/ממוצע בטווח X עד Y וכדו'.
מקווה שיצאתי ברור
תודה מראש
פורסם במקור בפורום CODE613 ב18/11/2015 16:17 (+02:00)