الفصل · ربط بياناتك

كل مصدر.
باب واحد.

استدعاء واحد يسجّل مصدراً، ويستنتج مخططاً مكتوباً، ويثبّت مراجعته في كل خطة تلمسه. تعمل الملفات وSQLite داخل العملية — دون مفتاح، ولا شيء يغادر. تتصل قواعد البيانات الحية عبر المحرك — مباشرةً، عبر بروتوكول الاتصال الخاص بكل قاعدة بيانات: بيانات الاعتماد مشفّرة، ولا بيانات تُنسخ.

const sales = await sqai.connect("./data/sales.csv", { name: "sales" })

→ row_count 12 · schema_revision e4938027… · status ready

مكتوب · مثبَّت بالتجزئة · للقراءة فقط

IIحالات الأنواع

درجان. ستة وعشرون خانة.

كل خانة تفتح على العقد ذاتها: كيف تتصل، وما تحتاجه، وما يغادر. اسحب واحدة.

داخل العمليةدون مفتاح · دون خادم خلفي · دون شبكة

CSV
حالة
ملف
اتصال
"./data/sales.csv"
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
TSV
حالة
ملف
اتصال
"./data/orders.tsv"
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
JSON
حالة
ملف
اتصال
"./data/sales.json"
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
ملاحظة
مسار أو كائن.
rows
حالة
في الذاكرة
اتصال
[{ region: "east", revenue: 512 }, …]
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
{ records }
حالة
في الذاكرة
اتصال
{ records: [ … ] }
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
SQLite
حالة
قاعدة بيانات مدمجة
اتصال
{ provider: "sqlite", path, table | query }
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
ملاحظة
قاعدة بيانات كاملة، داخل العملية. حدِّد جدولًا أو استعلامًا للقراءة فقط.
Excel
حالة
ملف
اتصال
"./data/sales.xlsx"
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
ملاحظة
Python فقط.
Parquet
حالة
ملف
اتصال
"./data/sales.parquet"
مصادقة
لا شيء. SQAI يقرأ البايتات داخل عمليتك.
مفتاح
بلا مفتاح — لا حساب، لا بطاقة، وصول كامل للقراءة فقط.
بيانات
لا شيء يغادر العملية.
ملاحظة
Python فقط.

عبر المحركبيانات الاعتماد مشفّرة · لا بيانات تُنسخ

