למידה של היסודות: כיצד להשתמש ב-JSON ב-SQLite

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

בואו נתחיל!

מעצימים את ניהול נתוני היישומים המודרניים באמצעות SQLite

SQLite כמוהנושא הנפוץ ביותר והמשתמש במסד הנתונים הוא מסד נתונים ידידותי למשתמש שאינו דורש שום הקמה מורכבת או קשר לשרת. SQLite הוא ישיר וניתן להתאמה ליישומים שונים, מה שהפך אותו לבחירה ראשונה בפיתוח תוכנה. SQLite יש עיכוב בינארי קטן, בדרך כלל פחות מ-1 מגה בייט, כלומר זה קל יותר מהמסדים הנתונים האחרים. מה שעוד, SQLite מסכים לגמרי עם ACID העקרונות.

תכונה ייחודית נוספת של SQLite היא שהיא מתאימה היטב ליישומים בודדים ומכשירים מקושרים לאינטרנט כמו ציוד חכם לבית, שהם חלק מרשת הדברים (IoT). כמו כן, למרות הפשטות שלה, SQLite מתמחה בשפה הסטנדרטית של SQL. היא יכולה להתמודד עם דברים כמו עסקאות, שאילתות משניות, ו-התראות. לכן, SQLite פשוט לשימוש, ועדיין די עוצמתי.

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

עובדה מהנה: האם ידעת, שבעוד רבים מבטאים את SQLite כ- 'S-Q-Lite' (סקוואל-לייט), היוצר שלה, ריצ'רד היפ, בעצם רצה שזה יהיה מבוטא כ- 'S-Q-L-ite' (אס-קו-אל-לייט) בדיוק כמו מינרל, ובכך מדגיש את טבעה החזק אך קל משקל?

למה SQLite מצטיין בתחום המסדי נתונים היחסיים המודרניים

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

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

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

באמצעות כלי הבדיקה ClickHouse, השווינו את ביצועי המסדות של מסדי נתונים מובילים, MySQL, PostgreSQL, SQLite ו-MongoDB, על פני שאילתות שונות.

למה היכולות של SQLite להתמודדות עם JSON מהוות אופציה מצטיינת לניהול נתונים מודרניים

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

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

תמיכת SQLite ב-JSON התבגרה עם הזמן. היא הוצגה לראשונה כהרחבה בגרסה 3.9.0, שהושקה ב-2015, אך גרסאות מאוחרות יותר הגיעו עם תמיכה מובנית ב-JSON. SQLite מאפשר לך לשמור ולהשיג נתוני JSON באמצעות עמודה טקסט ומערך של פונקציות JSON, כגון json(), json_extract(), json_object(), ו-json_array().

הבנת הפונקציות החזקות של SQLite לשאילתות ב-JSON

SQLite מנהל ומנפיק נתונים JSON באמצעות פונקציות JSON. הנה הרשימה של 10 הפונקציות הJSON העיקריות ב-SQLite, המופיעות לצורך התייחסות, והשימוש בכל אחת מהן יודגם באמצעות שאילתת SQL פשוטה בקרוב.

  1. json(): פונקציה זו בודקת אם מחרוזת היא תקינה JSON. אם היא כן, הפונקציה מחזירה את אותו JSON. אם לא, היא מחזירה NULL.
  2. json_extract(): פונקציה זו מוציאה אובייקט ממחרוזת JSON באמצעות מסלול.
  3. json_array(): פונקציה זו יוצרת מערך JSON.
  4. json_array_length(): פונקציה זו מחזירה את אורך המערך הJSON.
  5. json_insert(): פונקציה זו מכניסה ערך JSON למחרוזת JSON.
  6. json_object(): פונקציה זו יוצרת אובייקט JSON.
  7. json_remove(): פונקציה זו מסירה תכונה ממחרוזת JSON.
  8. json_replace(): פונקציה זו מחליפה ערך במחרוזת JSON.
  9. json_type(): פונקציה זו מחזירה את סוג הערך הJSON (כמו INTEGER, REAL, NULL, TRUE, FALSE, TEXT ו-BLOB).
  10. json_valid(): פונקציה זו בודקת אם מחרוזת היא תקינה JSON.

סדרה מעשית של דוגמאות להבנת פונקציות הצפנה ופענוח JSON ב-SQLite

בסעיף זה, סיפקנו דוגמאות מינימליות והסבר קצר עבור כל אחת מפונקציות ה-JSON שרשמנו בסעיף הקודם. אנו משתמשים בדוגמה של נתוני JSON ממנוע הייצור Dadroit JSON של Dadroit JSON generator. הנה ה-JSON המקורי כדי לתת לך הקשר.

פונקציית json() ב-SQLite

שאילתה זו הופכת את הטקסט JSON לאובייקט JSON.

SELECT
    json ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}' ) AS json_object;

התוצאה של שאילתה זו תהיה כזו:

json_object
{"ID":1,"Name":"Forgotten in the Planet","Year":1970}

פונקציית json_extract() ב-SQLite

שאילתה זו מוצאת את הערך Name מהאובייקט JSON על ידי שימוש בו כנתיב.

SELECT json_extract('{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Name') AS movie_name;

התוצאה של שאילתה זו תהיה כזו:

movie_name
Forgotten in the Planet

פונקציית json_array() ב-SQLite

שאילתה זו יוצרת מערך JSON חדש מהקלטים המוצעים.

SELECT
    json_array ( 1, 2, 3 ) AS array_result;

התוצאה תהיה כזו:

array_result
[1,2,3]

פונקציית json_type() ב-SQLite

