فاينفرفاينفر
EN
برمجة 3 min read

لقد أنشأنا NestJs DuckDB: تكامل بسيط لـ DuckDB مع NestJS

Asha Vardhan

Asha Vardhan

July 23, 2026

كمطورين، نستخدم غالبًا قواعد بيانات مثل PostgreSQL أو MySQL أو MongoDB عند بناء تطبيقات الواجهة الخلفية باستخدام NestJS. ولكن ليست كل مشكلة بيانات تتطلب إعداد قاعدة بيانات تقليدية.

# nestjs-duckdb: دمج DuckDB مع NestJS بطريقة بسيطة وسلسة

كيفطور، غالباً ما نستخدم قواعد بيانات مثل PostgreSQL أو MySQL أو MongoDB عند بناء تطبيقات الخلفية (backend) بإطار NestJS. لكن ليست كل مشكلة بيانات تتطلب إعداد قاعدة بيانات تقليدية.

مؤخراً، بدأنا في استكشاف **DuckDB** لأحمال العمل التحليلية ومعالجة البيانات. DuckDB هي قاعدة بيانات تحليلية تعمل داخل التطبيق (in-process)، وهي خفيفة الوزن، سريعة، وسهلة الاستخدام.

أثناء استخدام DuckDB مع تطبيق NestJS، أردنا تكاملاً بسيطاً يشعر بأنه جزء طبيعي من نظام NestJS البيئي.

