חלומות על PGlite

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

import { PGlite } from "npm:@electric-sql/pglite"

async function main() {
  const db = new PGlite()
  await db.query("create table test(x integer, y integer);");
  await db.query("insert into test values(1, 1);");
  await db.query("insert into test values(2, 2);");
  const result = await db.query("select * from test");

  console.log(result);
}

main();

הפרויקט עדיין בשלבי פיתוח וידרוש עוד עבודה עד שנקבל תמיכה ב ORM-ים אבל כבר אפשר לחלום על כמה שיפורים משמעותיים בפיתוח שהוא יוכל להכניס לאקוסיסטם של JavaScript בצד שרת-

  1. מהירות - כי אם בסיס הנתונים רץ באותו תהליך כמו השרת אז יותר זול להוציא קריאות לבסיס הנתונים.

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

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

  4. פורטינג יותר מהיר לאפליקציות Offline First - כי אפשר לקחת את אותן שאילתות פוסטגרס שכבר יש לנו ופשוט להריץ הכל בדפדפן.

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