برنامه نویسی

Dengo معرفی: API MongoDB برای Deno KV

بهترین های هر دو جهان: API آشنا MongoDB با فروشگاه KV بومی Deno

Dengo - API MongoDB برای Deno KV

امروز ، من از معرفی هیجان زده ام دندان، یک لایه پایگاه داده سازگار با MongoDB
برای Deno KV. Dengo API آشنا MongoDB را به ارزش کلید داخلی Deno می آورد
فروشگاه ، به توسعه دهندگان اجازه می دهد تا از قابلیت های پرس و جو قدرتمند MongoDB استفاده کنند
در حالی که از سادگی و عملکرد Deno KV لذت می برید.

چرا دنگو؟

هنگام ساختن برنامه ها با DENO ، به خصوص برای استقرار لبه ، شما اغلب
به یک راه حل پایگاه داده نیاز دارید که:

  1. سبک وزن – هیچ وابستگی سنگین یا خدمات خارجی وجود ندارد
  2. با هم – منحنی یادگیری حداقل برای تیم خود
  3. از نوع ایمن – پشتیبانی از نوع درجه یک
  4. بدون سرور – یکپارچه در توابع لبه کار می کند

فروشگاه KV داخلی Deno برای استقرار لبه مناسب است ، اما API آن کاملاً است
متفاوت از پایگاه داده های اسناد سنتی مانند MongoDB. اینجاست که دنگو
وارد می شود – با تهیه یک API سازگار با MongoDB در بالای آن ، این شکاف را پل می کند
دنو KV

نمای کلی معماری

دنگو با سادگی و سازگاری در ذهن طراحی شده است. در اینجا چگونه است
آثار:

اجزای اصلی

  1. کلاس پایگاه داده: نقطه ورود که مجموعه ها را مدیریت می کند
  2. کلاس مجموعه: عملیات سازگار با MongoDB را اجرا می کند
  3. موتور پرس و جو: پرس و جوهای MongoDB را به عملیات KV ترجمه می کند
  4. مدیریت فهرست: قابلیت های پرس و جو کارآمد را فراهم می کند

مدل ذخیره داده ها

دنگو با استفاده از یک رویکرد ساده اما مؤثر ، اسناد را در Deno KV ذخیره می کند:

// Documents are stored with collection name and document ID as the key
[collectionName, documentId] -> documentData
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای شاخص ها ، ما از یک الگوی مشابه استفاده می کنیم:

// Indexes use a prefix to distinguish them from documents
[collectionName, "index", indexName, indexedValue] -> documentId
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این مدل ذخیره سازی امکان جستجوی کارآمد توسط شناسه و زمینه های فهرست بندی شده را فراهم می کند
حفظ سازگاری با مدل سند MongoDB.

سازگاری mongoDB

Dengo API اصلی MongoDB را که بیشتر توسعه دهندگان روزانه از آن استفاده می کنند ، پیاده سازی می کند:

عملیات پرس و جو پشتیبانی شده

  • یافتن () وت finone () با فیلتر
  • مرتب سازی ()با حد ()وت پرش () برای دستکاری نتیجه
  • پیش بینی برای انتخاب زمینه های خاص

عملیات به روزرسانی پشتیبانی شده

  • UpdateOne () وت به روزرسانی ()
  • مجموعه $با $ UNSETبا $ incبا فشار، و سایر اپراتورهای بروزرسانی
  • با صعود توانایی برای معناشناسی درج یا به روز

اپراتورهای پرس و جو پشتیبانی شده

  • مقایسه: $ EQ ، $ GT ، $ GTE ، $ LT ، $ LTE ، $ ne ، $ in ، $ nin
  • منطقی: $ و ، $ یا ، $ و نه ، $ نیست
  • مجموعه: $ all ، $ elemmatch ، اندازه $
  • عنصر: $ وجود دارد ، نوع $

در اینجا نمونه ای سریع از چگونگی آینه های API Dengo MongoDB آورده شده است:

// MongoDB
const result = await db.collection("users")
  .find({ age: { $gte: 21 } })
  .sort({ lastName: 1 })
  .limit(10);

// Dengo
const result = await db.collection("users")
  .find({ age: { $gte: 21 } }, {
    sort: { lastName: 1 },
    limit: 10,
  });
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جزئیات اجرای

بیایید عمیق تر به نحوه پیاده سازی Dengo برخی از ویژگی های مهم MongoDB بپردازیم:

پردازش پرس و جو