שאילתה זו מחזירה את סוג הנתונים של הערך Year מהאובייקט JSON.

SELECT
    json_type ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Year' ) AS property_type;

התוצאה תהיה כזו:

property_type
integer

פונקציית json_array_length() ב-SQLite

שאילתה זו סופרת את מספר האלמנטים במערך Cast באובייקט ה-JSON.

SELECT
    json_array_length ( '{"Genre":["Comedy","Crime"],"Cast":["Adrian Gratianna","Tani O''Hara","Tessie Delisle"]}', '$.Cast' ) AS array_length;

התוצאה תהיה כזו:

array_length
3

פונקציית json_object() ב-SQLite

שאילתה זו יוצרת אובייקט JSON עם זוגות מפתח-ערך ID ו-Name.

SELECT
    json_object ( 'ID', 1, 'Name', 'Forgotten in the Planet' ) AS result;

התוצאה תהיה כזו:

result
{"ID":1,"Name":"Forgotten in the Planet"}

פונקציית json_insert() ב-SQLite

שאילתה זו מכניסה את זהות המפתח-ערך Director לתוך אובייקט ה-JSON.

SELECT
    json_insert ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Director', 'Henrie Randell Githens' ) AS insert_movie;

התוצאה תהיה כזו:

insert_movie
{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}

פונקציית json_remove() ב-SQLite

שאילתה זו מסירה את זוג המפתח-ערך Director מתוך אובייקט ה-JSON.

SELECT
    json_remove ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}', '$.Director' ) AS result_of_remove;

התוצאה תהיה כזו:

result_of_remove
{"ID":1,"Name":"Forgotten in the Planet","Year":1970}

פונקציית json_replace() ב-SQLite

שאילתה זו מחליפה את Year באובייקט ה-JSON בערך החדש 1971.

SELECT
     json_replace ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}', '$.Year', 1971 ) AS result_of_replace;

התוצאה תהיה כזו:

result_of_replace
{"ID":1,"Name":"Forgotten in the Planet","Year":1971,"Director":"Henrie Randell Githens"}

פונקציית json_valid() ב-SQLite

שאילתה זו בודקת האם המחרוזת המועברת עומדת בתחביר ובמבנה הנדרשים ל-JSON חוקי, ומחזירה 1 אם כן ו-0 אחרת.

SELECT
     json_valid ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}' ) AS result_of_valid;

התוצאה תהיה כזו:

result_of_valid
1

דוגמאות שאילתא מעשיות לשאילתא SQL מושכלת באמצעות פונקציות JSON ב-SQLite

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

איחזור נתוני JSON ב-SQLite עם שאילתות הכנסה

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

CREATE TABLE movies ( data TEXT );

לאחר מכן בואו נכניס את ה-JSON שלנו לשדה data של הטבלה movies:

INSERT INTO movies ( data )
 VALUES
     ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Genre":["Comedy","Crime"],"Director":"Henrie Randell Githens","Cast":["Adrian Gratianna","Tani OHara","Tessie Delisle"],"Runtime":90,"Rate":7.0}' );

כדי לערוך (להחליף, להוסיף, להסיר וכו') JSON ב-SQLite, אפשר להשתמש בפונקציות json_replace(), json_insert() ו-json_remove().

השאילתה הבאה מחליפה את שם הסרט בערך החדש שם שבו ה-ID הוא 1:

UPDATE movies
 SET data = json_replace ( data, '$.Name', 'Found in the Universe' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

השאילתה הבאה מוסיפה תכונה חדשה כשדה חדש לתוך הנתוני ה-JSON שאותם אכסנו קודם לכן בשורה:

UPDATE movies
 SET data = json_insert ( data, '$.Country', 'USA' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

השאילתה הבאה מסירה את תכונת ה-Runtime מהנתוני ה-JSON שאותם אכסנו קודם לכן בשורה:

UPDATE movies
 SET data = json_remove ( data, '$.Runtime' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

להוציא נתוני JSON מ-SQLite

כדי להשיג נתוני JSON מ-SQLite, אפשר להשתמש בפונקציה json_extract() או בפעולת הקיצור ->:

בחר את שם הסרט:

SELECT
     json_extract ( data, '$.Name' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

או באמצעות פעולת הקיצור ->:

SELECT
     data -> '$.Name'
 FROM
     movies
 WHERE
     data -> '$.ID' = 1;

השיג את רשימת הז'אנרים:

SELECT
     json_extract ( data, '$.Genre' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

השיג את השחקן הראשון מרשימת ה-Cast:

SELECT
     json_extract ( data, '$.Cast[0]' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

להוציא את ה-Year וה-Rate:

SELECT
     json_extract ( data, '$.Year' ) AS Year,
     json_extract ( data, '$.Rate' ) AS Rate
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

תובנות סופיות

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

במילים פשוטות, SQLite מאפשר לנו לשמור ולקבל נתוני JSON באמצעות עמודת טקסט וכמה פונקציות JSON. פונקציות אלה מאפשרות לנו לחקור, לנתח ולשנות את הנתונים ה-JSON במסד הנתונים שלנו של SQLite. SQLite מציעה הרבה כלים לניהול נתוני JSON, מהוספת ושינוי נתוני JSON עד להשגתו למטרות שונות. כיסינו עשר פונקציות עיקריות של JSON ב-SQLite שמקלות על ניהול נתוני JSON. לאחר מכן, הבטנו בכמה דוגמאות נוספות של שאילתות SQL משימוש בפונקציות ה-JSON האלה ב-SQLite.

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

Source:
https://dzone.com/articles/learning-the-basics-how-to-use-json-in-sqlite