# قواعد البيانات

> أنشئ قاعدة بيانات Postgres أو Redis أو MySQL أو MongoDB، واتصل بها وشغّل استعلامات. وتدعم Postgres أيضًا اللقطات والفروع.

Source: https://gheima.ma/ar/docs/databases

تشغّل غيمة لك قواعد بيانات Postgres وRedis وMySQL وMongoDB مُدارة. ولكل قاعدة بيانات بيانات اعتماد خاصة بها، مشفّرة أثناء التخزين.

1. إنشاء — اختر Postgres أو Redis أو MySQL أو MongoDB.
2. تهيئة — يعرض المضيف «جارٍ التجهيز…» حتى تجهز.
3. تبويب الاتصال — أظهر المضيف والمنفذ واسم المستخدم وكلمة المرور.
4. تطبيقك — الصق سلسلة اتصال جاهزة.

### أنشئ قاعدة بيانات

1. **قاعدة جديدة** — في صفحة قواعد البيانات، انقر «قاعدة بيانات جديدة».
2. **سمِّها واختر محرّكًا** — اختر Postgres أو Redis أو MySQL أو MongoDB. قاعدة البيانات مورد مستقل على مستوى الحساب. اربطها بخدمة لاحقًا لحقن متغيّرات الاتصال الخاصة بها.
3. **انتظر التجهيز** — يعرض المضيف «جارٍ التجهيز…» حتى تصبح القاعدة جاهزة.

### الاتصال

افتح تبويب الاتصال وانقر «إظهار تفاصيل الاتصال» (يُسجَّل ذلك في سجلّ التدقيق). سترى المضيف والمنفذ واسم المستخدم وكلمة المرور، إضافةً إلى مقتطفات جاهزة لملف ‎.env ولـ Node.js ولواجهة الأوامر (psql وmysql وmongosh وredis-cli).

### بادئة المفتاح (Redis)

لا تحتوي Redis المُدارة على قاعدة بيانات تسمّيها. تتشارك الحسابات نسخة Redis واحدة، ويفصل بينها ACL محصور في بادئتك الخاصة، المعروضة باسم «بادئة المفتاح» في صفحة قاعدة البيانات. يجب أن يبدأ بها كل مفتاح يكتبه تطبيقك. يُرفض المفتاح الذي لا يحملها برسالة NOPERM أثناء التشغيل لا عند الاتصال، فيبدو الأمر كخلل صلاحيات في شيفرتك. معظم العملاء يضيفون البادئة نيابةً عنك: اضبطها مرة واحدة عند إنشاء العميل بدل إضافتها في كل نداء.

```
const redis = new Redis(process.env.REDIS_URL, {
  keyPrefix: 'u_abc123:', // القيمة المعروضة في صفحة قاعدة البيانات
});
```

ioredis يطبّق البادئة على كل أمر. إن كان عميلك لا يدعم ذلك، أضف البادئة بنفسك.

> Note: إذا كان تطبيقك يكتب مفاتيح لا تتحكّم فيها، كما يفعل BullMQ، فاستخدم طابورًا مُدارًا بدلًا من ذلك. فهو يُجهَّز بصلاحيات القنوات التي يحتاجها BullMQ.

### وحدة الاستعلام

يفتح تبويب البيانات وحدة استعلام للمحرّكات الأربعة. ولـ Postgres وMySQL أيضًا شبكة «تصفّح» لجداولك. نفّذ العبارات بزر «تشغيل» (‏⌘/Ctrl+Enter)، ونسّق SQL، وصدّر النتائج بصيغة CSV أو JSON.

```sql
SELECT * FROM your_table LIMIT 100;
```

لـ MongoDB مرّر استعلام JSON؛ ولـ Redis أمرًا مثل GET your:key.

### إعادة تعيين بيانات الاعتماد

استخدم «إعادة توليد كلمة المرور» في صفحة قواعد البيانات، أو «إعادة تعيين كلمة المرور» في الإعدادات، لتغيير كلمة المرور. تُقطع الاتصالات القائمة. وتُعاد عملية نشر الخدمات العاملة المرتبطة بالقاعدة ببيانات الاعتماد الجديدة. أما أي عميل آخر فعليه إعادة الاتصال بكلمة المرور الجديدة.

### اللقطات والفروع (Postgres)

- اللقطات: خذ نسخة احتياطية عند الطلب بزر «أخذ لقطة» واستعِدها لاحقًا.
- الفروع: انسخ مخطّط قاعدة البيانات وبياناتها إلى فرع معزول، مثل pr-123، ثم أعِد ضبطه أو احذفه.

> Note: اللقطات والفروع مدعومة لقواعد Postgres.

### الإضافات (Postgres)

افتح الإعدادات في قاعدة Postgres لتفعيل إضافات مختارة بنقرة واحدة. تضيف pgvector نوع العمود vector للـ embeddings والبحث بالتشابه.

```sql
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO items (embedding) VALUES ('[1,2,3]');
```

بعد تفعيل pgvector، أنشئ عمود vector واستعلم حسب المسافة.

### المنافذ الافتراضية

### النسخ الاحتياطي المجدول والاحتفاظ (Postgres)

من الإعدادات، حدّد جدول cron لأخذ لقطات تلقائية لقاعدة Postgres. تُبقي سياسة الاحتفاظ أحدث N لقطة فقط، وتحذف اللقطات التلقائية الأقدم، سجلّها وملفها المخزَّن معًا. ويمكن استعادة أي لقطة، يدوية كانت أو تلقائية، في مكانها بنقرة واحدة.

### تجميع الاتصالات (Postgres)

أظهر تفاصيل الاتصال بقاعدة Postgres للحصول أيضًا على سلسلة اتصال مجمّعة تمرّ عبر PgBouncer (تجميع بالمعاملات). استخدم الرابط المجمّع للتطبيقات التي تفتح اتصالات قصيرة كثيرة (serverless، تزامن عالٍ)؛ والرابط المباشر للجلسات التي تحتاج عبارات محضّرة أو LISTEN/NOTIFY.

- `Postgres`: 5432
- `MySQL`: 3306
- `MongoDB`: 27017
- `Redis`: 6379

يمكن أن تنتمي القاعدة إلى مشروع أو تكون مستقلّة. الفرع نفسه قاعدة كاملة يمكنك الاتصال بها أو إعادة ضبطها أو حذفها بمعزل عن مصدرها.

> Result: لدى تطبيقك قاعدة بيانات مُدارة يتصل بها ويستعلم منها ويأخذ نسخها الاحتياطية ويفرّعها، دون أن تشغّل الخادم بنفسك.

---

All docs: https://gheima.ma/ar/docs.md