هنگامی که شما یک پرس و جو را اجرا می کنید find({ name: "John", age: { $gt: 30 } })، دنگو:

  1. بررسی می کند که آیا شاخصی وجود دارد که می تواند برای این پرس و جو استفاده شود
  2. اگر یک شاخص وجود دارد ، یک اسکن دامنه کارآمد را انجام می دهد
  3. اگر هیچ شاخصی وجود ندارد ، به اسکن مجموعه باز می گردد
  4. اسناد را بر اساس شرایط پرس و جو فیلتر می کند
  5. عملیات مرتب سازی ، محدودیت و پرش را اعمال می کند

مدیریت فهرست

شاخص ها برای عملکرد بسیار مهم هستند. دنگو پشتیبانی می کند:

  • شاخص های تک میدان: نمایش داده ها در یک زمینه خاص
  • شاخص های مرکب: نمایش داده ها در زمینه های مختلف
  • فهرست های منحصر به فرد: محدودیت های منحصر به فرد را اجرا کنید

ایجاد یک شاخص به سادگی است:

await collection.createIndex({ key: { email: 1 }, options: { unique: true } });
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

عملیات را به روز کنید

به روزرسانی ها در دنگو معناشناسی MongoDB را دنبال کنید:

  1. اسناد مطابق با فیلتر را پیدا کنید
  2. برای اصلاح اسناد ، اپراتورهای بروزرسانی را اعمال کنید
  3. اسناد به روز شده را به فروشگاه بنویسید
  4. فراداده بازگشت در مورد این عملیات (تطبیق ، اصلاح شده و غیره)

ملاحظات عملکرد

در حالی که دنگو سازگاری MongoDB را فراهم می کند ، درک این موارد مهم است
پیامدهای عملکرد:

  1. نمایش داده شد: بسیار سریع ، شبیه به جستجوی KV بومی
  2. نمایش داده های غیر شاخص: به اسکن کامل مجموعه نیاز دارید ، که می تواند برای مجموعه های بزرگ کند باشد
  3. نمایش داده شد: ممکن است عملکرد و همچنین در MongoDB انجام ندهد ، به خصوص برای سؤالاتی که از شاخص های تخصصی در MongoDB استفاده می کند

برای بهترین عملکرد:

  • برای زمینه های مکرر پرسیده شده شاخص هایی ایجاد کنید
  • اندازه مجموعه های خود را محدود کنید
  • از پرس و جوهای خاص تر برای اهرم شاخص ها به طور موثر استفاده کنید

ایمنی تایپ

یکی از مزایای اصلی دنگو پشتیبانی از نوع درجه یک آن است:

interface User {
  _id: ObjectId;
  name: string;
  email: string;
  age: number;
  tags: string[];
}

const users = db.collection<User>("users");

// TypeScript will ensure you're using the correct fields and types
const result = await users.findOne({
  email: "john@example.com",
  age: { $gte: 21 },
});

// result will be typed as User | null
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

محدودیت ها و کارهای آینده

در حالی که دنگو قصد دارد یک تجربه سازگار با MongoDB را ارائه دهد ، برخی از آنها وجود دارد
محدودیت ها:

  1. بدون چارچوب تجمع: تحولات پیچیده داده ها باید در کد برنامه انجام شود
  2. پشتیبانی از معامله محدود: فقط عملیات اتمی روی اسناد منفرد کاملاً پشتیبانی می شود
  3. بدون جریان تغییر: به روزرسانی های زمان واقعی در حال حاضر پشتیبانی نمی شوند

نسخه های آینده دنگو با تکامل Deno KV ، این محدودیت ها را برطرف می کند.

شروع

استفاده از دنگو ساده است:

import { Database } from "dengo";

// Open a Deno KV database
const kv = await Deno.openKv();

// Create a Dengo database instance
const db = new Database(kv);

// Get a collection
const todos = db.collection("todos");

// Insert a document
await todos.insertOne({
  title: "Learn Dengo",
  completed: false,
  createdAt: new Date(),
});

// Query documents
const incompleteTodos = await todos.find({ completed: false });
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پایان

دنگو بهترین های هر دو جهان را به توسعه دهندگان دنو می آورد – آشنا و مونگودب
API قدرتمند با فروشگاه KV بومی Deno. مناسب برای:

  • توابع لبه و برنامه های بدون سرور
  • پروژه هایی که از MongoDB به Deno مهاجرت می کنند
  • توسعه دهندگان که می خواهند یک پایگاه داده سند و بدون وابستگی خارجی

ما از دیدن آنچه شما با دنگو می سازید هیجان زده هستیم! ما را بررسی کنید
مخزن GitHub برای مثال های بیشتر و
مستندات


این پست بخشی از سری پرتاب دنگو است. برای پست های بیشتر در مورد
بهینه سازی عملکرد ، استراتژی های مهاجرت و موارد استفاده در دنیای واقعی.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا