> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/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#setting-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#creating-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)
* الجداول التي تريد بثها—ابدأ بجدول واحد في الوقت الحالي

<Steps>
  <Step title="إنشاء مصدر لـ SQL Server في Streamkap" id="step-1-creating-a-sql-server-source-in-streamkap">
    <a id="setting-up-sql-server-as-a-source" />

    هيا نبدأ!

    سنبدأ بإعداد اتصال المصدر. بهذه الطريقة يعرف 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/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/image3.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=b0f0584f3a5d4ad25920d0bdedce7fe2" size="lg" width="1654" height="1156" data-path="images/integrations/data-ingestion/etl-tools/image3.webp" />

    #### ما الذي يحدث في الخلفية

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

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

  <Step title="أضِف وجهة ClickHouse في Streamkap" id="step-2-add-a-clickhouse-destination-in-streamkap">
    <a id="creating-a-clickhouse-destination" />

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

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

    #### الخطوات:

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

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

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

    ### وضع upsert: ما المقصود به؟

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

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

    ### التعامل مع تطور المخطط

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

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

    ما عليك سوى تحديد “schema evolution” في إعدادات الوجهة. ويمكنك دائمًا تعديل ذلك لاحقًا حسب الحاجة.
  </Step>

  <Step title="إعداد مسار المعالجة في Streamkap" id="step-3-set-up-the-pipeline-in-streamkap">
    <a id="building-the-streaming-pipeline" />

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

    #### إعداد مسار البيانات

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

    2. أنشئ مسار بيانات جديدًا.

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

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

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

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

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

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

    #### هل تحتاج إلى تحميل البيانات التاريخية؟

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

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

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

    ما عليك سوى اختيار “don’t backfill” في الوقت الحالي ما لم تكن لديك حاجة محددة.
  </Step>

  <Step title="مراقبة تدفق البيانات" id="step-4-watch-the-data-stream">
    <a id="streaming-in-action-what-to-expect" />

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

    إليك ما يحدث:

    * عند وصول بيانات جديدة إلى الجدول المصدر في 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; |
    ```

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

<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 والتفاصيل الدقيقة لكلٍّ منهما
* زمن الوصول من البداية إلى النهاية: ما مدى السرعة التي يمكنك بها الوصول إلى العرض التحليلي النهائي؟
* ضبط الأداء والإنتاجية
* لوحات معلومات واقعية مبنية على هذه المنظومة

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