PostgreSQL
حالة
علائقية
اتصال
{ type: "postgres", host, port, database, user, password, table | query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
MySQL
حالة
علائقية
اتصال
{ type: "mysql", host, port, database, user, password, table | query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Oracle
حالة
علائقية
اتصال
{ type: "oracle", host, port, database, user, password, table | query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
ملاحظة
برنامج تشغيل Thin-mode مدمج — لا حاجة لتثبيت عميل Oracle.
SQL Server
حالة
علائقية
اتصال
{ type: "mssql", host, port, database, user, password, table | query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Snowflake
حالة
مستودع بيانات
اتصال
{ type: "snowflake", connection_string, query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
BigQuery
حالة
مستودع بيانات
اتصال
{ type: "bigquery", connection_string, query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
ClickHouse
حالة
مستودع بيانات
اتصال
{ type: "clickhouse", connection_string, query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Redshift
حالة
مستودع بيانات
اتصال
{ type: "redshift", connection_string, query }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
S3
حالة
تخزين كائنات
اتصال
{ type: "s3", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
GCS
حالة
تخزين كائنات
اتصال
{ type: "gcs", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Azure Blob
حالة
تخزين كائنات
اتصال
{ type: "azure_blob", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Redis
حالة
NoSQL · رسم بياني · بحث
اتصال
{ type: "redis", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Neo4j
حالة
NoSQL · رسم بياني · بحث
اتصال
{ type: "neo4j", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Elasticsearch
حالة
NoSQL · رسم بياني · بحث
اتصال
{ type: "elasticsearch", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
REST
حالة
API
اتصال
{ type: "rest", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
GitHub
حالة
مستودعات الكود
اتصال
{ type: "github", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
GitLab
حالة
مستودعات الكود
اتصال
{ type: "gitlab", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.
Bitbucket
حالة
مستودعات الكود
اتصال
{ type: "bitbucket", … }
مصادقة
SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.
مفتاح
مفتاح، أو عنوان URL لمحركك الخاص.
بيانات
بيانات الاعتماد مشفَّرة في المحرك. الصفوف تُقرأ عند الطلب — لا تُنسخ أبدًا.

الوضع يُستنتج من البيئة

SQAI_ENGINE_URLself_hosted

محركك، شبكتك.

SQAI_API_KEYapi

المحرك المستضاف.

لم يُضبط أيٌّ منهماlocal

داخل العملية فقط.

الملفات و SQLite تعمل في كل وضع. قواعد البيانات الحية تستلزم api أو self_hosted. يُنشئ المحرك اتصالًا مرة واحدة ثم يبقى نشطًا — عملية دائمة، لا بدء بارد لكل استعلام.

ليس مزامنة. ليس تصديرًا.
ليس جسرًا من طرف ثالث.

اتصال مباشر عبر بروتوكول الاتصال الخاص بقاعدة البيانات

IIIالبروتوكول

مباشر. حتى مستوى البروتوكول.

يتصل المحرك مباشرةً، متحدثًا بروتوكول الاتصال الخاص بكل قاعدة بيانات. تُنفَّذ الاستعلامات في مكانها، مقيَّدةً بنطاق مؤسستك — لا تُنسخ قاعدة بياناتك أبدًا.

شكل — البروتوكول
قاعدة بياناتكالصفوف تبقى في مكانها
بروتوكوله الخاص — يتحدث به المحرك مباشرةً
المحركاستعلامات للقراءة فقط

في مكانها، في نطاقها.

يستعلم المحرك عن بياناتك حيث تقع، مقيَّدًا بنطاق مؤسستك — ولا يتجاوز ما هيَّأته.

بيانات الاعتماد مختومة.

مشفَّرة في حالة السكون، مقيَّدة بنطاق المؤسسة، تُستخدم فقط لخدمة استعلامات مؤسستك. لا يُعيد الموصِّل إعداداته أبدًا — الاسم والنوع والحالة ونتيجة آخر اختبار فحسب.

لا تُنسخ أبدًا

لا ينسخ المحرك قاعدة بياناتك أبدًا — الصفوف تُقرأ حيث تقع.

SELECT 1ok · connector: live

كل اختبار يفتح اتصالًا حقيقيًا — SELECT 1 لـ SQL، وطلب HEAD لتخزين الكائنات، وجلب عيّنة لـ REST. لا يصبح الموصِّل نشطًا إلا بعد نجاح اتصال حقيقي؛ عدِّل إعداداته وسيعود إلى حالة غير مختبَر.

البروتوكول الرئيسي · Oracle

وضع Thin. لا شيء يُثبَّت.

يدمج المحرك python-oracledb في وضع Thin ويتصل مباشرةً — لا Instant Client، ولا عملية تشغيل إضافية، ولا حزمة Python زائدة. يمتلك المحرك البروتوكول من طرف إلى طرف: برنامج التشغيل، ومجموعة الاتصالات المحدودة، والتحقق من بيانات الاعتماد، وتصفح المخطط، ومسار جلب دُفعي متوافق مع Arrow — لا اتصال احتياطي خفي خارج المجموعة.

  • جذور SELECT / WITH فقط
  • حد ROWNUM مقيَّد
  • مسبار ثابت · يُعاد استخدامه عند 0 ms

Redshift يستجيب بـ PostgreSQL.

تُقرأ الجداول في مكانها عبر بروتوكول PostgreSQL — لا يُنسخ الكلاستر أبدًا. حتى رسالة نجاح الاختبار تُسمّي PostgreSQL.

نقطة وصول واحدة، كل المسارات.

تخزين الكائنات والملفات المرفوعة يشتركان في المحللات ذاتها — ملف Parquet في S3 وملف Parquet مرفوع يصلان إلى المحرك بصورة متطابقة.

نفس الطلب → نفس الصفوف، نفس الترتيب · كل وصول قابل للتدقيق · الخروج قائمة مسموح بها مغلقة عند الفشل لكل نشر

IVالتماثل

لا يميّز المصبّ بين CSV وSnowflake.

كل مصدر يُعيد SqaiSource مكتوب النوع بالشكل ذاته — نفس الحقول، نفس الدبابيس، نفس الضمانات. استبدل المستودع بالملف ولن يتغيّر شيء في المصبّ.

داخل العملية"./data/sales.csv"
عبر المحرك{ type: "snowflake", connection_string, query }

SqaiSource

شكل موحّد · لكل مصدر
name"sales"
source_ide135c6f7eec0e846c01c4ef8
fieldsregion · product · revenue · cost · units · order_date
typed_fields2 string · 3 number · 1 date
row_count12
schema_revisione4938027ddf0d2210f019770403efd45d350eac28100902ddd7c5191c9b8cfbe
statusready

شهادة واحدة، أيًّا كان المصدر. لا يعرف كود المصبّ أين تقع الصفوف.

مسجَّل مرة واحدة.
لا يُعاد تعريفه أبدًا.

إعادة ربط الاسم تُطلق استثناءً source_already_registered

Vالدبوس

غيِّر البيانات. سيُظهره الإعادة.

تُثبّت connect() مراجعة المخطط في كل خطة وعملية حسابية. خطة مخزَّنة تُعاد تشغيلها على بيانات متغيّرة تُظهر التغيير — لا أرقام مختلفة بصمت.

schema_revision
مُثبَّت عند الاتصال في كل خطة وعملية حسابية تمسّ المصدر.
schema_revision_mismatch
ما تُعيده الإعادة حين تتغيّر البيانات من تحتها.
source_already_registered
المصادر غير قابلة للتغيير — لا يمكن إعادة توجيه اسم بصمت إلى بيانات مختلفة.

provenance.bindings[0]

source_name"sales"
fields["revenue"]
schema_revisione4938027…c9b8cfbe
row_count12
input_hash2ea5ede7…478e3212

كل حقل مربوط يحمل سلسلة نسبه.

VIأسئلة

وصول LLM إلى قواعد البيانات، مُجاباً.

كيف أمنح LLM وصولاً إلى قاعدة بياناتي؟

سجّل المصدر في الكود باستخدام connect(). لا يرى النموذج سلسلة اتصال قط — يحصل على ثلاث أدوات للقراءة فقط على مصادر مكتوبة النوع، والسياسة هي من يقرر أي المصادر والحقول يجوز له لمسها.

هل يُنسخ بياناتي عند الاتصال؟

لا. المصادر داخل العملية لا تغادر جهازك. مصادر المحرك تحتفظ ببيانات الاعتماد مشفَّرة؛ تُقرأ الصفوف عند الطلب ولا تُنسخ أبدًا.

هل SQAI مزامنة أم تصدير أم جسر خارجي لقاعدة بياناتي؟

لا شيء من هذا. الاتصال مباشر عبر بروتوكول الشبكة الخاص بقاعدة البيانات — يستعلم المحرك عن بياناتك في مكانها، مقيَّدًا بمؤسستك، ولا ينسخ قاعدة بياناتك أبدًا.

هل أحتاج مفتاح API لتوصيل البيانات؟

لا للملفات والصفوف في الذاكرة وSQLite — تعمل داخل العملية دون أي حساب. قواعد البيانات الحية والمستودعات تحتاج SQAI_API_KEY للمحرك المستضاف، أو SQAI_ENGINE_URL لمحركك الخاص.

هل يستطيع النموذج رؤية بيانات اعتمادي؟

لا. تُقدَّم بيانات الاعتماد في كودك عند connect() وتُشفَّر في المحرك. مدخل أداة النموذج يحمل نيّة مكتوبة النوع — لا تفاصيل اتصال، لا حقول سياسة.

هل Oracle مدعوم دون تثبيت عميل؟

نعم. يأتي المحرك مع مشغّل Thin-mode مدمج، فلا حاجة لتثبيت أي عميل Oracle.

ماذا يحدث حين تتغيّر البيانات الأساسية؟

يتوقف schema_revision المُثبَّت عند الاتصال عن المطابقة، وتُظهر الإعادة schema_revision_mismatch بدلاً من أرقام مختلفة بصمت. إعادة ربط اسم مسجَّل تُطلق source_already_registered.

صِل شيئًا.

Node ≥ 20 · Python ≥ 3.10 · الملفات وSQLite لا تحتاج مفتاحًا