Bitcoin – מה זה ואיך זה

יום שלישי, ספטמבר 12, 2017

הקדמה מה זה ביטקוין? מאוד פשוט, לא? זה מטבע וירטואלי, משהו עם blockchain, וזה גם cryptocurrency..האמת – קשה להבין, לי לקח הרבה זמן להיות מסוגל להסביר לעצמי במה מדובר, וגם אלה שבתחום – לא פעם מתמקדים בהיבט טכני שלו אותו הם מכירים היטב, אבל מתקשים לראות ולהבין את התמונה הכוללת.במה דברים אמורים? יצא לי להכיר משקיעים שהייתה להם דעה מלומדת באילו מניות להשקיע, ויתכן אף שהם באמת ידעו ולא סתם זרקו דברים ללא כיסוי, אבל לא ידעו מה זה “מנייה”.. מבחינתם מנייה הייתה משהו שמוכרים וקונים, והפיקח – קונה בזול ומוכר ביוקר, ומה זה בדיוק? זה מה שזה –...
תגיות: ,
אין תגובות

External Data Source: תחליף ל-Linked Server ב-Azure

יום שני, ספטמבר 11, 2017

לפני יותר משנה כתבתי פוסט על פנייה בין דטבייסים שונים ב-Azure. והראיתי כיצד ניתן ליצור External Tables, כלומר – קישור לטבלאות בדטבייס אחר ב-Azure. לא כמו Linked Server שמאפשר לגשת לכל מה שיש בשרת (בכפוף להרשאות), External Tables הוא לטבלה בודדת. מי שרוצה יותר מזה, יכול להיעזר באותה תשתית (Master Key + Database Scoped Credential) כדי ליצור  External Data Source, שהוא המקבילה ל-Linked Server בעולם ה-Azure, כשמדובר באובייקט ברמת הדטבייס. קודם כל ניצור באופן חד פעמי Master Key Encryption (אם יש- אי אפשר ואין צורך באחד נוסף): --Drop Master Key;If Not Exists (Select * From...

Sync ב-SQL Azure: רפליקציה בין דטבייסים

יום שבת, ספטמבר 2, 2017

אופציית Sync מהווה תחליף נוח לרפליקציה בין דטבייסים ב-Azure: יש מספר מגבלות, אבל השימוש פשוט וקל. המצרכים: שני דטבייסים, ובאחד מהם טבלה עם Primary Key (בלי זה אי אפשר).המקור נקרא Hub והיעד Member, נעים מאוד! ניצור Sync Group חדש, כולל טבלה לסינכרון: שם – בסגנון חופשי.מרווח מינימלי לסנכרון – 5 דקות. לכאורה יש אופציה למרווח בשניות, אבל אי אפשר לכתוב פחות מ-300 שניות.. זה החסרון העיקרי של הכלי, בעיקר למי שרוצה רפליקציה מעודכנת קרוב לזמן האמיתי.במקרה של קונפליקט בין טבלת המקור להעתק – המקור (Hub) מכריע. כנראה שסעיף זה נועד ל-B Directional Sync (בהמשך).כעת צריך להמתין עד...
אין תגובות

קריאת קבצי XML בעזרת Python

יום שלישי, אוגוסט 15, 2017

קריאת קבצי XML זה נושא כאוב ב-SQL Server, אם תשים תחבושת לא יעזור לך שנתיים: הפקודה אינה נוחה, לא משנה כמה פעמים השתמשתי בה בעבר – בכל פעם מחדש אני יוצא מדעתי והדברים ארוכים. בנוסף לכך – יש להכיר את הסכימה של ה-XML כדי “לפרסר” אותו בעזרת TSQL.יתכן שבמקרים מסויימים נצליח להיעזר בפתרון שלהלן, בכפוף לכך שהגרסה שלנו תומכת בפייתון (2017 וצפונה), ושה-XML כתוב כך שהפייתון יכול לו: הוא אינו אוהב שבכותרת הקובץ יש שורת פרטים בסגנון של <?xml version="1.0" encoding="UTF-8"?> תווים מסויימים מוציאים אותו מדעתו, בעיקר ‘גרשיים’ בודדים אם הופכים את המידע ל-JSON, סגירת תגיות לא מפורשת- <foo>bla..bla..bla</>...
תגיות: , , , ,
אין תגובות

עיצוב אימיילים ב-SQL Server בעזרת Python

יום ראשון, אוגוסט 13, 2017

אצלנו מקובל לשלוח דוחות באימייל לרשימות תפוצה שונות: במקרה הטוב, כשיש תקלה, הנמענים מקבלים התרעה; ובמקרה הפחות טוב – הם מקבלים אימיילים גם כשהכל בסדר.. משל למה הדבר דומה? באמצע תוכנית טלוויזיה יש פתאום מבזק: מה קרה? פיגוע? לא: בסך הכל רוצים להודיע שלא קרה כלום ושאשר להירגע ולהמשיך לצפות בתוכנית..בכל מקרה: משלוח האימייל מתבצע בעזרת הפרוצדורה sp_send_dbmail, ויש שם שלל אפשרויות איך, מה, ולמי לשלוח. מקובל לשלוח אימיילים בעיצוב html שמאפשר להדגיש, לעמד, ולשלוח הודעה מעוצבת לתפארת. לשם כך יש לחזור למקורות ולהיזכר כיצד משתמשים בכל התגיות, יכולת בהחלט ראויה להערכה כשמדובר בילד ביסודי, אך לא כשמדובר ב-DBA.....
אין תגובות

Python: הורדת נתונים מהאינטרנט ל-SQL Server

יום חמישי, אוגוסט 10, 2017

יכולת בהחלט שווה של פייתון, ובפרט אם היא מתבצעת מתוך SQL Server: הורדת נתונים מהאינטרנט.למשל- טבלת מדינות לפי צפיפות האוכלוסיה: נתחיל בפייתון לבד: import pandas as pdcountries=pd.read_html("https://simple.wikipedia.org/wiki/List_of_countries_by_population_density")countries אינני מציג כאן צילום מסך, כי בממשקי הפיתוח של פייתון הפלט אינו מעוצב, ואין טעם להשקיע בזה יותר מדי כי הפייתון הוא רק כלי עזר לשליפה לאדימיניסטרטור, ולא ממשק למשתמש הקצה.יתכן שיופיעו הודעות שגיאה לגבי מודולים שחסרים, ואזי כדאי להתקין את המודולים הבאים (אם אינם): pandaslxmlhtml5libBeautifulSoup4 כיצד מתקינים? בעזרת פקודת ההתקנה pip, למשל (בחלונית שורת הפקודה cmd): pip install pandas אם המערכת אינה מוצאת את pip, יש להפעיל אותו עם הנתיב המלא שלו.כדי למצוא...
אין תגובות

קול התור נשמע בארצנו: השימוש ב-Queue של Azure (והוצאת קיטור)

יום שני, אוגוסט 7, 2017

מה בתוכניתנו? ל-Azure יש אובייקט בשם Queue שלכאורה יכול היה להיות תחליף ל-Service Broker שב-On Premise.Queue הוא אובייקט שסרוויס אחד מכניס לתוכו מידע, ואחר שולף על פי סדר ההכנסה (FIFO); כל זאת במסגרת עיבוד אסינכרוני. לו לא היו מספקים לנו Queues מן המוכן, היינו יכולים לאלתר בקלות פתרון עם טבלאות; אך אם מקבלים אובייקט עם הפונקציונליות המבוקשת בתוכו – נשתמש בו בשעת הצורך.גדולתו של Service Broker בעיני היא ביכולת לכלול בהגדרת ה-Queue פרוצדורה שקוראת ממנו, ואזי כלערך שמוכנס ל-Queue יוזם אוטומטית הפעלה של הפרוצדורה שתטפל בו. קצת דומה ל-Trigger על טבלה, אך עם היתרון בכך שההפעלה של הפרוצדורה היא...
תגיות: , , ,
אין תגובות

GraphDB ב-SQL Server 2017

יום שלישי, יולי 18, 2017

גרסת 2017 שבשעת כתיבת שורות אלו היא עדיין גרסת CTP (מה שנקרא בדרך כלל – גרסת בטה), תומכת ב-GraphDB, וב-SQL Azure הטכנולוגיה כבר זמינה לשימוש. טכנולוגיה זו שכוללת אובייקטים חדשים מחד, והרחבה של שפת TSQL עבורם; נועדה לטפל ברשתות, או ליתר דיוק – במידע לגבי רשתות. מבוא קצרצר לתורת הרשתות זו רשת (Graph): אוסף של קודקודים (Nodes) וקשתות (Edges), כשכל קשת מחברת בין שני קודקודים.הרשת יכולה לייצג אנשים וההיכרויות בינם, תחנות רכבת המקושרות בינן, קשרים בין אטומים במולקולות, ועוד.במקרה זה הקשתות הן סימטריות: המרחק מתחנת האוניברסיטה לתחנת הרצליה היא כמרחק מתחנת הרצליה לתחנת האוניברסיטה, ואם אני חבר...
אין תגובות

הרצת קוד SQL ב-Python

יום שבת, יולי 15, 2017

לפני מספר שבועות פרסמתי את הפוסט הרצת קוד Python ב-SQL Server oשעסק ביכולת החדשה בגרסת 2017 הבעל”ט לשלב Python בתוך TSQL,והפעם נעסוק בצד השני המתרס – כיצד פונים מ-Python ל-SQL Server לצורך שליפה או עדכון.נתחיל בשליפה: import pyodbccon = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};PORT=1433;SERVER=tcp:teddicq7nm.database.windows.net,1433;PORT=1443;DATABASE=GeriReshefDB;UID=Ana;PWD=p@$$w0rD_p@$$w0rD')cursor = con.cursor()cursor.execute("Select * From T_Log;")Cr = cursor.fetchall()cursor.close()con.close()print(Cr)#I=0#while (I<;len(Cr)-1):# print(str(Cr) + " " + str(Cr))# I+=1 בשל רגישותו של Python להזחה (אינדנטיזציה) – יש לוודא שהשורות מוזחות באופן תקין.הסט מועבר לתוך list בשם row.במקרה זה אני מדפיס את כל ה-list בלי להתעכב על ענייני עיצוב רק כדי להמחיש...
תגיות: , , ,
אין תגובות

הפעלה וכיבוי אוטומטיים של VM ב-Azure (והמשך הקיטורים מהפוסט הקודם)

יום שבת, יולי 8, 2017

שרתים וירטואלייםמחוייבים לפי המשאבים שהוקצו להם וזמן הפעילות, בניגוד לשרתים “בשר ודם” שהעלות המשתנה שלהם מתבטאת בצריכת חשמל ואולי בשחיקה מסויימת של החומרה. לכן כדאי לכבות אותם אם אינם בשימוש, ולחסוך חלק ניכר מהעלות.כדאי לציין ש”לכבות” אינו מתבטא רק בלהתחבר לשרת ולהוריד אותו, אלא בלכבות אותו דרך הפורטל – ואז הוא deallocated. משל למה הדבר דומה? החנתם את המכונית וכיביתם את המנוע כך שאינה צורכת יותר דלק, אבל עדיין צריך לשלם על החנייה. לו היה ניתן לעשות לה deallocation אפשר היה “להעלים” אותה לזמן מה ולחסוך גם את זה. הבהרה: כל מה שכתוב להלן מתייחס ל-VM שאינם Classic VM!...
אין תגובות