البدء السريع
تفاصيل الاتصال
تتوفر تفاصيل خدمة ClickHouse Cloud الخاصة بك في ClickHouse Cloud console.
حدّد الخدمة التي ستتصل بها، ثم انقر على Connect:
اختر Native، وستتوفر التفاصيل ضمن مثال لأمر
clickhouse-client.
إذا كنت تستخدم ClickHouse مُدارًا ذاتيًا، فسيحدّد مسؤول ClickHouse لديك تفاصيل الاتصال.
تهيئة وحدة
انسخ بعض الشيفرة النموذجية
clickhouse-golang-example واحفظها باسم main.go.
main.go
نفّذ go mod tidy
عيّن تفاصيل الاتصال الخاصة بك
main.go داخل الدالة connect():
نفّذ المثال
تعرّف على المزيد
نظرة عامة
- clickhouse-go - مكتبة عملاء عالية المستوى للغات البرمجة تدعم إما واجهة
database/sqlالقياسية في Go أو واجهة برمجة تطبيقات ClickHouse الأصلية. - ch-go - عميل منخفض المستوى. يدعم الواجهة الأصلية فقط.
أربع طرق للاتصال
clickhouse-go خيارين مستقلين: أي واجهة برمجة تطبيقات تستخدم وأي وسيلة نقل تستخدم. ويؤدي الجمع بينهما إلى أربعة أوضاع اتصال:
اختيار واجهة برمجة تطبيقات: اختر واجهة برمجة تطبيقات ClickHouse للحصول على أعلى أداء ومجموعة الميزات الكاملة (استدعاءات التقدم، وعمليات insert العمودية، ودعم غني للأنواع). واختر
database/sql عندما تحتاج إلى التكامل مع ORMs أو مع أدوات تتوقع واجهة قاعدة بيانات قياسية لـ Go.
اختيار وسيلة النقل: TCP أسرع وهو الخيار الافتراضي. انتقل إلى HTTP عندما تتطلب البنية التحتية لديك ذلك — على سبيل المثال، عند الاتصال عبر موازن تحميل أو proxy خاص بـ HTTP، أو عندما تحتاج إلى ميزات خاصة بـ HTTP مثل الجلسات مع الجداول المؤقتة، أو خوارزميات ضغط إضافية (gzip, deflate, br).
تستخدم كلتا واجهتي برمجة التطبيقات الترميز الثنائي الأصلي بغض النظر عن وسيلة النقل، لذلك لا يضيف HTTP أي عبء serialization.
اختيار عميل
insert، حيث يلزم تنفيذ ملايين عمليات الإدراج في الثانية، نوصي باستخدام العميل منخفض المستوى ch-go. يتجنب هذا العميل الكلفة الإضافية المرتبطة بتحويل البيانات من تنسيق موجّه للصفوف إلى تنسيق موجّه للأعمدة، كما يتطلب التنسيق الأصلي لـ ClickHouse. بالإضافة إلى ذلك، فهو يتجنب أي استبطان (reflection) أو استخدام النوع interface{} (any) لتبسيط الاستخدام.
أما بالنسبة إلى أعباء عمل الاستعلام التي تركز على التجميعات، أو أعباء عمل الإدراج ذات معدل النقل الأقل، فإن clickhouse-go يوفّر واجهة database/sql مألوفة ودلالات صفوف أبسط. ويمكنك أيضًا، عند الحاجة، استخدام HTTP كبروتوكول نقل والاستفادة من الدوال المساعدة لتحويل الصفوف من البُنى (structs) وإليها.
التثبيت
require github.com/ClickHouse/clickhouse-go/v2 main
أو استنسخ المستودع:
الإصدارات
توافق ClickHouse
- جميع إصدارات ClickHouse المدعومة حاليًا كما هو موضح هنا. وعندما تتوقف إصدارات ClickHouse عن تلقي الدعم، تتوقف أيضًا اختبارات توافقها النشطة مع إصدارات العميل.
- جميع إصدارات ClickHouse ضمن فترة سنتين من تاريخ إصدار العميل. لاحظ أن إصدارات LTS فقط هي التي تخضع لاختبارات نشطة.
التوافق مع Golang
أفضل الممارسات
- استخدم واجهة برمجة تطبيقات ClickHouse حيثما أمكن، خاصةً مع الأنواع البدائية. فهذا يجنبك قدرًا كبيرًا من الاستبطان وعدم المباشرة.
- إذا كنت تقرأ مجموعات بيانات كبيرة، ففكّر في تعديل
BlockBufferSize. سيزيد ذلك من استهلاك الذاكرة، لكنه يتيح فك ترميز المزيد من الكتل بالتوازي أثناء التكرار على الصفوف. القيمة الافتراضية 2 متحفظة وتقلل من الحمل الإضافي على الذاكرة. وتعني القيم الأعلى وجود المزيد من الكتل في الذاكرة. ويتطلب هذا الاختبار، لأن الاستعلامات المختلفة قد تنتج أحجام كتل مختلفة. لذلك يمكن ضبطه على مستوى الاستعلام عبر Context. - كن دقيقًا في تحديد الأنواع عند إدراج البيانات. فمع أن العميل مصمم ليكون مرنًا، مثل السماح بتحليل السلاسل النصية إلى UUIDs أو عناوين IP، فإن ذلك يتطلب التحقق من صحة البيانات ويترتب عليه تكلفة وقت الإدراج.
- استخدم عمليات الإدراج الموجّهة بالأعمدة حيثما أمكن. ومرة أخرى، ينبغي أن تكون محددة الأنواع بوضوح لتجنب حاجة العميل إلى تحويل قيمك.
- اتبع توصيات ClickHouse المتعلقة بالأداء لتحقيق أفضل أداء عند الإدراج.
الخطوات التالية
- الإعداد — إعدادات الاتصال وTLS والمصادقة وتسجيل الأحداث والضغط
- واجهة برمجة تطبيقات ClickHouse — واجهة برمجة تطبيقات Go الأصلية للاستعلامات والإدراج
- واجهة برمجة تطبيقات Database/SQL — واجهة
database/sqlالقياسية - أنواع البيانات — تعيينات أنواع Go ودعم الأنواع المعقدة