> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-postgresql-tls-support.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> تدفق البيانات من SQL Server إلى ClickHouse لتحليلات سريعة

# تدفق البيانات من SQL Server إلى ClickHouse لتحليلات سريعة: دليل خطوة بخطوة

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

في هذه المقالة، نستعرض دليلًا عمليًا يوضّح كيفية تدفّق البيانات من SQL Server إلى ClickHouse. ويُعد ClickHouse خيارًا مثاليًا إذا كنت بحاجة إلى تحليلات فائقة السرعة لإعداد لوحات معلومات داخلية أو موجّهة للعملاء. سنأخذك خطوة بخطوة خلال إعداد قاعدتي البيانات كلتيهما، وكيفية ربطهما، ثم كيفية استخدام [Streamkap](https://streamkap.com) لبث بياناتك. إذا كان SQL Server يدير عملياتك اليومية، لكنك تحتاج إلى سرعة ClickHouse وذكائه في التحليلات، فأنت في المكان المناسب.

<div id="why-stream-data-from-sql-server-to-clickhouse">
  ## لماذا تبث البيانات من SQL Server إلى ClickHouse؟
</div>

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

وهنا يبرز ClickHouse. فقد صُمم ClickHouse لأعمال التحليلات، مع تجميع فائق السرعة وإعداد التقارير، حتى على مجموعات البيانات الضخمة. لذلك، فإن إعداد مسار معالجة CDC متدفق لدفع بيانات المعاملات إلى ClickHouse يتيح لك تشغيل تقارير فائقة السرعة، وهو ما يجعله مثاليًا للعمليات أو فرق المنتجات أو لوحات المعلومات الموجَّهة للعملاء.

حالات الاستخدام الشائعة:

* إعداد تقارير داخلية لا تؤثر في أداء تطبيقات الإنتاج
* لوحات معلومات موجهة للعملاء تحتاج إلى أن تكون سريعة ومحدَّثة دائمًا
* بث الأحداث، مثل الحفاظ على حداثة سجلات نشاط المستخدمين لأغراض التحليلات

<div id="what-youll-need-to-get-started">
  ## ما ستحتاج إليه للبدء
</div>

قبل أن نخوض في التفاصيل، إليك ما ينبغي أن تجهزه:

<div id="prerequisites">
  ### المتطلبات الأساسية
</div>

* مثيل SQL Server قيد التشغيل

* في هذا الدليل العملي، نستخدم AWS RDS for SQL Server، لكن أي مثيل حديث من SQL Server سيؤدي الغرض.[إعداد AWS SQL Server من الصفر.](https://streamkap.com/blog/how-to-stream-data-from-rds-sql-server-to-clickhouse-cloud-using-streamkap%23setting-up-a-new-rds-sql-server-from-scratch)

* مثيل ClickHouse

* ذاتي الاستضافة أو سحابي.[إعداد ClickHouse من الصفر.](https://streamkap.com/blog/how-to-stream-data-from-rds-sql-server-to-clickhouse-cloud-using-streamkap%23creating-a-new-clickhouse-account)

* Streamkap

* ستكون هذه الأداة العمود الفقري لمسار المعالجة لتدفق البيانات لديك.

<div id="connection-info">
  ### معلومات الاتصال
</div>

تأكد من توفر ما يلي:

* عنوان خادم SQL Server والمنفذ واسم المستخدم وكلمة المرور. يُنصح بإنشاء مستخدم ودور منفصلين لـ Streamkap للوصول إلى قاعدة بيانات SQL Server الخاصة بك.[اطّلع على وثائقنا لمعرفة الإعداد.](https://www.google.com/url?q=https://docs.streamkap.com/docs/sql-server\&sa=D\&source=editors\&ust=1760992472358213\&usg=AOvVaw3jfocCF1VSijgsq1OCpZPj)
* عنوان خادم ClickHouse والمنفذ واسم المستخدم وكلمة المرور. تحدد قوائم الوصول حسب IP في ClickHouse الخدمات التي يمكنها الاتصال بقاعدة بيانات ClickHouse الخاصة بك.[اتبع الإرشادات هنا.](https://www.google.com/url?q=https://docs.streamkap.com/docs/clickhouse\&sa=D\&source=editors\&ust=1760992472359060\&usg=AOvVaw3H1XqqwvqAso_TQPNBKEhD)
* الجداول التي تريد بثها—ابدأ بجدول واحد في الوقت الحالي

<div id="setting-up-sql-server-as-a-source">
  ## إعداد SQL Server كمصدر
</div>

لنبدأ!

<div id="step-1-creating-a-sql-server-source-in-streamkap">
  ### الخطوة 1: إنشاء مصدر SQL Server في Streamkap
</div>

سنبدأ بإعداد اتصال المصدر. وبهذه الطريقة يعرف Streamkap من أين يجلب التغييرات.

إليك الطريقة:

1. افتح Streamkap وانتقل إلى قسم المصادر.
2. أنشئ مصدرًا جديدًا.

* امنحه اسمًا واضحًا يسهل تمييزه (على سبيل المثال، sqlserver-demo-source).

3. أدخل تفاصيل اتصال SQL Server:

* اسم المضيف (على سبيل المثال، your-db-instance.rds.amazonaws.com)
* المنفذ (المنفذ الافتراضي لـ SQL Server هو 3306)
* اسم المستخدم وكلمة المرور
* اسم قاعدة البيانات

<Image img="https://mintcdn.com/private-7c7dfe99-postgresql-tls-support/XkqlulUoISFmzPYA/images/integrations/data-ingestion/etl-tools/image3.webp?fit=max&auto=format&n=XkqlulUoISFmzPYA&q=85&s=02a28dfdbb308a37fcca4c9b1b4fa6e0" size="lg" width="1654" height="1156" data-path="images/integrations/data-ingestion/etl-tools/image3.webp" />

<div id="whats-happening-behind-the-scenes">
  #### ما الذي يحدث في الخلفية
</div>

<Image img="https://mintcdn.com/private-7c7dfe99-postgresql-tls-support/XkqlulUoISFmzPYA/images/integrations/data-ingestion/etl-tools/image1.webp?fit=max&auto=format&n=XkqlulUoISFmzPYA&q=85&s=e9d42267f98259629213ba2ff51de435" size="lg" width="1999" height="648" data-path="images/integrations/data-ingestion/etl-tools/image1.webp" />

عند إعداد ذلك، سيتصل Streamkap بخادم SQL Server لديك ويكتشف الجداول. في هذا العرض التوضيحي، سنختار جدولًا تتدفق إليه بعض البيانات بالفعل، مثل الأحداث أو المعاملات.

<div id="creating-a-clickhouse-destination">
  ## إنشاء وجهة ClickHouse
</div>

الآن لنُعِدّ الوجهة التي سنرسل إليها كل هذه البيانات.

<div id="step-2-add-a-clickhouse-destination-in-streamkap">
  ### الخطوة 2: إضافة وجهة ClickHouse في Streamkap
</div>

كما هو الحال مع المصدر، سننشئ وجهة باستخدام تفاصيل الاتصال الخاصة بـ ClickHouse.

<div id="steps">
  #### الخطوات:
</div>

1. انتقل إلى قسم الوجهات في Streamkap.
2. أضف وجهة جديدة — واختر ClickHouse كنوع الوجهة.
3. أدخِل معلومات ClickHouse الخاصة بك:

* المضيف
* المنفذ (القيمة الافتراضية هي 9000)
* اسم المستخدم وكلمة المرور
* اسم قاعدة البيانات

مثال على لقطة شاشة: إضافة وجهة ClickHouse جديدة في لوحة معلومات Streamkap.

<div id="upsert-mode-what-is-that">
  ### وضع Upsert: ما المقصود به؟
</div>

هذه خطوة مهمة: نريد استخدام وضع “upsert” في ClickHouse، والذي يستخدم في الخلفية محرك ReplacingMergeTree في ClickHouse. يتيح لنا ذلك دمج السجلات الواردة بكفاءة والتعامل مع التحديثات بعد استيعاب البيانات، باستخدام ما يسميه ClickHouse “دمج الأجزاء”.

* يضمن ذلك ألا يمتلئ جدول الوجهة لديك بالسجلات المكررة عند حدوث تغييرات على جانب SQL Server.

<div id="handling-schema-evolution">
  ### التعامل مع تطور المخطط
</div>

لا تحتوي ClickHouse وSQL Server دائمًا على الأعمدة نفسها، خاصةً عندما يكون تطبيقك قيد التشغيل ويواصل المطورون إضافة أعمدة بشكل فوري.

* الخبر السار: يمكن لـ Streamkap التعامل مع تطور المخطط الأساسي. وهذا يعني أنه إذا أضفت عمودًا جديدًا في SQL Server، فسيظهر في ClickHouse أيضًا.

ما عليك سوى تحديد “تطور المخطط” في إعدادات الوجهة. ويمكنك دائمًا تعديل ذلك لاحقًا حسب الحاجة.

<div id="building-the-streaming-pipeline">
  ## إنشاء مسار المعالجة المتدفق
</div>

بعد تحديد المصدر والوجهة، حان وقت الجزء الممتع—بدء بث بياناتك!

<div id="step-3-set-up-the-pipeline-in-streamkap">
  ### الخطوة 3: إعداد مسار المعالجة في Streamkap
</div>

<div id="pipeline-setup">
  #### إعداد مسار المعالجة
</div>

1. انتقل إلى علامة التبويب Pipelines في Streamkap.

2. أنشئ مسار معالجة جديدًا.

3. حدِّد مصدر SQL Server الخاص بك (sqlserver-demo-source).

4. حدِّد وجهة ClickHouse الخاصة بك (clickhouse-tutorial-destination).

5. اختر الجدول الذي تريد بث بياناته — ولنفترض أنه `events`.

6. اضبط الإعدادات لاستخدام التقاط تغييرات البيانات (CDC).

* في هذا التشغيل، سنبث البيانات الجديدة (يمكنك تخطي التحميل بأثر رجعي في البداية والتركيز على أحداث CDC).

لقطة شاشة لإعدادات مسار المعالجة — اختيار المصدر والوجهة والجدول.

<div id="should-you-backfill">
  #### هل ينبغي تحميل البيانات التاريخية؟
</div>

<Image img="https://mintcdn.com/private-7c7dfe99-postgresql-tls-support/XkqlulUoISFmzPYA/images/integrations/data-ingestion/etl-tools/image2.webp?fit=max&auto=format&n=XkqlulUoISFmzPYA&q=85&s=0c950cf60d9c2f1ad85c7e2aebc67abe" size="lg" width="1999" height="563" data-path="images/integrations/data-ingestion/etl-tools/image2.webp" />

قد تسأل: هل ينبغي أن أحمّل البيانات القديمة؟

في كثير من حالات التحليلات، قد تكتفي بالبدء في بثّ التغييرات من الآن فصاعدًا، ولكن يمكنك دائمًا الرجوع وتحميل البيانات الأقدم أيضًا.

ما لم تكن لديك حاجة محددة، فاختر الآن “عدم تحميل البيانات التاريخية”.

<div id="streaming-in-action-what-to-expect">
  ## البث أثناء التشغيل: ما الذي يمكن توقّعه
</div>

الآن أصبح مسار المعالجة لديك مُعدًّا ونشطًا!

<div id="step-4-watch-the-data-stream">
  ### الخطوة 4: راقب تدفّق البيانات
</div>

إليك ما يحدث:

* عند وصول بيانات جديدة إلى الجدول المصدر في SQL Server، يلتقط مسار المعالجة في Streamkap هذا التغيير ويرسله إلى ClickHouse.
* يقوم ClickHouse (بفضل ReplacingMergeTree ودمج الأجزاء) باستيعاب هذه الصفوف ودمج التحديثات.
* يواكب المخطط التغييرات—أضف أعمدة في SQL Server وستظهر في ClickHouse أيضًا.

لوحة معلومات مباشرة أو سجلات تُظهر ازدياد عدد الصفوف في ClickHouse وSQL Server في الوقت الفعلي.

يمكنك أن ترى فعليًا الصفوف في ClickHouse وهي تتزايد مع وصول البيانات إلى SQL Server.

```sql theme={null}
-- Example: Checking rows in ClickHouse 
SELECT COUNT(*) FROM analytics.events; |
```

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

<div id="under-the-hood-whats-streamkap-actually-doing">
  ## ما الذي يفعله Streamkap فعليًا في الخلفية؟
</div>

لإعطائك لمحة سريعة:

* يراقب Streamkap السجل الثنائي لـ SQL Server (وهو السجل نفسه المستخدم في النسخ المتماثل).
* ما إن يُدرَج صف أو يُحدَّث أو يُحذَف في جدولك، حتى يلتقط Streamkap هذا الحدث.
* ثم يحوّل الحدث إلى صيغة يفهمها ClickHouse ويرسله إليه، مع تطبيق التغييرات فورًا في قاعدة بيانات التحليلات لديك.

هذا ليس مجرد ETL، بل هو التقاط كامل لبيانات التغيير (CDC) يُبث في الوقت الفعلي.

<div id="advanced-options">
  ## الخيارات المتقدمة
</div>

<div id="upsert-vs-insert-modes">
  ### نمط Upsert مقابل نمط Insert
</div>

ما الفرق بين إدراج كل صف فقط (نمط Insert) وبين ضمان انعكاس التحديثات وعمليات الحذف أيضًا (نمط Upsert)؟

* نمط Insert: يُضاف كل صف جديد، وحتى إذا كان تحديثًا، فستحصل على صفوف مكررة.
* نمط Upsert: تستبدل التحديثات على الصفوف الموجودة ما هو موجود بالفعل، وهذا أفضل بكثير للحفاظ على حداثة التحليلات ونظافتها.

<div id="handling-schema-changes">
  ### التعامل مع تغييرات المخطط
</div>

تتغير التطبيقات، وتتغير معها مخططاتك أيضًا. مع مسار المعالجة هذا:

* هل أضفت عمودًا جديدًا إلى جدولك التشغيلي؟
  سيلتقطه Streamkap ويضيفه إلى جانب ClickHouse أيضًا.
* هل أزلت عمودًا؟
  اعتمادًا على الإعدادات، قد تحتاج إلى ترحيل — لكن معظم الإضافات تتم بسلاسة.

<div id="real-world-monitoring-keeping-tabs-on-the-pipeline">
  ## المراقبة في البيئات الفعلية: متابعة مسار المعالجة عن كثب
</div>

<div id="checking-pipeline-health">
  ### التحقق من صحة مسار المعالجة
</div>

يوفّر Streamkap لوحة معلومات يمكنك من خلالها:

* الاطلاع على تأخر مسار المعالجة (ما مدى حداثة بياناتك؟)
* مراقبة عدد الصفوف ومعدل المعالجة
* تلقّي تنبيهات عند حدوث أي خلل

مثال على لوحة المعلومات: رسم بياني لزمن الاستجابة، وعدد الصفوف، ومؤشرات الحالة.

<div id="common-metrics-to-watch">
  ### المقاييس الشائعة التي ينبغي مراقبتها
</div>

* التأخر: إلى أي مدى يتأخر ClickHouse عن SQL Server؟
* معدل المعالجة: عدد الصفوف في الثانية
* معدل الأخطاء: ينبغي أن يكون قريبًا من الصفر

<div id="going-live-querying-clickhouse">
  ## بدء الاستخدام الفعلي: الاستعلام عن ClickHouse
</div>

بعد أن أصبحت بياناتك في ClickHouse، يمكنك الاستعلام عنها باستخدام كل أدوات analytics السريعة هذه. إليك مثالًا أساسيًا:

```sql theme={null}
-- See top 10 active users in the last hour
SELECT user\_id, COUNT(*) AS actionsFROM analytics.eventsWHERE event\_time >= now() - INTERVAL 1 HOURGROUP BY user\_idORDER BY actions DESCLIMIT 10;
```

اجمع بين ClickHouse وأدوات لوحات المعلومات مثل Grafana أو Superset أو Redash للحصول على تقارير متكاملة الإمكانات.

<div id="next-steps-and-deep-dives">
  ## الخطوات التالية والتعمق أكثر
</div>

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

* إعداد تدفقات مُرشَّحة (مزامنة بعض الجداول/الأعمدة فقط)
* تدفّق مصادر متعددة إلى قاعدة بيانات تحليلية واحدة
* دمج ذلك مع S3/بحيرات البيانات للتخزين البارد
* أتمتة ترحيلات المخطط عند تغيير الجداول
* تأمين مسار المعالجة باستخدام SSL وقواعد جدار الحماية

ترقّب [مدونة Streamkap](https://streamkap.com/blog) لمزيد من الأدلة المتعمقة.

<div id="faq-and-troubleshooting">
  ## FAQ واستكشاف الأخطاء وإصلاحها
</div>

س: هل يعمل هذا مع قواعد البيانات السحابية؟
ج: نعم! استخدمنا AWS RDS في هذا المثال. فقط تأكد من فتح المنافذ الصحيحة.

س: ماذا عن الأداء؟
ج: ClickHouse سريع. وعادةً ما تكون نقطة الاختناق هي الشبكة أو سرعة `binlog` في DB المصدر، لكن في معظم الحالات سيكون التأخر أقل من ثانية.

س: هل يدعم عمليات الحذف أيضًا؟
ج: بالتأكيد. في وضع upsert، يتم تمييز عمليات الحذف والتعامل معها في ClickHouse أيضًا.

<div id="wrapping-up">
  ## الخلاصة
</div>

وهكذا تكون قد حصلت على نظرة عامة كاملة حول بث بيانات SQL Server إلى ClickHouse باستخدام Streamkap. إنه سريع ومرن، ومثالي للفرق التي تحتاج إلى تحليلات محدثة باستمرار من دون الضغط على قواعد بيانات الإنتاج لديها.

هل أنت جاهز للتجربة؟
توجّه إلى [صفحة التسجيل](https://app.streamkap.com/account/sign-up) وأخبرنا إذا كنت ترغب أن نتناول موضوعات مثل:

* Upsert مقابل Insert والتفاصيل الدقيقة لكلٍّ منهما
* زمن الوصول من البداية إلى النهاية: ما مدى السرعة التي يمكنك بها الوصول إلى العرض التحليلي النهائي؟
* ضبط الأداء والإنتاجية
* لوحات معلومات واقعية مبنية على هذه المنظومة

شكرًا على القراءة! نتمنى لك بثًا ممتعًا.
