Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

استخدام قاعدة بيانات clickhouse-local

clickhouse-local هي واجهة CLI تتضمن إصدارًا مضمّنًا من ClickHouse. وتمنح المستخدمين إمكانات ClickHouse من دون الحاجة إلى تثبيت خادم. في هذا الدليل، سنتعرّف على كيفية استخدام قاعدة بيانات clickhouse-local من خلال chDB.

التهيئة

لننشئ أولًا بيئة افتراضية:

python -m venv .venv
source .venv/bin/activate

والآن سنثبّت chDB. تأكد من أنك تستخدم الإصدار 2.0.2 أو أحدث:

pip install "chdb>=2.0.2"

والآن سنثبّت ipython:

pip install ipython

سنستخدم ipython لتنفيذ الأوامر في بقية هذا الدليل، ويمكنك تشغيله بتنفيذ:

ipython

تثبيت clickhouse-local

تنزيل clickhouse-local وتثبيته هو نفسه تنزيل ClickHouse وتثبيته. يمكن القيام بذلك بتشغيل الأمر التالي:

curl https://clickhouse.com/ | sh

لتشغيل clickhouse-local بحيث تُحفَظ البيانات بشكل دائم في مجلد، نحتاج إلى تمرير --path:

./clickhouse -m --path demo.chdb

إدخال البيانات إلى clickhouse-local

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

CREATE DATABASE foo;

لننشئ جدولًا وندرج فيه بعض الأرقام العشوائية:

CREATE TABLE foo.randomNumbers
ORDER BY number AS
SELECT rand() AS number
FROM numbers(10_000_000);

لنكتب استعلامًا لنرى البيانات التي لدينا:

SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers
┌─quants────────────────────────────────┐
│ [69,2147776478,3221525118,4252096960] │
└───────────────────────────────────────┘

بمجرد الانتهاء من ذلك، تأكّد من تنفيذ exit; من واجهة CLI، إذ لا يمكن سوى لعملية واحدة الاحتفاظ بقفل على هذا المجلد. إذا لم نفعل ذلك، فسنحصل على الخطأ التالي عند محاولة الاتصال بقاعدة البيانات من خلال chDB:

ChdbError: Code: 76. DB::Exception: Cannot lock file demo.chdb/status. Another server instance in same directory is already running. (CANNOT_OPEN_FILE)

الاتصال بقاعدة بيانات clickhouse-local

عُد إلى واجهة ipython واستورِد الوحدة session من chDB:

from chdb import session as chs

هيّئ جلسة تشير إلى demo.chdb:

sess = chs.Session("demo.chdb")

يمكننا بعد ذلك تشغيل الاستعلام نفسه الذي يُرجع قيم الكوانتايل للأرقام:

sess.query("""
SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers
""", "Vertical")

Row 1:
──────
quants: [0,9976599,2147776478,4209286886]

يمكننا أيضًا إدخال بيانات إلى قاعدة البيانات هذه باستخدام chDB:

sess.query("""
INSERT INTO foo.randomNumbers
SELECT rand() AS number FROM numbers(10_000_000)
""")

Row 1:
──────
quants: [0,9976599,2147776478,4209286886]

يمكننا بعد ذلك إعادة تنفيذ استعلام quantiles من خلال chDB أو clickhouse-local.

Navigation