لذلك، قمنا بإنشاء **[nestjs-duckdb](https://github.com/finepher/nestjs-duckdb)**

## ما هي DuckDB؟

DuckDB هي قاعدة بيانات تحليلية مصممة للعمل مباشرة داخل تطبيقك. على عكس قواعد البيانات التقليدية التي تتطلب خادم قاعدة بيانات منفصلاً، يمكن تشغيل DuckDB داخل عملية التطبيق نفسه.

هذا يجعلها خياراً مثيراً للاهتمام في حالات استخدام مثل:

- التحليلات (Data Analytics)
- إعداد التقارير (Reporting)
- معالجة البيانات (Data Processing)
- استكشاف البيانات محلياً (Local Data Exploration)
- سير عمل ETL
- أحمال العمل التحليلية (Analytical Workloads)

كما تدعم DuckDB كلاً من قواعد البيانات في الذاكرة (in-memory) وملفات قواعد البيانات، مما يمنح المطورين مرونة حسب حالة الاستخدام.

## لماذا أنشأنا nestjs-duckdb؟

عند العمل مع DuckDB في تطبيق NestJS، أردنا أن نبقى التكامل بسيطاً.

لم نرد أن يضطر المطورون للتعامل مع إعدادات غير ضرورية أو كتابة كود تهيئة قاعدة بيانات متكرر.

أردنا شيئاً يتبع أنماط NestJS المألوفة في الوحدات (modules) وحقن التبعيات (dependency injection):

```typescript
DuckDbModule.forRoot({
  database: ':memory:',
});

ثم، أينما نحتاج DuckDB، يمكننا ببساطة حقن الخدمة:

constructor(
  private readonly duckDb: DuckDbService,
) {}

من هناك، يمكنك تنفيذ استعلاماتك والعمل مع DuckDB مباشرة من خدمات NestJS الخاصة بك.

هذه هي الفكرة الرئيسية وراء nestjs-duckdb.

اجعل الأمر بسيطاً. قم بالتهيئة مرة واحدة. واحقن الخدمة أينما احتجتها.

ماذا توفر الحزمة؟

توفر الحزمة طبقة تكامل بسيطة بين NestJS و DuckDB.

تدعم:

  • تهيئة DuckDB بسهولة باستخدام forRoot()

  • تهيئة غير متزامنة باستخدام forRootAsync()

  • حقن التبعيات عبر DuckDbService

  • تنفيذ استعلامات SQL

  • تنفيذ عبارات SQL

  • الوصول إلى اتصال DuckDB الأساسي

  • الوصول إلى قاعدة بيانات DuckDB الخام

  • حقن قاعدة البيانات مباشرة عندما تحتاج إلى وصول على مستوى أدنى

واجهة برمجة التطبيقات (API) صغيرة عمداً. الهدف ليس إخفاء DuckDB خلف طبقة تجريد معقدة، بل تسهيل استخدامها داخل تطبيق NestJS.

مثال سريع

بعد تثبيت الحزمة:

npm install nestjs-duckdb

يمكنك تهيئتها في وحدة NestJS الخاصة بك:

import { Module } from '@nestjs/common';
import { DuckDbModule } from 'nestjs-duckdb';

@Module({
  imports: [
    DuckDbModule.forRoot({
      database: ':memory:',
    }),
  ],
})
export class AppModule {}

ثم قم بحقن DuckDbService في خدمات تطبيقك وابدأ العمل مع بياناتك.

لمزيد من التفاصيل حول الاستخدام، وخيارات التهيئة، والأمثلة، راجع التوثيق وملف README الخاص بالحزمة.

لمن هذه الحزمة؟

يمكن أن تكون nestjs-duckdb مفيدة للمطورين الذين يبنون تطبيقات NestJS وتحتاج إلى العمل مع DuckDB لحالات استخدام تحليلية أو معالجة بيانات.

على سبيل المثال، قد تكون بصدد بناء:

  • خدمة تحليلات داخلية

  • تطبيق تقارير

  • أداة معالجة بيانات

  • خط أنابيب ETL

  • خدمة تحتاج إلى معالجة مجموعات بيانات محلية

  • خلفية تحليلية خفيفة الوزن

بالطبع، يعتمد ما إذا كانت DuckDB هي الخيار المناسب على بنيتك وحمل العمل الخاص بك. لكن إذا كنت تستخدم NestJS بالفعل وتريد استكشاف DuckDB، نأمل أن تجعل هذه الحزمة التجربة أسهل قليلاً.

صُنعت لمجتمع NestJS

أنشأنا nestjs-duckdb لأننا أردنا طريقة مباشرة لإحضار DuckDB إلى مشاريع NestJS.

إنها حزمة صغيرة بهدف بسيط: اجعل DuckDB تشعر وكأنها في بيتها داخل تطبيق NestJS.

إذا كنت مهتماً بتجربتها، اطلع على التوثيق والأمثلة في مستودع الحزمة.

يسعدنا سماع ملاحظاتك، اقتراحاتك، وأفكارك لتحسين الحزمة.

هل لديك مشروع NestJS يستخدم DuckDB؟ جرّب nestjs-duckdb وأخبرنا برأيك!

Related Blogs

Related Blogs

The Hidden Dangers of SVG: Why Your "Safe" Image Format Can Hack Your Website
الأمن السيبراني
June 19, 2026

The Hidden Dangers of SVG: Why Your "Safe" Image Format Can Hack Your Website

تُعد رسوميات SVG (الرسوميات المتجهية القابلة للتحجيم) من أكثر التنسيقات المحبوبة لدى المطورين والمصممين، وذلك لقابليتها للتحجيم، وصغر حجم ملفاتها، وجودة عرضها العالية. ولكن خلف مظهرها البريء القائم على لغة XML، تختبئ واحدة من أقوى نواقل هجمات البرمجة النصية عبر المواقع (XSS).

Understanding .env in Node.js
ديفوبس
May 17, 2026

Understanding .env in Node.js

When building a Node.js app, you’ll often see a file called .env. At first, it may look confusing, but it’s actually one of the most important parts of managing your application properly.

How Kali Linux Helps Protect Your Web Applications, eCommerce Stores, and API
الأمن السيبراني
May 7, 2026

How Kali Linux Helps Protect Your Web Applications, eCommerce Stores, and API

Running a website, online store, or API is exciting, but it also comes with security risks. Hackers are always looking for weak points to steal data, damage websites, or interrupt services. This is why businesses need strong security tools to stay protected.