קליקכאָוסע פֿאַר אַוואַנסירטע ניצערס אין פֿראגן און ענטפֿערס

אין אפריל, Avito ענדזשאַנירז אלנגעזאמלט פֿאַר אָנליין מיטינגז מיט די הויפּט קליקכאָוסע דעוועלאָפּער אַלעקסיי מילאָווידאָוו און קירילל שוואַקאָוו, אַ Golang דעוועלאָפּער פון Integros. מיר דיסקאַסט ווי מיר נוצן אַ דאַטאַבייס פאַרוואַלטונג סיסטעם און וואָס שוועריקייטן מיר טרעפן.

באַזירט אויף דער באַגעגעניש, מיר האָבן צונויפגעשטעלט אַן אַרטיקל מיט ענטפֿערס פון עקספּערץ צו אונדזער און די וילעם ס פֿראגן וועגן באַקאַפּס, דאַטן ריכאַרדינג, פונדרויסנדיק דיקשאַנעריז, די גאָלאַנג שאָפער און אַפּדייטינג קליקכאָוסע ווערסיעס. עס קען זיין נוציק פֿאַר דעוועלאָפּערס וואָס זענען שוין אַקטיוולי ארבעטן מיט די Yandex DBMS און זענען אינטערעסירט אין זיין פאָרשטעלן און צוקונפֿט. דורך פעליקייַט, די ענטפֿערס זענען דורך אַלעקסיי מילאָווידאָוו, סייַדן אַנדערש געשריבן.

זיין אָפּגעהיט, עס איז אַ פּלאַץ פון טעקסט אונטער די שנייַדן. מיר האָפן אַז דער אינהאַלט מיט פֿראגן וועט העלפֿן איר נאַוויגירן.

קליקכאָוסע פֿאַר אַוואַנסירטע ניצערס אין פֿראגן און ענטפֿערס

צופרידן

אויב איר טאָן נישט וועלן צו לייענען דעם טעקסט, איר קענט זען די רעקאָרדינג פון די גאַדערינגז אויף אונדזער יאָוטובע קאַנאַל. צייט קאָדעס זענען אין דער ערשטער באַמערקונג אונטער די ווידעא.

קליקכאָוסע איז קעסיידער דערהייַנטיקט, אָבער אונדזער דאַטן זענען נישט. וואָס צו טאָן וועגן אים?

קליקכאָוסע איז קעסיידער דערהייַנטיקט, און אונדזער דאַטן, וואָס איז געווען אָפּטימיזעד לעצט פּראַסעסט, איז נישט דערהייַנטיקט און איז אין אַ באַקאַפּ קאָפּיע.

זאל ס זאָגן מיר האָבן עטלעכע פּראָבלעם און די דאַטן זענען פאַרפאַלן. מיר באַשלאָסן צו ומקערן, און עס פארקערט אויס אַז די אַלט פּאַרטישאַנז, וואָס זענען סטאָרד אויף די באַקאַפּ סערווערס, זענען זייער אַנדערש פון די איצט געוויינט ווערסיע פון ​​ClickHouse. וואָס צו טאָן אין אַזאַ אַ סיטואַציע, און איז עס מעגלעך?

א סיטואַציע אין וואָס איר ריסטאָרד דאַטן פֿון אַ באַקאַפּ אין אַן אַלט פֿאָרמאַט, אָבער עס קען נישט פאַרבינדן צו די נייַע ווערסיע, איז אוממעגלעך. מיר מאַכן זיכער אַז די דאַטן פֿאָרמאַט אין ClickHouse שטענדיק בלייבן קאַפּויער קאַמפּאַטאַבאַל. דאָס איז פיל מער וויכטיק ווי צוריק קאַמפּאַטאַבילאַטי אין פאַנגקשאַנאַליטי אויב די נאַטור פון עטלעכע ראַרעלי געוויינט פונקציע איז פארענדערט. די נייַע ווערסיע פון ​​ClickHouse זאָל שטענדיק זיין ביכולת צו לייענען די דאַטן וואָס זענען סטאָרד אויף דיסק. דאס איז די געזעץ.

וואָס זענען די בעסטער פּראַקטיסיז פֿאַר באַקינג אַרויף דאַטן פֿון ClickHouse?

ווי צו מאַכן באַקאַפּס, גענומען אין חשבון אַז מיר האָבן אַפּטאַמייז די לעצט אַפּעריישאַנז, אַ ריזיק דאַטאַבייס פון טעראַביטעס און דאַטן וואָס זענען דערהייַנטיקט, זאָגן, פֿאַר די לעצטע דריי טעג, און דעמאָלט קיין פּראָוסידזשערז פּאַסירן?

מיר קענען מאַכן אונדזער אייגענע לייזונג און שרייַבן אויף די באַש: קלייַבן די באַקאַפּ קאפיעס אין אַזאַ און אַזאַ אַ וועג. אפֿשר עס איז ניט דאַרפֿן צו קראַטש עפּעס, און די וועלאָסיפּעד איז ינווענטאַד לאַנג צוריק?

זאל ס אָנהייבן מיט די בעסטער פּראַקטיסיז. מייַן חברים שטענדיק רעקאָמענדירן, אין ענטפער צו פֿראגן וועגן באַקאַפּס, צו דערמאָנען זיי וועגן די Yandex.Cloud דינסט, ווו דעם פּראָבלעם איז שוין סאַלווד. אַזוי נוצן עס אויב מעגלעך.

עס איז קיין גאַנץ לייזונג פֿאַר באַקאַפּס, אַ הונדערט פּראָצענט געבויט אין קליקכאָוסע. עס זענען עטלעכע בלאַנקס וואָס קענען זיין געוויינט. צו באַקומען אַ גאַנץ לייזונג, איר וועט האָבן צו טינקער אַ ביסל מאַניואַלי אָדער מאַכן ראַפּערז אין די פאָרעם פון סקריפּס.

איך וועל אָנהייבן מיט די סימפּלאַסט סאַלושאַנז און ענדיקן מיט די מערסט סאַפיסטאַקייטיד, דיפּענדינג אויף די באַנד פון דאַטן און די גרייס פון דעם קנויל. די גרעסערע די קנויל, די מער קאָמפּליצירט די לייזונג ווערט.

אויב דער טיש מיט דאַטן אַקיאַפּייז בלויז אַ ביסל גיגאבייט, באַקאַפּ קענען זיין געטאן ווי דאָס:

  1. היט טיש דעפֿיניציע ד"ה מעטאַדאַטאַ - ווייַזן שאַפֿן טיש.
  2. מאַכן אַ דאַמפּ ניצן די קליקכאָוסע קליענט - קלייַבן * פון טיש צו טעקע. דורך פעליקייַט איר וועט באַקומען אַ טעקע אין טאַבסעפּאַראַטעד פֿאָרמאַט. אויב איר ווילן צו זיין מער עפעקטיוו, איר קענען טאָן דאָס אין געבוירן פֿאָרמאַט.

אויב די סומע פון ​​דאַטן איז גרעסער, די באַקאַפּ וועט נעמען מער צייט און אַ פּלאַץ פון פּלאַץ. דאָס איז גערופן אַ לאַדזשיקאַל באַקאַפּ; עס איז נישט טייד צו די קליקכאָוסע דאַטן פֿאָרמאַט. אויב דאָס איז, ווי אַ לעצטע ריזאָרט איר קענען נעמען אַ באַקאַפּ און צופֿעליקער עס צו MySQL פֿאַר אָפּזוך.

פֿאַר מער אַוואַנסירטע קאַסעס, ClickHouse האט אַ געבויט-אין פיייקייט צו שאַפֿן אַ מאָמענטבילד פון פּאַרטישאַנז אין די היגע טעקע סיסטעם. דעם שטריך איז בנימצא ווי אַ בקשה טוישן טיש פרירן צעטיילונג. אָדער פשוט טוישן טיש פרירן - דאָס איז אַ מאָמענטבילד פון די גאנצע טיש.

דער מאָמענטבילד וועט זיין באשאפן קאַנסיסטאַנטלי פֿאַר איין טיש אויף איין שאַרד, דאָס איז, עס איז אוממעגלעך צו שאַפֿן אַ קאָנסיסטענט מאָמענטבילד פון די גאנצע קנויל אין דעם וועג. אבער פֿאַר רובֿ טאַסקס עס איז ניט אַזאַ נויט, און עס איז גענוג צו ויספירן אַ בקשה אויף יעדער שאַרד און באַקומען אַ קאָנסיסטענט מאָמענטבילד. עס איז באשאפן אין די פאָרעם פון כאַרדלינקס און דעריבער טוט נישט נעמען נאָך פּלאַץ. דערנאָך, איר נאָכמאַכן דעם מאָמענטבילד צו די באַקאַפּ סערווער אָדער צו די סטאָרידזש וואָס איר נוצן פֿאַר באַקאַפּס.

ריסטאָרינג אַזאַ אַ באַקאַפּ איז גאַנץ גרינג. ערשטער, מאַכן טישן ניצן יגזיסטינג טיש זוך. דערנאָך, נאָכמאַכן די געראטעוועט סנאַפּשאַץ פון די פּאַרטישאַנז צו Directory-דעטאַטשעד פֿאַר די טישן און לויפן די אָנפֿרעג צוטשעפּען צעטיילונג. דעם לייזונג איז גאַנץ פּאַסיק פֿאַר די מערסט ערנסט וואַליומז פון דאַטן.

מאל איר דאַרפֿן עפּעס אפילו קילער - אין קאַסעס ווו איר האָבן טענס אָדער אפילו הונדערטער פון טעראַביטעס אויף יעדער סערווער און הונדערטער פון סערווערס. עס איז אַ לייזונג דאָ וואָס איך פּיקט זיך פון מיין חברים פון Yandex.Metrica. איך וואָלט נישט רעקאָמענדירן עס צו אַלעמען - לייענען עס און באַשליסן פֿאַר זיך צי עס איז פּאַסיק אָדער נישט.

ערשטער איר דאַרפֿן צו שאַפֿן עטלעכע סערווערס מיט גרויס דיסק שעלוועס. דערנאָך, אויף די סערווערס, כאַפּן עטלעכע קליקקכאַוס סערווערס און קאַנפיגיער זיי אַזוי אַז זיי אַרבעטן ווי אן אנדער רעפּליקע פֿאַר די זעלבע שאַרדז. און דעמאָלט נוצן אַ טעקע סיסטעם אָדער עטלעכע געצייַג אויף די סערווערס וואָס אַלאַוז איר צו שאַפֿן סנאַפּשאַץ. דאָ זענען צוויי אָפּציעס. דער ערשטער אָפּציע איז LVM סנאַפּשאַץ, די רגע אָפּציע איז ZFS אויף לינוקס.

נאָך דעם, יעדער טאָג איר דאַרפֿן צו מאַכן אַ מאָמענטבילד, עס וועט ליגן און נעמען עטלעכע פּלאַץ. געוויינטלעך, אויב די דאַטן ענדערונגען, די פּלאַץ פון פּלאַץ וועט פאַרגרעסערן מיט צייט. דעם מאָמענטבילד קענען זיין גענומען אויס אין קיין צייַט און די דאַטן געזונט, אַזאַ אַ מאָדנע לייזונג. פּלוס, מיר אויך דאַרפֿן צו באַגרענעצן די רעפּלאַקאַז אין די קאַנפיגיעריישאַן אַזוי אַז זיי טאָן ניט פּרובירן צו ווערן פירער.

וועט עס זיין מעגלעך צו אָרגאַניזירן אַ קאַנטראָולד אָפּשטיי פון רעפּלאַקאַז אין די שאַפץ?

דעם יאָר איר זענט פּלאַנירונג צו מאַכן שאַפץ אין ClickHouse. וועט עס זיין מעגלעך צו אָרגאַניזירן אַ קאַנטראָולד אָפּשטיי פון רעפּלאַקאַז אין זיי? מיר וואָלט ווי צו נוצן עס צו באַשיצן זיך פון נעגאַטיוו סינעריאָוז מיט אַלטערס און אנדערע ענדערונגען.

איז עס מעגלעך צו מאַכן אַ צוריקצאָל פֿאַר אַלטערס? פֿאַר בייַשפּיל, אין אַ יגזיסטינג שטיל, נעמען און זאָגן אַז ביז דעם מאָמענט איר צולייגן די ענדערונגען, און פון דעם מאָמענט איר האַלטן אַפּלייינג די ענדערונגען?

אויב אַ באַפֿעל געקומען צו אונדזער קנויל און צעבראכן עס, מיר האָבן אַ קאַנדישאַנאַל רעפּליקע מיט אַ שעה אָפּשטיי, ווו מיר קענען זאָגן אַז לאָזן אונדז נוצן עס אין דעם מאָמענט, אָבער מיר וועלן נישט צולייגן ענדערונגען אין די לעצטע צען מינוט?

ערשטער, וועגן די קאַנטראָולד אָפּשטיי פון רעפּלאַקאַז. עס איז געווען אַזאַ אַ בקשה פון יוזערז, און מיר באשאפן אַן אַרויסגעבן אויף Github מיט די בקשה: "אויב עמעצער דאַרף דאָס, ווי עס, שטעלן אַ האַרץ." קיינער האָט נישט איבערגעגעבן, און דער אַרויסגעבן איז געווען פארמאכט. אָבער, איר קענען שוין באַקומען דעם געלעגנהייט דורך באַשטעטיקן ClickHouse. אמת, בלויז סטאַרטינג פון ווערסיע 20.3.

קליקכאָוסע קעסיידער פּערפאָרמז דאַטן מערדזשינג אין דער הינטערגרונט. ווען אַ צונויפגיסן איז געענדיקט, אַ זיכער גאַנג פון דאַטן איז ריפּלייסט מיט אַ גרעסערע שטיק. אין דער זעלביקער צייט, טיילן פון דאַטן וואָס זענען דאָרט פריער פאָרזעצן צו בלייַבן אויף די דיסק פֿאַר עטלעכע מאָל.

ערשטער, זיי פאָרזעצן צו זיין סטאָרד אַזוי לאַנג ווי עס זענען סעלעקטעד קוויריז וואָס נוצן זיי, אין סדר צו צושטעלן ניט-בלאַקינג אָפּעראַציע. אויסקלייַבן קוויריז זענען לייכט לייענען פֿון אַלט שטיקער.

צווייטנס, עס איז אויך אַ צייט שוועל - אַלט שטיק פון דאַטן ליגן אויף די דיסק פֿאַר אַכט מינוט. די אַכט מינוט קענען זיין קאַסטאַמייזד און אפילו פארוואנדלען אין איין טאָג. דאָס וועט קאָסטן דיסק פּלאַץ: דיפּענדינג אויף די דאַטן לויפן, עס טורנס אויס אַז אין די לעצטע טאָג די דאַטן וועט נישט בלויז טאָפּל, עס קען זיין פינף מאל מער. אָבער אויב עס איז אַ ערנסט פּראָבלעם, איר קענען האַלטן די קליקקהאָוסע סערווער און סאָרט אַלץ אויס.

איצט די קשיא ערייזאַז ווי צו דעם פּראַטעקץ קעגן אַלטערס. עס איז ווערט צו נעמען אַ טיפער קוק דאָ, ווייַל אין עלטערע ווערסיעס פון ClickHouse, דער אַלטער געארבעט אַזוי אַז עס פשוט טשיינדזשד ברעקלעך גלייַך. עס איז אַ שטיק פון דאַטן מיט עטלעכע טעקעס, און מיר טאָן, למשל, טוישן קאַפּ זייַל. דעמאָלט דעם זייַל איז פיזיקלי אַוועקגענומען פון אַלע טשאַנגקס.

אָבער סטאַרטינג מיט ווערסיע 20.3, די אַלטער מעקאַניזאַם איז גאָר פארענדערט, און איצט דאַטן זענען שטענדיק ימיוטאַבאַל. זיי טאָן ניט טוישן אין אַלע - אַלטערס איצט אַרבעט אין פיל די זעלבע וועג ווי מערדזשיז. אַנשטאָט צו פאַרבייַטן אַ שטיק אויף דעם אָרט, מיר מאַכן אַ נייַע. אין די נייַע שטיק, טעקעס וואָס האָבן נישט פארענדערט ווערן כאַרדלינקס, און אויב מיר ויסמעקן אַ זייַל, עס וועט פשוט זיין פעלנדיק אין די נייַע שטיק. די אַלט שטיק וועט זיין אויסגעמעקט דורך פעליקייַט נאָך אַכט מינוט, און דאָ איר קענען טוויק די סעטטינגס דערמאנט אויבן.

דער זעלביקער אַפּלייז צו אַלטערס אַזאַ ווי מיוטיישאַנז. ווען איר טאָן טוישן ויסמעקן אָדער טוישן דערהייַנטיקן, עס טוט נישט טוישן די שטיק, אָבער קריייץ אַ נייַע. און דעמאָלט דיליץ די אַלט איינער.

וואָס אויב די טיש סטרוקטור האט געביטן?

ווי צו ומקערן אַ באַקאַפּ וואָס איז געווען געמאכט מיט די אַלט סכעמע? און די רגע קשיא איז וועגן דעם פאַל מיט סנאַפּשאַץ און טעקע סיסטעם מכשירים. איז Btrfs גוט דאָ אַנשטאָט פון ZFS אויף Linux LVM?

אויב איר טאָן צוטשעפּען צעטיילונג פּאַרטישאַנז מיט אַ אַנדערש סטרוקטור, קליקכאָוסע וועט זאָגן איר אַז דאָס איז ניט מעגלעך. דאס איז די לייזונג. דער ערשטער איז צו שאַפֿן אַ צייַטווייַליק טיש פון די MergeTree טיפּ מיט די אַלט סטרוקטור, צוטשעפּען דאַטן דאָרט מיט אַטאַטש, און מאַכן אַ יבערבייַט אָנפֿרעג. דערנאָך איר קענט נאָכמאַכן אָדער אַריבערפירן די דאַטן און צוטשעפּען ווידער, אָדער נוצן אַ בקשה טוישן טיש מאַך צעטיילונג.

איצט די צווייטע קשיא איז צי Btrfs קענען זיין געוויינט. צו אָנהייבן מיט, אויב איר האָבן LVM, LVM סנאַפּשאַץ זענען גענוג, און די טעקע סיסטעם קענען זיין עקסט 4, עס טוט נישט ענין. מיט Btrts, אַלץ דעפּענדס אויף דיין דערפאַרונג אין ניצן עס. דאָס איז אַ דערוואַקסן טעקע סיסטעם, אָבער עס זענען נאָך עטלעכע סאַספּישאַנז וועגן ווי אַלץ וועט אַרבעטן אין פיר אין אַ באַזונדער סצענאַר. איך וואָלט נישט רעקאָמענדירן ניצן דעם אויב איר האָבן Btrfs אין פּראָדוקציע.

וואָס זענען די בעסטער פּראַקטיסיז אין דאַטן ריכאַרדינג?

די אַרויסגעבן פון רעשאַרדינג איז קאָמפּלעקס און מאַלטיפאַסאַטיד. דאָ זענען עטלעכע מעגלעך ענטפֿערס. איר קענען גיין פֿון איין זייַט און זאָגן דעם - ClickHouse טוט נישט האָבן אַ געבויט-אין רעשאַרדינג שטריך. אבער איך האב מורא אז דער ענטפער וועט נישט פאסירן פאר קיינעם. דעריבער, איר קענען גיין פון די אנדערע זייַט און זאָגן אַז קליקכאָוסע האט פילע וועגן צו ריסטאַרט דאַטן.

אויב דער קנויל לויפט אויס פון פּלאַץ אָדער עס קען נישט שעפּן די מאַסע, איר לייגן נייַ סערווערס. אָבער די סערווערס זענען ליידיק דורך פעליקייַט, עס איז קיין דאַטן אויף זיי, עס איז קיין מאַסע. איר דאַרפֿן צו ריעריינדזש די דאַטן אַזוי אַז עס ווערט יוואַנלי פאַרשפּרייטן איבער די נייַ, גרעסערע קנויל.

דער ערשטער וועג דאָס קענען זיין געטאן איז צו נאָכמאַכן טייל פון די פּאַרטישאַנז צו נייַע סערווערס ניצן אַ בקשה טוישן טיש ברענגען צעטיילונג. פֿאַר בייַשפּיל, איר האָבן פּאַרטישאַנז פּער חודש, און איר נעמען די ערשטער חודש פון 2017 און נאָכמאַכן עס צו אַ נייַע סערווער, און נאָכמאַכן די דריט חודש צו עטלעכע אנדערע נייַע סערווערס. און איר טאָן דאָס ביז עס ווערט מער אָדער ווייניקער אפילו.

אַריבערפירן קענען זיין דורכגעקאָכט בלויז פֿאַר די פּאַרטישאַנז וואָס טאָן ניט טוישן בעשאַס רעקאָרדינג. פֿאַר פריש פּאַרטישאַנז, רעקאָרדינג וועט האָבן צו זיין פאַרקריפּלט, ווייַל זייער אַריבערפירן איז נישט אַטאָמישע. אַנדערש, איר וועט סוף אַרויף מיט דופּליקאַטן אָדער גאַפּס אין די דאַטן. אָבער, דעם אופֿן איז פּראַקטיש און אַרבעט גאַנץ יפעקטיוולי. פאַרטיק קאַמפּרעסט פּאַרטישאַנז זענען טראַנסמיטטעד איבער די נעץ, דאָס איז, די דאַטן זענען נישט קאַמפּרעסט אָדער שייַעך-ענקאָוד.

דער אופֿן האט איין שטערונג, און עס דעפּענדס אויף די שאַרדינג סכעמע, צי איר פּלעדזשד צו דעם שאַרדינג סכעמע, וואָס שאַרדינג שליסל איר האָבן. אין דיין ביישפּיל פֿאַר דעם פאַל מיט מעטריקס, די שאַרדינג שליסל איז די האַש פון דעם דרך. ווען איר אויסקלייַבן אַ דיסטריביוטיד טיש, עס גייט צו אַלע שאַרדז אין דעם קנויל אין אַמאָל און נעמט דאַטן פון דאָרט.

דעם מיטל אַז עס אַקשלי טוט נישט ענין צו איר וואָס דאַטן ענדיקט זיך אויף וואָס שאַרד. די הויפּט זאַך איז אַז דאַטן אויף איין וועג ענדס אויף איין שערד, אָבער וואָס איינער איז נישט וויכטיק. אין דעם פאַל, די טראַנספערינג פון פאַרטיק פּאַרטישאַנז איז גאנץ, ווייַל מיט סעלעקטעד קוויריז איר וועט אויך באַקומען גאַנץ דאַטן - צי איידער ריסטאַרטינג אָדער נאָך, די סכעמע טוט נישט טאַקע ענין.

אבער עס זענען קאַסעס וואָס זענען מער קאָמפּליצירט. אויב איר פאַרלאָזנ זיך אַ ספּעציעל שאַרדינג סכעמע אין די אַפּלאַקיישאַן לאָגיק מדרגה, אַז דער קליענט איז ליגן אויף אַזאַ און אַזאַ אַ שאַרד, און די בקשה קענען זיין געשיקט גלייַך דאָרט און נישט צו די דיסטריביוטיד טיש. אָדער איר נוצן אַ פערלי פריש ווערסיע פון ​​ClickHouse און האָבן ענייבאַלד די באַשטעטיקן אַפּטאַמייז האָפּקען אַניוזד שאַרדז. אין דעם פאַל, בעשאַס די אויסקלייַבן אָנפֿרעג, דער אויסדרוק אין די ווו אָפּטיילונג וועט זיין אַנאַלייזד און עס וועט זיין קאַלקיאַלייטיד וואָס שאַרדז דאַרפֿן צו זיין געוויינט לויט די שאַרדינג סכעמע. דאָס אַרבעט צוגעשטעלט אַז די דאַטן זענען פּאַרטישאַנד פּונקט לויט דעם שאַרדינג סכעמע. אויב איר ריעריינדזשד זיי מאַניואַלי, די קאָרעספּאָנדענץ קען טוישן.

אַזוי דאָס איז דער אופֿן נומער איין. און איך ווארט אויף דיין ענטפער, צי דער אופֿן איז פּאַסיק, אָדער לאָמיר פאָרזעצן.

וולאדימיר קאָלאָבאַעוו, פירן סיסטעם אַדמיניסטראַטאָר אין אַוויטאָ: אַלעקסיי, דער אופֿן וואָס איר האָט דערמאנט טוט נישט אַרבעטן זייער גוט ווען איר דאַרפֿן צו פאַרשפּרייטן די מאַסע, אַרייַנגערעכנט לייענען. מיר קענען נעמען אַ צעטיילונג וואָס איז כוידעשלעך און קענען נעמען די פריערדיקע חודש צו אן אנדער נאָדע, אָבער ווען אַ בקשה קומט פֿאַר די דאַטן, מיר וועלן בלויז לאָדן עס. אָבער מיר וואָלט ווי צו מאַסע די גאנצע קנויל, ווייַל אַנדערש, פֿאַר עטלעכע מאָל די גאנצע לייענען מאַסע וועט זיין פּראַסעסט דורך צוויי שאַרדז.

אַלעקסיי מילאָווידאָוו: דער ענטפער דאָ איז מאָדנע - יאָ, עס איז שלעכט, אָבער עס קען אַרבעטן. איך וועט דערקלערן פּונקט ווי. עס איז ווערט צו קוקן אין די מאַסע סצענאַר וואָס קומט הינטער דיין דאַטן. אויב דאָס איז מאָניטאָרינג דאַטן, מיר קענען כּמעט זיכער זאָגן אַז די וואַסט מערהייַט פון ריקוועס זענען פֿאַר פריש דאַטן.

איר האָט אינסטאַלירן נייַע סערווערס, מייגרייטיד אַלט פּאַרטישאַנז, אָבער אויך פארענדערט ווי פריש דאַטן זענען רעקאָרדעד. און פריש דאַטן וועט זיין פאַרשפּרייטן איבער די קנויל. אזוי, נאָך בלויז פינף מינוט, ריקוועס פֿאַר די לעצטע פינף מינוט וועט יוואַנלי מאַסע די קנויל; נאָך אַ טאָג, ריקוועס פֿאַר 24 שעה וועט יוואַנלי מאַסע די קנויל. און ריקוועס פֿאַר די פריערדיקע חודש, ליידער, וועט נאָר גיין צו טייל פון די קנויל סערווערס.

אָבער אָפט איר וועט נישט האָבן ריקוועס ספּאַסיפיקלי פֿאַר פעברואר 2019. רובֿ מסתּמא, אויב ריקוועס גיין אין 2019, זיי וועלן זיין פֿאַר די גאנצע 2019 - פֿאַר אַ גרויס צייט, און נישט פֿאַר עטלעכע קליין קייט. און אַזאַ ריקוועס וועט אויך קענען צו מאַסע די קנויל יוואַנלי. אבער אין אַלגעמיין, דיין באַמערקונג איז לעגאַמרע ריכטיק אַז דאָס איז אַן אַד-האָק לייזונג וואָס טוט נישט פאַרשפּרייטן די דאַטן גאָר יוואַנלי.

איך האָבן אַ ביסל מער פונקטן צו ענטפֿערן די קשיא. איינער פון זיי איז וועגן ווי צו טכילעס פּלאַן אַ שאַרדינג סכעמע אַזוי אַז שייַעך-שאַרדינג וואָלט פאַרשאַפן ווייניקער ווייטיק. דאָס איז ניט שטענדיק מעגלעך.

פֿאַר בייַשפּיל, איר האָבן מאָניטאָרינג דאַטן. מאָניטאָרינג דאַטן איז גראָוינג פֿאַר דריי סיבות. דער ערשטער איז די אַקיומיאַליישאַן פון היסטארישע דאַטן. די רגע איז פאַרקער וווּקס. און די דריט איז אַ פאַרגרעסערן אין די נומער פון זאכן וואָס זענען אונטערטעניק צו מאָניטאָרינג. עס זענען נייַע מיקראָ באַדינונגס און מעטריקס וואָס דאַרפֿן צו זיין געראטעוועט.

עס איז מעגלעך אַז פון די, די גרעסטע פאַרגרעסערן איז פארבונדן מיט די דריט סיבה - די פאַרגרעסערן אין די נוצן פון מאָניטאָרינג. און אין דעם פאַל, עס איז ווערט צו קוקן אין די נאַטור פון די מאַסע, וואָס זענען די הויפּט סעלעקציע קוויריז. יקערדיק סעלעקציע קוויריז וועט רובֿ מסתּמא זיין באזירט אויף עטלעכע סאַבסעט פון מעטריקס.

פֿאַר בייַשפּיל, קפּו באַניץ אויף עטלעכע סערווערס דורך עטלעכע סערוויס. עס טורנס אויס אַז עס איז אַ זיכער סובסעט פון שליסלען דורך וואָס איר באַקומען די דאַטן. און די בעטן זיך פֿאַר די דאַטן איז רובֿ מסתּמא גאַנץ פּשוט און איז געענדיקט אין טענס פון מיליסעקאַנדז. געניצט פֿאַר מאָניטאָרינג באַדינונגס און דאַשבאָרדז. איך האף איך פארשטיי דאס ריכטיג.

וולאדימיר קאָלאָבאַעוו: דער פאַקט איז אַז מיר זייער אָפט אַפּעלירן צו היסטארישע דאַטן, ווייַל מיר פאַרגלייַכן די קראַנט סיטואַציע מיט די היסטאָריש אין פאַקטיש צייט. און עס איז וויכטיק פֿאַר אונדז צו האָבן שנעל אַקסעס צו אַ גרויס סומע פון ​​דאַטן, און ClickHouse טוט אַ ויסגעצייכנט אַרבעט מיט דעם.

איר זענט לעגאַמרע רעכט, מיר דערפאַרונג רובֿ פון די לייענען ריקוועס אין די לעצטע טאָג, ווי קיין מאָניטאָרינג סיסטעם. אָבער אין דער זעלביקער צייט, די מאַסע אויף היסטארישע דאַטן איז אויך גאַנץ גרויס. עס איז בייסיקלי פון אַ אַלערטינג סיסטעם וואָס גייט אַרום יעדער דרייסיק סעקונדעס און זאגט צו קליקכאָוסע: "גיב מיר די דאַטן פֿאַר די לעצטע זעקס וואָכן. איצט בויען מיר אַ מין פון מאָווינג דורכשניטלעך פון זיי, און לאָזן אונדז פאַרגלייַכן די קראַנט ווערט מיט די היסטארישע.

איך וואָלט ווי צו זאָגן אַז פֿאַר אַזאַ זייער פריש ריקוועס מיר האָבן נאָך אַ קליין טיש אין וואָס מיר קראָם בלויז צוויי טעג פון דאַטן, און די הויפּט ריקוועס פליען אין עס. מיר שיקן בלויז גרויס היסטארישע פֿראגן צו די גרויס שערד טיש.

אַלעקסיי מילאָווידאָוו: צום באַדויערן, עס טורנס אויס צו זיין שוואַך אָנווענדלעך פֿאַר דיין סצענאַר, אָבער איך וועל זאָגן איר אַ באַשרייַבונג פון צוויי שלעכט און קאָמפּלעקס שאַרדינג סקימז וואָס טאָן ניט דאַרפֿן צו זיין געוויינט, אָבער וואָס זענען געניצט אין די דינסט פון מיין פרענדז.

עס איז אַ הויפּט קנויל מיט Yandex.Metrica events. געשעענישן זענען בלאַט קוקן, קליקס און קאַנווערזשאַנז. רובֿ ריקוועס גיין צו אַ ספּעציפיש וועבזייטל. איר עפֿענען די Yandex.Metrica סערוויס, איר האָט אַ וועבזייטל - avito.ru, גיין צו די באַריכט און אַ בקשה פֿאַר דיין וועבזייטל איז געמאכט.

אָבער עס זענען אנדערע ריקוועס - אַנאַליטיקאַל און גלאבאלע - וואָס זענען געמאכט דורך ינערלעך אַנאַליס. נאָר אין פאַל, איך טאָן אַז ינערלעך אַנאַליס מאַכן ריקוועס בלויז פֿאַר יאַנדעקס באַדינונגס. אָבער, אפילו יאַנדעקס באַדינונגס פאַרנעמען אַ באַטייטיק טיילן פון אַלע דאַטן. דאָס זענען ריקוועס ניט פֿאַר ספּעציפיש קאָונטערס, אָבער פֿאַר ברייט פֿילטרירונג.

ווי צו אָרגאַניזירן דאַטן אין אַזאַ אַ וועג אַז אַלץ אַרבעט יפישאַנטלי פֿאַר איין טאָמבאַנק, און גלאבאלע קוויריז אויך? אן אנדער שוועריקייט איז אַז די נומער פון ריקוועס אין ClickHouse פֿאַר די מעטריק קנויל איז עטלעכע טויזנט פּער סעקונדע. אין דער זעלביקער צייט, איין קליקקכאַוס סערווער קען נישט שעפּן ניט-ניט-ניטוויאַל ריקוועס, למשל, עטלעכע טויזנט פּער סעקונדע.

דער קנויל גרייס איז זעקס הונדערט-עפּעס סערווערס. אויב איר פשוט ציען אַ דיסטריביוטיד טיש איבער דעם קנויל און שיקן עטלעכע טויזנט ריקוועס דאָרט, עס וועט ווערן אפילו ערגער ווי שיקן זיי צו איין סערווער. אויף די אנדערע האַנט, די אָפּציע אַז די דאַטן זענען פאַרשפּרייטן יוואַנלי, און מיר גיין און בעטן פון אַלע סערווערס, איז מיד דיסמיסט.

עס איז אַן אָפּציע וואָס איז דיאַמעטריקלי פאַרקערט. ימאַדזשאַן אויב מיר שאַרבן די דאַטן אַריבער זייטלעך, און אַ בקשה פֿאַר איין פּלאַץ גייט צו איין שאַרד. יעצט וועט דער קנויל קענען באהאנדלען צען טויזנט פארלאנגען פער סעקונדע, אבער אויף איין שארף וועט יעדע פארלאנג ארבעטן צו לאנגזאם. עס וועט ניט מער וואָג אין טערמינען פון טרופּוט. ספּעציעל אויב דאָס איז די פּלאַץ avito.ru. איך וועל נישט אַנטדעקן דעם סוד אויב איך זאָגן אַז Avito איז איינער פון די מערסט באזוכט זייטלעך אין RuNet. און פּראַסעסינג עס אויף איין שערד וואָלט זיין מעשוגאַס.

דעריבער, די שאַרדינג סכעמע איז דיזיינד אין אַ מער כיטרע וועג. דער גאנצער קנויל איז איינגעטיילט אין א צאל אשכולות, וועלכע מיר רופן שיכטן. יעדער קנויל כּולל פון אַ טוץ צו עטלעכע טוץ שאַרדז. ס'זענען פאראן ניין און דרייסיג אזעלכע אשכולות אינגאנצן.

ווי טוט דאָס אַלע וואָג? די נומער פון קלאַסטערז טוט נישט טוישן - ווי עס איז געווען 39 מיט עטלעכע יאָר צוריק, עס בלייבט אַזוי. אָבער אין יעדער פון זיי, מיר ביסלעכווייַז פאַרגרעסערן די נומער פון שאַרדז ווען מיר אָנקלייַבן דאַטן. און די שאַרדינג סכעמע אין אַלגעמיין איז ווי דאָס: די קלאַסטערז זענען צעטיילט אין וועבסיטעס, און צו פֿאַרשטיין וואָס וועבזייטל איז אויף וואָס קנויל, אַ באַזונדער מעטאַבאַסע אין MySQL איז געניצט. איין פּלאַץ - אויף איין קנויל. און ין עס, שאַרדינג אַקערז לויט גאַסט IDs.

ווען רעקאָרדינג, מיר טיילן זיי דורך די רעשט פון די אָפּטייל פון די גאַסט שייַן. אבער ווען אַדינג אַ נייַ שאַרד, די שאַרדינג סכעמע ענדערונגען; מיר פאָרזעצן צו שפּאַלטן, אָבער מיט אַ רעשט פון די אָפּטייל דורך אן אנדער נומער. דעם מיטל אַז איין גאַסט איז שוין ליגן אויף עטלעכע סערווערס, און איר קענען נישט פאַרלאָזנ אויף דעם. דאָס איז געטאן בלויז צו ענשור אַז די דאַטן זענען בעסער קאַמפּרעסט. און ווען מיר מאַכן ריקוועס, מיר גיין צו די דיסטריביוטיד טיש, וואָס קוקט אויף דעם קנויל און אַקסעס דאַזאַנז פון סערווערס. דאָס איז אַזאַ אַ נאַריש סכעמע.

אבער מיין געשיכטע וועט זיין דערענדיקט אויב איך טאָן ניט זאָגן אַז מיר פארלאזן דעם סכעמע. אין די נייַע סכעמע, מיר טשיינדזשד אַלץ און קאַפּיד אַלע די דאַטן מיט קליקכאָוסע-קאָפּיער.

אין די נייַע סכעמע, אַלע זייטלעך זענען צעטיילט אין צוויי קאַטעגאָריעס - גרויס און קליין. איך טאָן ניט וויסן ווי די שוועל איז אויסדערוויילט, אָבער דער רעזולטאַט איז געווען אַז גרויס זייטלעך זענען רעקאָרדעד אויף איין קנויל, ווו עס זענען 120 שאַרדז מיט דריי רעפּלאַקאַז יעדער - דאָס איז, 360 סערווערס. און די שאַרדינג סכעמע איז אַזאַ אַז יעדער בקשה גייט צו אַלע שאַרדז אין אַמאָל. אויב איר איצט עפענען קיין באַריכט בלאַט פֿאַר avito.ru אין Yandex.Metrica, די בעטן וועט גיין צו 120 סערווערס. עס זענען ווייניק גרויס זייטלעך אין RuNet. און די בקשות זענען נישט טויזנט פאר סעקונדע, נאר אפילו ווייניגער ווי הונדערט. אַלע דעם איז שטיל טשוד אַרויף דורך די דיסטריביוטיד טיש, וואָס יעדער פון זיי פּראַסעסאַז מיט 120 סערווערס.

און די רגע קנויל איז פֿאַר קליין זייטלעך. דאָ איז אַ שאַרדינג סכעמע באזירט אויף די פּלאַץ ID, און יעדער בקשה גייט צו פּונקט איין שאַרד.

קליקכאָוסע האט אַ קליקכאָוסע-קאָפּיער נוצן. קענען איר זאָגן אונדז וועגן איר?

איך וועט זאָגן גלייך אַז די לייזונג איז מער קאַמבערסאַם און עפּעס ווייניקער פּראָדוקטיוו. די מייַלע איז אַז עס סמירז די דאַטן גאָר לויט די מוסטער איר ספּעציפיצירן. אבער די שטערונג פון די נוצן איז אַז עס טוט נישט ריסטאַרט בייַ אַלע. עס קאַפּיז דאַטן פון איין קנויל סטשעמאַ צו אנדערן קנויל סטשעמאַ.

דעם מיטל אַז איר מוזן האָבן צוויי קלאַסטערז צו אַרבעטן. זיי קענען זיין ליגן אויף די זעלבע סערווערס, אָבער, פונדעסטוועגן, די דאַטן וועט נישט זיין אריבערגעפארן ינקראַמענטאַלי, אָבער וועט זיין קאַפּיד.

פֿאַר בייַשפּיל, עס זענען געווען פיר סערווערס, איצט עס זענען אַכט. איר שאַפֿן אַ נייַ דיסטריביוטיד טיש אויף אַלע סערווערס, נייַ היגע טישן און קאַטער קליקכאָוסע-קאָפּיער, ינדאַקייטינג אין עס די אַרבעט סכעמע אַז עס זאָל לייענען פֿון דאָרט, אָננעמען די נייַ שאַרדינג סכעמע און אַריבערפירן די דאַטן דאָרט. און אויף אַלטע סערווערס וועט איר דאַרפֿן איין און אַ האַלב מאָל מער פּלאַץ ווי עס איז איצט, ווייַל די אַלט דאַטן מוזן בלייַבן אויף זיי, און האַלב פון די זעלבע אַלט דאַטן וועט אָנקומען אויף שפּיץ פון זיי. אויב איר געדאַנק אין שטייַגן אַז די דאַטן דאַרפֿן צו זיין ריסטאַרדעד און עס איז פּלאַץ, דער אופֿן איז פּאַסיק.

ווי אַזוי אַרבעט קליקכאָוסע-קאָפּיער ין? עס ברייקס אַלע די אַרבעט אין אַ גאַנג פון טאַסקס פֿאַר פּראַסעסינג איין צעטיילונג פון איין טיש אויף איין שאַרד. אַלע די טאַסקס קענען זיין עקסאַקיוטאַד אין פּאַראַלעל, און קליקכאָוסע-קאָפּיער קענען זיין לויפן אויף פאַרשידענע מאשינען אין קייפל ינסטאַנסיז, אָבער וואָס עס טוט פֿאַר איין צעטיילונג איז גאָרנישט מער ווי אַ אַרייַנלייגן אויסקלייַבן. די דאַטן זענען לייענען, דעקאָמפּרעססעד, ריפּאַרטישאַנז, דעמאָלט קאַמפּרעסט ווידער, געשריבן ערגעץ, און שייַעך-סאָרטיד. דאָס איז אַ שווערער באַשלוס.

איר האט אַ פּילאָט זאַך גערופן רעשאַרדינג. וואָס מיט איר?

צוריק אין 2017, איר האָט אַ פּילאָט זאַך גערופֿן רעשאַרדינג. עס איז אפילו אַן אָפּציע אין ClickHouse. לויט ווי איך פארשטיי איז עס נישט געווען. קענען איר זאָגן מיר וואָס דאָס געטראפן? עס מיינט צו זיין זייער באַטייַטיק.

דער גאנצער פּראָבלעם איז אַז אויב עס איז נייטיק צו ריסטאַרט דאַטן אין פּלאַץ, זייער קאָמפּלעקס סינגקראַנאַזיישאַן איז פארלאנגט צו טאָן דאָס אַטאָמישע. ווען מיר האָבן אנגעהויבן צו קוקן ווי די סינגקראַנאַזיישאַן אַרבעט, עס איז געווארן קלאָר אַז עס זענען פונדאַמענטאַל פּראָבלעמס. און די פונדאַמענטאַל פּראָבלעמס זענען נישט בלויז טעאָרעטיש, אָבער תיכף אנגעהויבן צו ווייַזן זיך אין פיר אין די פאָרעם פון עפּעס וואָס קענען זיין דערקלערט זייער פּשוט - גאָרנישט אַרבעט.

איז עס מעגלעך צו צונויפגיסן אַלע דאַטן צוזאַמען איידער איר מאַך עס צו פּאַמעלעך דיסקס?

קשיא וועגן TTL מיט די מאַך צו פּאַמעלעך דיסק אָפּציע אין דעם קאָנטעקסט פון מערדזשיז. איז עס אַ וועג, אנדערע ווי דורך Cron, צו צונויפגיסן אַלע די פּאַרץ אין איין איידער איר מאַך זיי צו פּאַמעלעך דיסקס?

דער ענטפער צו די קשיא איז אַז עס איז מעגלעך צו יז אויטאָמאַטיש קליי אַלע די ברעקלעך אין איין איידער טראַנספערינג זיי - ניט. איך מיין אז דאס איז נישט נויטיק. איר טאָן ניט האָבן צו צונויפגיסן אַלע די פּאַרץ אין איין, אָבער נאָר ציילן אויף די פאַקט אַז זיי וועט זיין טראַנספערד צו פּאַמעלעך דיסקס אויטאָמאַטיש.

מיר האָבן צוויי קרייטיריאַ פֿאַר אַריבערפירן כּללים. דער ערשטער איז ווי עס איז אָנגעפילט. אויב די קראַנט סטאָרידזש ריי האט ווייניקער ווי אַ זיכער פּראָצענט פון פריי פּלאַץ, מיר אויסקלייַבן איין שטיק און מאַך עס צו סלאָוער סטאָרידזש. אָדער גאַנץ, נישט סלאָוער, אָבער דער ווייַטער - ווי איר קאַנפיגיער.

די רגע קריטעריאָן איז גרייס. עס איז וועגן מאָווינג גרויס ברעקלעך. איר קענען סטרויערן די שוועל לויט די פריי פּלאַץ אויף די שנעל דיסק, און די דאַטן וועט זיין טראַנספערד אויטאָמאַטיש.

ווי צו מייגרייט צו נייַע ווערסיעס פון ClickHouse אויב עס איז קיין וועג צו קאָנטראָלירן קאַמפּאַטאַבילאַטי אין שטייַגן?

דעם טעמע איז דיסקאַסט קעסיידער אין ClickHouse טעלעגראַם שמועסן גענומען אין חשבון פאַרשידענע ווערסיעס, און נאָך. ווי זיכער איז עס צו אַפּגרייד פֿון ווערסיע 19.11 צו 19.16 און, למשל, פֿון 19.16 צו 20.3. וואָס איז דער בעסטער וועג צו מייגרייט צו נייַע ווערסיעס אָן שטייַגן צו קאָנטראָלירן קאַמפּאַטאַבילאַטי אין די זאַמדקאַסטן?

עס זענען עטלעכע "גאָלדען" כּללים דאָ. ערשטער - לייענען די טשאַנגעלאָג. עס איז גרויס, אָבער עס זענען באַזונדער פּאַראַגראַפס וועגן קאַפּויער ינקאַמפּאַטאַבאַל ענדערונגען. דו זאלסט נישט מייַכל די פונקטן ווי אַ רויט פאָן. דאָס זענען יוזשאַוואַלי מינערווערטיק ינקאַמפּאַטאַבילאַטיז וואָס אַרייַנציען עטלעכע ברעג פאַנגקשאַנאַליטי וואָס איר מיסטאָמע טאָן ניט נוצן.

צווייטנס, אויב עס איז קיין וועג צו קאָנטראָלירן קאַמפּאַטאַבילאַטי אין די זאַמדקאַסטן, און איר ווילן צו דערהייַנטיקן גלייך אין פּראָדוקציע, די רעקאָמענדאַציע איז אַז איר טאָן ניט דאַרפֿן צו טאָן דאָס. ערשטער שאַפֿן אַ זאַמדקאַסטן און פּרובירן. אויב עס איז קיין פּראָבע סוויווע, איר רובֿ מסתּמא טאָן ניט האָבן אַ זייער גרויס פירמע, וואָס מיטל איר קענען נאָכמאַכן עטלעכע פון ​​די דאַטן צו דיין לאַפּטאַפּ און מאַכן זיכער אַז אַלץ אַרבעט ריכטיק אויף עס. איר קענען אפילו כאַפּן עטלעכע רעפּלאַקאַז לאָוקאַלי אויף דיין מאַשין. אָדער איר קענען קלייַבן אַ נייַע ווערסיע ערגעץ נירביי און צופֿעליקער עטלעכע פון ​​די דאַטן דאָרט - דאָס איז, שאַפֿן אַן ימפּראַווייזד פּרובירן סוויווע.

אן אנדער הערשן איז נישט צו דערהייַנטיקן פֿאַר אַ וואָך נאָך די מעלדונג פון די ווערסיע רעכט צו קאַטשינג באַגז אין פּראָדוקציע און סאַבסאַקוואַנט שנעל פיקסיז. לאָמיר רעכענען די נומערינג פון ClickHouse ווערסיעס אַזוי נישט צו צעמישט.

עס איז ווערסיע 20.3.4. די נומער 20 ינדיקייץ די יאָר פון פּראָדוצירן - 2020. פון די פונט פון מיינונג פון וואָס איז ין, דאָס טוט נישט ענין, אַזוי מיר וועלן נישט באַצאָלן ופמערקזאַמקייַט צו עס. ווייַטער - 20.3. מיר פאַרגרעסערן די רגע נומער - אין דעם פאַל 3 - יעדער מאָל מיר מעלדונג אַ מעלדונג מיט עטלעכע נייַע פאַנגקשאַנאַליטי. אויב מיר ווילן צו לייגן עטלעכע שטריך צו ClickHouse, מיר מוזן פאַרגרעסערן דעם נומער. דאָס איז, אין ווערסיע 20.4 קליקכאָוסע וועט אַרבעטן אפילו בעסער. די דריט ציפֿער איז 20.3.4. דאָ 4 איז די נומער פון לאַטע ריליסיז אין וואָס מיר האָבן נישט צוגעלייגט נייַ פֿעיִקייטן, אָבער פאַרפעסטיקט עטלעכע באַגז. און 4 מיטל מיר האבן עס פיר מאל.

דו זאלסט נישט טראַכטן אַז דאָס איז עפּעס שרעקלעך. וסואַללי דער באַניצער קענען ינסטאַלירן די לעצט ווערסיע און עס וועט אַרבעטן אָן קיין פראבלעמען מיט ופּטימע פּער יאָר. אָבער ימאַדזשאַן אַז אין עטלעכע פאַנגקשאַנז פֿאַר פּראַסעסינג ביטמאַפּס, וואָס איז געווען צוגעגעבן דורך אונדזער כינעזיש קאַמראַדז, דער סערווער קראַשיז ווען גייט פארביי פאַלש אַרגומענטן. מיר האָבן אַ פֿאַראַנטוואָרטלעכקייט צו פאַרריכטן דעם. מיר וועלן מעלדונג אַ נייַע לאַטע ווערסיע און ClickHouse וועט ווערן מער סטאַביל.

אויב איר האָבן קליקכאָוסע פליסנדיק אין פּראָדוקציע, און אַ נייַע ווערסיע פון ​​קליקכאָוסע קומט מיט נאָך פֿעיִקייטן - פֿאַר בייַשפּיל, 20.4.1 איז דער ערשטער, טאָן ניט קאַמיש צו שטעלן עס אין פּראָדוקציע אויף דער ערשטער טאָג. פארוואס איז עס אפילו דארף? אויב איר טאָן ניט שוין נוצן ClickHouse, איר קענען ינסטאַלירן עס, און רובֿ מסתּמא אַלץ וועט זיין פייַן. אָבער אויב ClickHouse איז שוין סטאַביל ארבעטן, האַלטן אַן אויג אויף פּאַטשאַז און דערהייַנטיקונגען צו זען וואָס פּראָבלעמס מיר פיקסיר.

קיריל שוואַקאָוו: איך וואָלט ווי צו לייגן אַ ביסל וועגן פּרובירן ינווייראַנמאַנץ. אַלעמען איז זייער דערשראָקן פון פּרובירן ינווייראַנמאַנץ און פֿאַר עטלעכע סיבה זיי גלויבן אַז אויב איר האָבן אַ זייער גרויס קליקכאָוסע קנויל, די פּראָבע סוויווע זאָל זיין ניט ווייניקער אָדער בייַ מינדסטער צען מאל קלענערער. ס'איז בכלל נישט אזוי.

איך קענען זאָגן איר פון מיין אייגן בייַשפּיל. איך האָבן אַ פּרויעקט, און עס איז קליקכאָוסע. אונדזער פּראָבע סוויווע איז נאָר פֿאַר אים - דאָס איז אַ קליין ווירטואַל מאַשין אין העצנער פֿאַר צוואַנציק עוראָס, ווו לעגאַמרע אַלץ איז דיפּלויד. צו טאָן דאָס, מיר האָבן פול אָטאַמיישאַן אין Ansible, און דעריבער, אין פּרינציפּ, עס איז קיין חילוק ווו צו גיין - צו ייַזנוואַרג סערווערס אָדער נאָר צעוויקלען אין ווירטואַל מאשינען.

וואס קען מען טון? עס וואָלט זיין פייַן צו צושטעלן אַ ביישפּיל אין די ClickHouse דאַקיומענטיישאַן וועגן ווי צו צעוויקלען אַ קליין קנויל אין דיין אייגענע היים - אין דאָקער, אין LXC, טאָמער שאַפֿן אַן Ansible פּלייַבאָאָק, ווייַל פאַרשידענע מענטשן האָבן פאַרשידענע דיפּלוימאַנץ. דעם וועט פאַרפּאָשעטערן אַ פּלאַץ. ווען איר נעמען און צעוויקלען אַ קנויל אין פינף מינוט, עס איז פיל גרינגער צו פּרובירן צו געפֿינען עפּעס. דאָס איז פיל מער באַקוועם, ווייַל ראָולינג אין אַ פּראָדוקציע ווערסיע וואָס איר האָט נישט טעסטעד איז אַ וועג צו ינ ערגעצ ניט. מאל עס אַרבעט און מאל עס טוט נישט. און דעריבער, כאָופּינג פֿאַר הצלחה איז שלעכט.

מאַקסים קאָטיאַקאָוו, עלטער באַקענד ינזשעניר אַוויטאָ: איך וועט לייגן אַ ביסל וועגן פּרובירן ינווייראַנמאַנץ פון אַ סעריע פון ​​​​פּראָבלעמען פייסט דורך גרויס קאָמפּאַניעס. מיר האָבן אַ פול-פלעדזשד קליקכאָוסע אַקסעפּטאַנס קנויל; אין טערמינען פון דאַטן סקימז און סעטטינגס, עס איז אַ פּינטלעך קאָפּיע פון ​​וואָס איז אין פּראָדוקציע. דעם קנויל איז דיפּלויד אין פערלי פּלאַננעד קאַנטיינערז מיט אַ מינימום פון רעסורסן. מיר שרייַבן אַ זיכער פּראָצענט פון די פּראָדוקציע דאַטן דאָרט, צומ גליק עס איז מעגלעך צו רעפּלאַקייט די טייַך אין קאַפקאַ. אַלץ דאָרט איז סינגקראַנייזד און סקיילד - סיי אין טערמינען פון קאַפּאַציטעט און לויפן, און, אין טעאָריע, אַלע אנדערע זאכן זענען גלייַך, עס זאָל ביכייוו ווי פּראָדוקציע אין טערמינען פון מעטריקס. אַלץ פּאַטענטשאַלי יקספּלאָוסיוו איז ערשטער ראָולד אַנטו דעם שטיין און לינקס דאָרט פֿאַר עטלעכע טעג ביז גרייט. אָבער געוויינטלעך, דעם לייזונג איז טייַער, שווער און האט ניט-נול שטיצן קאָס.

אַלעקסיי מילאָווידאָוו: איך וועט זאָגן איר ווי די פּראָבע סוויווע פון ​​אונדזער פרענדז פון Yandex.Metrica איז ווי. איין קנויל האט 600-מאָדנע סערווערס, אנדערן האט 360, און עס איז אַ דריט און עטלעכע קלאַסטערז. די פּראָבע סוויווע פֿאַר איינער פון זיי איז פשוט צוויי שאַרדז מיט צוויי רעפּלאַקאַז אין יעדער. פארוואס צוויי שטערנס? אַזוי אַז איר זענט נישט אַליין. און עס זאָל זיין רעפּלאַקאַז אויך. נאָר אַ זיכער מינימום סומע וואָס איר קענען פאַרגינענ זיך.

דער פּראָבע סוויווע אַלאַוז איר צו קאָנטראָלירן אויב דיין פֿראגן אַרבעט און אויב עפּעס הויפּט איז צעבראכן. אבער אָפט פּראָבלעמס אויפשטיין פון אַ גאָר אַנדערש נאַטור, ווען אַלץ אַרבעט, אָבער עס זענען עטלעכע קליין ענדערונגען אין די מאַסע.

לאמיר דיר געבן א ביישפיל. מיר באַשלאָסן צו ינסטאַלירן אַ נייַע ווערסיע פון ​​ClickHouse. עס איז געווען אַרייַנגעשיקט אויף אַ פּראָבע סוויווע, אָטאַמייטיד טעסץ האָבן שוין געענדיקט אין Yandex.Metrica זיך, וואָס פאַרגלייַכן דאַטן אויף די אַלט ווערסיע און די נייַע, פליסנדיק די גאנצע רערנ - ליניע. און פון קורס, גרין טעסץ פון אונדזער סי. אַנדערש מיר וואָלט נישט אפילו האָבן פארגעלייגט דעם ווערסיע.

אלעס איז גוט. מיר אָנהייבן צו מאַך אין פּראָדוקציע. איך באַקומען אַ אָנזאָג אַז די מאַסע אויף די גראַפס איז געוואקסן עטלעכע מאָל. מיר ראָולינג צוריק די ווערסיע. איך קוק אויף די גראַפיק און זען: די מאַסע אַקשלי געוואקסן עטלעכע מאָל בעשאַס די ראָולאַוט, און דיקריסט צוריק ווען זיי ראָולד אויס. דערנאָך מיר סטאַרטעד ראָולינג צוריק די ווערסיע. און די מאַסע איז געוואקסן אין די זעלבע וועג, און איז צוריק אין די זעלבע וועג. אַזוי די מסקנא איז דאָס: די מאַסע איז געוואקסן רעכט צו דער אויסלייג, גאָרנישט חידוש.

דערנאָך עס איז געווען שווער צו איבערצייגן חברים צו ינסטאַלירן די נייַע ווערסיע. איך זאג: "עס איז אָוקיי, ראָולד אויס. האַלטן דיין פינגער קראָסט, אַלץ וועט אַרבעטן. איצט די מאַסע אויף די גראַפס איז געוואקסן, אָבער אַלץ איז גוט. הענג זיך דארט אריין." אין אַלגעמיין, מיר האבן דאָס, און דאָס איז עס - די ווערסיע איז רעלעאַסעד פֿאַר פּראָדוקציע. אבער כּמעט מיט יעדער אויסלייג, ענלעך פּראָבלעמס אויפשטיין.

טייטן אָנפֿרעג איז געמיינט צו טייטן קוויריז, אָבער עס טוט נישט. פארוואס?

א באַניצער, אַ מין פון אַנאַליסט, געקומען צו מיר און באשאפן אַ בקשה וואָס שטעלן מיין קליקכאָוסע קנויל. עטלעכע נאָדע אָדער גאַנץ קנויל, דיפּענדינג אויף וואָס רעפּליקע אָדער שאַרד די בעטן געגאנגען צו. איך זען אַז אַלע די קפּו רעסורסן אויף דעם סערווער זענען אין אַ פּאָליצע, אַלץ איז רויט. אין דער זעלביקער צייט, ClickHouse זיך ריספּאַנדז צו ריקוועס. און איך שרייב: "ביטע ווייַזן מיר, פּראָצעס רשימה, וואָס בעטן דזשענערייטאַד דעם מעשוגאַס."

איך געפֿינען דעם בקשה און שרייַבן טייטן צו עס. און איך זעה אז גארנישט פאסירט. מייַן סערווער איז אין אַ פּאָליצע, ClickHouse גיט מיר עטלעכע קאַמאַנדז, ווייזט אַז דער סערווער איז לעבעדיק, און אַלץ איז גרויס. אָבער איך האָבן דערנידעריקונג אין אַלע באַניצער ריקוועס, דערנידעריקונג הייבט מיט רעקאָרדס אין ClickHouse, און מיין טייטן אָנפֿרעג טוט נישט אַרבעטן. פארוואס? איך געדאַנק טייטן אָנפֿרעג איז געמיינט צו טייטן קוויריז, אָבער עס טוט נישט.

איצט וועט זיין אַ גאַנץ מאָדנע ענטפער. די פונט איז אַז טייטן אָנפֿרעג טוט נישט טייטן קוויריז.

טייטן אָנפֿרעג טשעקס אַ קליין קעסטל גערופֿן "איך ווילן דעם אָנפֿרעג צו ווערן געהרגעט." און די בקשה זיך קוקט אויף דעם פאָן ווען פּראַסעסינג יעדער בלאָק. אויב עס איז באַשטימט, די בעטן סטאַפּס ארבעטן. קומט אויס אז קיינער הרגעט נישט די בקשה, ער מוז אליין אלעס טשעקן און אפשטעלן. און דאָס זאָל אַרבעטן אין אַלע קאַסעס ווען די בקשה איז אין די שטאַט פון פּראַסעסינג בלאַקס פון דאַטן. עס וועט פּראָצעס די ווייַטער בלאָק פון דאַטן, קאָנטראָלירן די פאָן און האַלטן.

דאָס קען נישט אַרבעטן אין קאַסעס ווען די בקשה איז אפגעשטעלט אויף עטלעכע אָפּעראַציע. אמת, רובֿ מסתּמא דאָס איז נישט דיין פאַל, ווייַל, לויט איר, עס ניצט אַ פּלאַץ פון סערווער רעסורסן. עס איז מעגלעך אַז דאָס טוט נישט אַרבעטן אין די פאַל פון פונדרויסנדיק סאָרטינג און אין עטלעכע אנדערע פרטים. אָבער אין אַלגעמיין, דאָס זאָל נישט פּאַסירן, דאָס איז אַ זשוק. און דער בלויז זאַך איך קענען רעקאָמענדירן איז צו דערהייַנטיקן ClickHouse.

ווי צו רעכענען ענטפער צייט אונטער לייענען מאַסע?

עס איז אַ טיש וואָס סטאָרז נומער אַגגרעגאַץ - פאַרשידן קאָונטערס. די נומער פון שורות איז בעערעך דערט מיליאָן. איז עס מעגלעך צו רעכענען אויף אַ פּרידיקטאַבאַל ענטפער צייט אויב איר גיסן 1 ק רפּס פֿאַר 1 ק זאכן?

לויט דעם קאָנטעקסט, מיר רעדן וועגן די לייענען מאַסע, ווייַל עס זענען קיין פראבלעמען מיט שרייבן - אפילו אַ טויזנט, אַפֿילו אַ הונדערט טויזנט, און מאל עטלעכע מיליאָן ראָוז קענען זיין ינסערטאַד.

לייענען ריקוועס זענען זייער אַנדערש. אין אויסקלייַבן 1, ClickHouse קענען דורכפירן וועגן טענס פון טויזנטער פון ריקוועס פּער סעקונדע, אַזוי אפילו ריקוועס פֿאַר איין שליסל וועט שוין דאַרפן עטלעכע רעסורסן. און אַזאַ פונט קוויריז וועט זיין מער שווער ווי אין עטלעכע שליסל-ווערט דאַטאַבייסיז, ווייַל פֿאַר יעדער לייענען עס איז נייטיק צו לייענען אַ בלאָק פון דאַטן דורך אינדעקס. אונדזער אינדעקס אַדרעסט נישט יעדער רעקאָרד, אָבער יעדער קייט. אַז איז, איר וועט האָבן צו לייענען די גאנצע קייט - דאָס איז 8192 שורות דורך פעליקייַט. און איר וועט האָבן צו דעקאָמפּרעסס די קאַמפּרעסט דאַטן בלאָק פון 64 קב צו 1 מעגאבייטן. טיפּיקאַללי, אַזאַ טאַרגעטעד קוויריז נעמען אַ ביסל מיליסעקאַנדז צו פאַרענדיקן. אבער דאָס איז די סימפּלאַסט אָפּציע.

זאל ס פּרובירן עטלעכע פּשוט אַריטמעטיק. אויב איר מערן אַ ביסל מיליסעקאַנדז מיט אַ טויזנט, איר באַקומען אַ ביסל סעקונדעס. עס איז ווי אויב עס איז אוממעגלעך צו האַלטן אַרויף מיט אַ טויזנט ריקוועס פּער סעקונדע, אָבער אין פאַקט עס איז מעגלעך, ווייַל מיר האָבן עטלעכע פּראַסעסער קאָרעס. אַזוי, אין פּרינציפּ, קליקכאָוסע קענען מאל האַלטן 1000 רפּס, אָבער פֿאַר קורץ ריקוועס, ספּאַסיפיקלי טאַרגעטעד.

אויב איר דאַרפֿן צו וואָג אַ קליקכאָוסע קנויל דורך די נומער פון פּשוט ריקוועס, איך רעקאָמענדירן די סימפּלאַסט זאַך - פאַרגרעסערן די נומער פון רעפּלאַקאַז און שיקן ריקוועס צו אַ טראַפ רעפּליקע. אויב איין רעפּליקע האלט פינף הונדערט ריקוועס פּער סעקונדע, וואָס איז גאָר רעאַליסטיש, דעמאָלט דריי רעפּליקע וועט האַנדלען מיט אַ און אַ האַלב טויזנט.

מאל, פון קורס, איר קענען קאַנפיגיער ClickHouse פֿאַר די מאַקסימום נומער פון פונט רידינגז. וואָס איז דארף פֿאַר דעם? דער ערשטער איז צו רעדוצירן די גראַנולאַריטי פון די אינדעקס. אין דעם פאַל, עס זאָל נישט זיין רידוסט צו איין, אָבער אויף דער באזע אַז די נומער פון איינסן אין די אינדעקס וועט זיין עטלעכע מיליאָן אָדער טענס פון מיליאַנז פּער סערווער. אויב די טיש האט דערט מיליאָן ראָוז, די גראַנולאַריטי קענען זיין באַשטימט צו 64.

איר קענען רעדוצירן די גרייס פון דעם קאַמפּרעסט בלאָק. עס זענען סעטטינגס פֿאַר דעם מין קאָמפּרעס בלאָק גרייס, מאַקסימום קאָמפּרעס בלאָק גרייס. זיי קענען זיין רידוסט, ריפילד מיט דאַטן, און טאַרגעטעד קוויריז וועט זיין פאַסטער. אָבער נאָך, ClickHouse איז נישט אַ שליסל-ווערט דאַטאַבייס. א גרויס נומער פון קליין ריקוועס איז אַ מאַסע אַנטיפּאַטטערן.

קיריל שוואַקאָוו: איך וועל געבן עצה אין פאַל עס זענען פּראָסט אַקאַונץ דאָרט. דאָס איז אַ פערלי נאָרמאַל סיטואַציע ווען ClickHouse סטאָרז עטלעכע טאָמבאַנק. איך האב א באנוצער, ער איז פון אזא און אזא לאנד, און עפעס א דריטן פעלד, און איך דארף עפעס פארגרעסערן אינקראמענטש. נעמען MySQL, מאַכן אַ יינציק שליסל - אין MySQL עס איז אַ דופּליקאַט שליסל, און אין PostgreSQL עס איז אַ קאָנפליקט - און לייגן אַ פּלוס צייכן. דאָס וועט אַרבעטן פיל בעסער.

ווען איר טאָן ניט האָבן פיל דאַטן, עס איז נישט פיל פונט צו נוצן ClickHouse. עס זענען רעגולער דאַטאַבייסיז און זיי טאָן דאָס געזונט.

וואָס קענען איך טוויק אין ClickHouse אַזוי אַז מער דאַטן זענען אין די קאַש?

זאל ס ימאַדזשאַן אַ סיטואַציע - די סערווערס האָבן 256 גיגאבייט פון באַראַן, אין די טעגלעך רוטין קליקכאָוסע נעמט וועגן 60-80 גיגאבייט, אין שפּיץ - אַרויף צו 130. וואָס קענען זיין ענייבאַלד און טוויקט אַזוי אַז מער דאַטן זענען אין די קאַש און, אַקאָרדינגלי, עס זענען ווייניקערע טריפּס צו די דיסק?

טיפּיקאַללי, די בלאַט קאַש פון די אָפּערייטינג סיסטעם טוט אַ גוט אַרבעט. אויב איר נאָר עפֿענען די שפּיץ, קוק דאָרט קאַשט אָדער פריי - עס אויך זאגט ווי פיל איז קאַשט - דעמאָלט איר וועט באַמערקן אַז אַלע די פריי זכּרון איז געניצט פֿאַר די קאַש. און ווען לייענען די דאַטן, עס וועט זיין לייענען נישט פֿון די דיסק, אָבער פֿון די באַראַן. אין דער זעלביקער צייט, איך קענען זאָגן אַז די קאַש איז יפעקטיוולי געניצט ווייַל עס איז די קאַמפּרעסט דאַטן וואָס איז קאַשט.

אָבער, אויב איר ווילן צו פאַרגיכערן עטלעכע פּשוט פֿראגן אפילו מער, עס איז מעגלעך צו געבן אַ קאַש אין די דעקאָמפּרעססעד דאַטן ין ClickHouse. עס איז גערופן ונקאָמפּרעססעד קאַש. אין די קאַנפיגיעריישאַן טעקע config.xml, שטעלן די ונקאָמפּרעססעד קאַש גרייס צו די ווערט איר דאַרפֿן - איך רעקאָמענדירן ניט מער ווי האַלב פון די פריי באַראַן, ווייַל די מנוחה וועט גיין אונטער די בלאַט קאַש.

אין אַדישאַן, עס זענען צוויי סעטטינגס פֿאַר בעטן מדרגה. ערשטער באַשטעטיקן - נוצן ונקאָמפּרעססעד קאַש - כולל זייַן נוצן. עס איז רעקאַמענדיד צו געבן עס פֿאַר אַלע ריקוועס, אַחוץ שווער אָנעס, וואָס קענען לייענען אַלע די דאַטן און ויסמעקן די קאַש. און די רגע באַשטעטיקן איז עפּעס ווי די מאַקסימום נומער פון שורות צו נוצן די קאַש. עס אויטאָמאַטיש לימאַץ גרויס קוויריז אַזוי אַז זיי בייפּאַס די קאַש.

ווי קען איך קאַנפיגיער סטאָרידזש_קאָנפיגוראַטיאָן פֿאַר סטאָרידזש אין באַראַן?

אין די נייַע ClickHouse דאַקיומענטיישאַן איך לייענען דעם אָפּטיילונג שייַכות מיט דאַטן סטאָרידזש. די באַשרייַבונג כּולל אַ ביישפּיל מיט שנעל SSD.

איך ווונדער ווי די זעלבע זאַך קענען זיין קאַנפיגיערד מיט באַנד הייס זכּרון. און נאך א שאלה. ווי אַזוי אַרבעט סעלעקט מיט דעם דאַטן אָרגאַניזאַציע, וועט עס לייענען די גאנצע גאַנג אָדער בלויז דער איינער וואָס איז אויף דיסק, און איז די דאַטן קאַמפּרעסט אין זכּרון? און ווי אַזוי אַרבעט דער ערשטער אָפּטיילונג מיט אַזאַ אַ דאַטן אָרגאַניזאַציע?

דעם באַשטעטיקן אַפעקץ די סטאָרידזש פון דאַטן טשאַנגקס, און זייער פֿאָרמאַט טוט נישט טוישן אין קיין וועג.
זאל ס נעמען אַ נעענטער קוק.

איר קענען קאַנפיגיער דאַטן סטאָרידזש אין באַראַן. אַלע וואָס איז קאַנפיגיערד פֿאַר די דיסק איז זייַן דרך. איר מאַכן אַ tmpfs צעטיילונג וואָס איז מאָונטעד צו עטלעכע דרך אין דער טעקע סיסטעם. איר ספּעציפיצירן דעם דרך ווי דער דרך פֿאַר סטאָרינג דאַטן פֿאַר די האָטטעסט צעטיילונג, שטיק פון דאַטן אָנהייבן צו אָנקומען און זיין געשריבן דאָרט, אַלץ איז גוט.

אָבער איך טאָן נישט רעקאָמענדירן צו טאָן דאָס ווייַל פון נידעריק רילייאַבילאַטי, כאָטש אויב איר האָבן לפּחות דריי רעפּלאַקאַז אין פאַרשידענע דאַטן סענטערס, דאָס איז מעגלעך. אויב עפּעס כאַפּאַנז, די דאַטן וועט זיין געזונט. זאל ס ימאַדזשאַן אַז די סערווער איז פּלוצלינג אויסגעדרייט אַוועק און פארקערט אויף. די צעטיילונג איז געווען מאָונטעד ווידער, אָבער דאָרט איז גאָרנישט. ווען דער קליקכאָוסע סערווער סטאַרץ, עס זעט אַז עס טוט נישט האָבן די ברעקלעך, כאָטש, לויט ZooKeeper מעטאַדאַטאַ, זיי זאָל זיין דאָרט. ער קוקט אין וואָס רעפּלאַקאַז האָבן זיי, ריקוועס זיי און דאַונלאָודז זיי. דעם וועג די דאַטן וועט זיין געזונט.

אין דעם זינען, סטאָרינג דאַטן אין באַראַן איז נישט פאַנדאַמענטאַלי אַנדערש פון סטאָרינג עס אויף דיסק, ווייַל ווען דאַטן זענען געשריבן צו דיסק, עס אויך ערשטער ענדס אין די בלאַט קאַש און איז פיזיקלי געשריבן שפּעטער. דעם דעפּענדס אויף די טעקע סיסטעם מאַונטינג אָפּציע. אָבער נאָר אין פאַל, איך וועט זאָגן אַז קליקכאָוסע טוט נישט פסינק ווען ינסערטינג.

אין דעם פאַל, די דאַטן אין די באַראַן זענען סטאָרד אין פּונקט די זעלבע פֿאָרמאַט ווי אויף די דיסק. די סעלעקט אָנפֿרעג אין די זעלבע וועג סאַלעקץ די ברעקלעך וואָס דאַרפֿן צו זיין לייענען, סאַלעקץ די נייטיק דאַטן ריינדזשאַז אין די ברעקלעך, און לייענט זיי. און פריער אַרבעט פּונקט די זעלבע, ראַגאַרדלאַס פון צי די דאַטן זענען געווען אין באַראַן אָדער אויף דיסק.

צו וואָס נומער פון יינציק וואַלועס איז נידעריק קאַרדינאַליטי עפעקטיוו?

נידעריק קאַרדינאַליטי איז קלעווערלי דיזיינד. עס קאַמפּיילז דאַטן דיקשאַנעריז, אָבער זיי זענען היגע. ערשטער, עס זענען פאַרשידענע דיקשאַנעריז פֿאַר יעדער שטיק, און צווייטנס, אפילו אין איין שטיק זיי קענען זיין אַנדערש פֿאַר יעדער קייט. ווען די נומער פון יינציק וואַלועס ריטשאַז אַ שוועל נומער - איין מיליאָן, איך טראַכטן - די ווערטערבוך איז פשוט שעלווד און אַ נייַע איז באשאפן.

דער ענטפער איז אין אַלגעמיין: פֿאַר יעדער היגע קייט - זאָגן, פֿאַר יעדער טאָג - ערגעץ אַרויף צו אַ מיליאָן יינציק וואַלועס איז עפעקטיוו נידעריק קאַרדינאַליטי. דערנאָכדעם עס וועט זיין פשוט אַ פאַלבאַק, אין וואָס פילע פאַרשידענע ווערטערבוך וועט זיין געוויינט, און ניט נאָר איינער. עס וועט אַרבעטן בעערעך די זעלבע ווי אַ רעגולער שטריקל זייַל, אפֿשר אַ ביסל ווייניקער עפעקטיוו, אָבער עס וועט זיין קיין ערנסט פאָרשטעלונג דערנידעריקונג.

וואָס זענען די בעסטער פּראַקטיסיז פֿאַר פול-טעקסט זוכן אין אַ טיש מיט פינף ביליאָן ראָוז?

עס זענען פאַרשידענע ענטפֿערס. דער ערשטער איז צו זאָגן אַז ClickHouse איז נישט אַ פול-טעקסט זוכן מאָטאָר. עס זענען ספּעציעל סיסטעמען פֿאַר דעם, למשל, עלאַסטיקסאַרטש и ספינקס. אָבער, איך ינקריסינגלי זען מענטשן זאָגן זיי זענען סוויטשינג פון Elasticsearch צו ClickHouse.

פארוואס טוט דאָס פּאַסירן? זיי דערקלערן דעם דורך די פאַקט אַז Elasticsearch סיסיז צו קאָפּע מיט די מאַסע אין עטלעכע וואַליומז, סטאַרטינג מיט די קאַנסטראַקשאַן פון ינדעקסיז. ינדעקסיז ווערן צו קאַמבערסאַם, און אויב איר נאָר אַריבערפירן די דאַטן צו ClickHouse, עס טורנס אויס אַז זיי זענען סטאָרד עטלעכע מאָל מער יפישאַנטלי אין טערמינען פון באַנד. אין דער זעלביקער צייַט, זוכן פֿראגן זענען אָפט נישט אַזוי אַז עס איז נייטיק צו געפֿינען עטלעכע פראַזע אין די גאנצע באַנד פון דאַטן, גענומען אין חשבון מאָרפאָלאָגי, אָבער גאָר אַנדערש אָנעס. פֿאַר בייַשפּיל, געפֿינען עטלעכע סאַבסיקוואַנס פון ביטעס אין די לאָגס אין די לעצטע ביסל שעה.

אין דעם פאַל, איר מאַכן אַן אינדעקס אין ClickHouse, דער ערשטער פעלד פון וואָס וועט זיין די דאַטע און צייט. און דער גרעסטער דאַטן אָפּשניט וועט זיין באזירט אויף די דאַטע קייט. אין די אויסגעקליבן דאַטע קייט, ווי אַ הערשן, עס איז שוין מעגלעך צו דורכפירן אַ פול-טעקסט זוכן, אפילו ניצן די ברוט קראַפט אופֿן ניצן ווי. דער ווי אָפּעראַטאָר אין ClickHouse איז די מערסט עפעקטיוו ווי אָפּעראַטאָר איר קענען געפֿינען. אויב איר געפֿינען עפּעס בעסער, זאָגן מיר.

אָבער נאָך, ווי אַ פול יבערקוקן. און פול יבערקוקן קענען זיין פּאַמעלעך ניט בלויז אויף די קפּו, אָבער אויך אויף די דיסק. אויב פּלוצלינג איר האָבן איין טעראַביטע פון ​​דאַטן פּער טאָג, און איר זוכן פֿאַר אַ וואָרט בעשאַס דעם טאָג, איר וועט האָבן צו יבערקוקן די טעראַביטע. און עס איז מיסטאָמע אויף רעגולער שווער דרייווז, און אין די סוף זיי וועלן זיין לאָודיד אין אַזאַ אַ וועג אַז איר וועט נישט קענען צו אַקסעס דעם סערווער דורך SSH.

אין דעם פאַל, איך בין גרייט צו פאָרשלאָגן נאָך אַ קליין טריק. עס איז יקספּערמענאַל - עס קען אַרבעטן, עס קען נישט. ClickHouse האט פול-טעקסט ינדעקסיז אין די פאָרעם פון טריגראַם בלום פילטערס. אונדזער קאָלעגעס אין Arenadata האָבן שוין געפרוווט די ינדעקסיז, און זיי אָפט אַרבעט פּונקט ווי בדעה.

אין סדר צו נוצן זיי ריכטיק, איר זאָל האָבן אַ גוטן פארשטאנד פון פּונקט ווי זיי אַרבעט: וואָס איז אַ טריגראַם בלום פילטער און ווי צו קלייַבן די גרייס. איך קען זאָגן אַז זיי וועלן העלפֿן פֿאַר פֿראגן אויף עטלעכע זעלטן פראַסעס, סובסטרינגס וואָס זענען ראַרעלי געפֿונען אין די דאַטן. אין דעם פאַל, סובריינדזשיז וועט זיין אויסגעקליבן דורך ינדעקסיז און ווייניקער דאַטן וועט זיין לייענען.

לעצטנס, ClickHouse האט צוגעלייגט אפילו מער אַוואַנסירטע פאַנגקשאַנז פֿאַר פול-טעקסט זוכן. דאָס איז, ערשטער, אַ זוכן פֿאַר אַ בינטל פון סובסטרינגס אין איין פאָרן, אַרייַנגערעכנט אָפּציעס וואָס זענען פאַל-שפּירעוודיק, פאַל-ינסענסיטיוו, מיט שטיצן פֿאַר UTF-8 אָדער בלויז פֿאַר ASCII. קלייַבן די מערסט עפעקטיוו איינער איר דאַרפֿן.

זוכן פֿאַר קייפל רעגולער אויסדרוקן אין איין פאָרן איז אויך ארויס. איר טאָן ניט דאַרפֿן צו שרייַבן X ווי איין סובסטרינג אָדער X ווי אן אנדער סובסטרינג. איר שרייבט גלייך, און אַלץ איז געטאן ווי יפישאַנטלי ווי מעגלעך.

דריט, עס איז איצט אַן דערנענטערנ זוכן פֿאַר רעגעקספּס און אַ דערנענטערנ זוכן פֿאַר סובסטרינגס. אויב עמעצער מיספּעלד אַ וואָרט, עס וועט זיין געזוכט פֿאַר די מאַקסימום גלייַכן.

וואָס איז דער בעסטער וועג צו אָרגאַניזירן אַקסעס צו ClickHouse פֿאַר אַ גרויס נומער פון יוזערז?

דערציילן אונדז ווי בעסטער צו אָרגאַניזירן אַקסעס פֿאַר אַ גרויס נומער פון קאָנסומערס און אַנאַליס. ווי צו פאָרעם אַ ריי, פּרייאָראַטייז מאַקסימום קאַנקעראַנט קוויריז און מיט וואָס מכשירים?

אויב דער קנויל איז גרויס גענוג, אַ גוט לייזונג וואָלט זיין צו כאַפּן צוויי מער סערווערס, וואָס וועט ווערן אַ פּאָזיציע פונט פֿאַר אַנאַליס. דאָס איז, טאָן ניט לאָזן אַנאַליס צוטריט צו ספּעציפיש שאַרדז אין דעם קנויל, אָבער נאָר שאַפֿן צוויי ליידיק סערווערס אָן דאַטן און קאַנפיגיער אַקסעס רעכט אויף זיי. אין דעם פאַל, באַניצער סעטטינגס פֿאַר פונאנדערגעטיילט ריקוועס זענען טראַנספערד צו ווייַט סערווערס. אַז איז, איר קאַנפיגיער אַלץ אויף די צוויי סערווערס, און די סעטטינגס האָבן אַ ווירקונג אויף די גאנצע קנויל.

אין פּרינציפּ, די סערווערס האָבן קיין דאַטן, אָבער די סומע פון ​​באַראַן אויף זיי איז זייער וויכטיק פֿאַר עקסאַקיוטינג ריקוועס. דער דיסק קענען אויך זיין געניצט פֿאַר צייַטווייַליק דאַטן אויב פונדרויסנדיק אַגגרעגאַטיאָן אָדער פונדרויסנדיק סאָרטינג איז ענייבאַלד.

עס איז וויכטיק צו קוקן אין די סעטטינגס וואָס זענען פארבונדן מיט אַלע מעגלעך לימאַץ. אויב איך איצט גיין צו די Yandex.Metrica קנויל ווי אַן אַנאַליסט און פרעגן אַ בקשה אויסקלייַבן ציילן פון היץ, דעמאל ט װע ט אי ם גלײ ך געגעב ן װער ן א אויסנאם , א ז אי ך קע ן ניש ט אויספיר ן ד י פארלאנג . די מאַקסימום נומער פון ראָוז וואָס איך איז ערלויבט צו יבערקוקן איז הונדערט ביליאָן, און אין גאַנץ עס זענען פופציק טריליאַן פון זיי אין איין טיש אויף די קנויל. דאָס איז דער ערשטער באַגרענעצונג.

זאל ס זאָגן איך אַראָפּנעמען די רודערן שיעור און לויפן די אָנפֿרעג ווידער. דערנאָך איך וועט זען די פאלגענדע ויסנעם - באַשטעטיקן ענייבאַלד קראַפט אינדעקס דורך דאַטע. איך קען נישט פאַרענדיקן די אָנפֿרעג אויב איך האָבן נישט ספּעסיפיעד אַ דאַטע קייט. איר טאָן ניט האָבן צו פאַרלאָזנ אויף אַנאַליס צו ספּעציפיצירן עס מאַניואַלי. א טיפּיש פאַל איז ווען אַ דאַטע קייט איז געשריבן ווו געשעעניש דאַטע צווישן וואָך. און דעמאָלט זיי פשוט ספּעציפיצירט אַ קלאַמער אין דעם אומרעכט אָרט, און אַנשטאָט פון און עס איז געווען אָדער - אָדער URL גלייַכן. אויב עס איז קיין שיעור, עס וועט קריכן די URL זייַל און נאָר וויסט אַ פּלאַץ פון רעסורסן.

אין דערצו, ClickHouse האט צוויי בילכערקייַט סעטטינגס. צום באַדויערן, זיי זענען זייער פּרימיטיוו. מען רופט זיך פשוט בילכערקייַט. אויב בילכערקייַט ≠ 0, און ריקוועס מיט עטלעכע בילכערקייַט זענען עקסאַקיוטאַד, אָבער אַ בקשה מיט אַ בילכערקייַט ווערט פון ווייניקער ווי, וואָס מיטל אַ העכער בילכערקייַט, איז עקסאַקיוטאַד, דעמאָלט אַ בקשה מיט אַ בילכערקייַט ווערט פון גרעסער, וואָס מיטל אַ נידעריקער בילכערקייַט , איז פשוט סוספּענדעד און וועט נישט אַרבעטן אין דעם צייט.

דאָס איז אַ זייער גראָב באַשטעטיקן און איז נישט פּאַסיק פֿאַר קאַסעס ווו די קנויל האט אַ קעסיידערדיק מאַסע. אָבער אויב איר האָבן קורץ, בערסטי ריקוועס וואָס זענען וויכטיק, און דער קנויל איז מערסטנס ליידיק, דעם סעטאַפּ איז פּאַסיק.

דער ווייַטער בילכערקייַט באַשטעטיקן איז גערופן אַס פאָדעם בילכערקייַט. עס פשוט שטעלט די שיין ווערט פֿאַר אַלע בעטן דורכפירונג פֿעדעם פֿאַר די לינוקס סקעדזשולער. עס אַרבעט אַזוי-אַזוי, אָבער עס נאָך אַרבעט. אויב איר שטעלן די מינימום פייַן ווערט - עס איז די גרעסטע אין ווערט, און דעריבער די לאָואַסט בילכערקייַט - און שטעלן -19 פֿאַר ריקוועס מיט הויך בילכערקייַט, די קפּו וועט פאַרנוצן נידעריק-בילכערקייַט ריקוועס וועגן פיר מאל ווייניקער ווי הויך-בילכערקייַט אָנעס.

איר אויך דאַרפֿן צו קאַנפיגיער די מאַקסימום דורכפירונג צייט פון בעטן - זאָגן, פינף מינוט. די מינימום גיכקייַט פון אָנפֿרעג דורכפירונג איז די קולאַסט זאַך. די באַשטעטיקן איז געווען אַרום פֿאַר אַ לאַנג צייַט, און עס איז פארלאנגט ניט בלויז צו באַשטעטיקן אַז ClickHouse טוט נישט פּאַמעלעך אַראָפּ, אָבער צו צווינגען עס.

ימאַדזשאַן, איר קאַנפיגיער: אויב עטלעכע אָנפֿרעג פּראַסעסאַז ווייניקער ווי אַ מיליאָן ראָוז פּער סעקונדע, איר קענען נישט טאָן דאָס. דאס פארשעמט אונדזער גוטן נאָמען, אונדזער גוטע דאַטאַבאַסע. לאמיר דאס נאר פארבאטן. עס זענען פאקטיש צוויי סעטטינגס. מען רופט מען מין דורכפירונג גיכקייַט - אין שורות פּער סעקונדע, און די רגע איז גערופן טיימאַוט איידער קאָנטראָלירונג מיני דורכפירונג גיכקייַט - פופצן סעקונדעס דורך פעליקייַט. אַז איז, פופצן סעקונדעס איז מעגלעך, און דעמאָלט, אויב עס איז פּאַמעלעך, נאָר וואַרפן אַ ויסנעם און אַבאָרט די בקשה.

איר אויך דאַרפֿן צו שטעלן אַרויף קוואָטעס. ClickHouse האט אַ געבויט-אין קוואָטע שטריך וואָס קאַונץ מיטל קאַנסאַמשאַן. אָבער, ליידער, ניט ייַזנוואַרג רעסורסן אַזאַ ווי קפּו, דיסקס, אָבער לאַדזשיקאַל אָנעס - די נומער פון פּראַסעסט ריקוועס, שורות און ביטעס לייענען. און איר קענען קאַנפיגיער, פֿאַר בייַשפּיל, אַ מאַקסימום פון דערט ריקוועס אין פינף מינוט און אַ טויזנט ריקוועס פּער שעה.

פארוואס איז עס וויכטיק? ווייַל עטלעכע אַנאַליטיקס קוויריז וועט זיין דורכגעקאָכט מאַניואַלי גלייַך פֿון די קליקכאָוסע קליענט. און אַלץ וועט זיין געזונט. אבער אויב איר האָבן אַוואַנסירטע אַנאַליס אין דיין פירמע, זיי וועלן שרייַבן אַ שריפט, און עס קען זיין אַ טעות אין די שריפט. און דעם טעות וועט פאַרשאַפן די בקשה צו זיין עקסאַקיוטאַד אין אַ ינפאַנאַט שלייף. דאָס איז וואָס מיר דאַרפֿן צו באַשיצן זיך פון.

איז עס מעגלעך צו געבן די רעזולטאַטן פון איין אָנפֿרעג צו צען קלייאַנץ?

מיר האָבן עטלעכע ניצערס וואָס ווי צו קומען מיט זייער גרויס ריקוועס אין דער זעלביקער צייט. די בקשה איז גרויס און, אין פּרינציפּ, געשווינד עקסאַקיוטאַד, אָבער רעכט צו דעם פאַקט אַז עס זענען פילע אַזאַ ריקוועס אין דער זעלביקער צייט, עס ווערט זייער ווייטיקדיק. איז עס מעגלעך צו ויספירן די זעלבע בקשה, וואָס איז אנגעקומען צען מאל אין אַ רודערן, אַמאָל, און געבן די רעזולטאַט צו צען קלייאַנץ?

די פּראָבלעם איז אַז מיר טאָן ניט האָבן די רעזולטאַטן פון די קאַש אָדער קאַש פון ינטערמידייט דאַטן. עס איז אַ בלאַט קאַש פון די אָפּערייטינג סיסטעם, וואָס וועט פאַרמייַדן איר צו לייענען דאַטן פון די דיסק ווידער, אָבער, ליידער, די דאַטן וועט נאָך זיין דיקאַמפּרעסט, דעסעריאַליזעד און ריפּראָסעסט.

איך וואָלט ווי צו ויסמיידן דעם, אָדער דורך קאַטשינג ינטערמידייט דאַטן, אָדער דורך ויסשטעלן ענלעך פֿראגן אין עטלעכע ריי און לייגן אַ רעזולטאטן קאַש. מיר דערווייַל האָבן איין ציען בעטן אין אַנטוויקלונג וואָס מוסיף אַ בעטן קאַש, אָבער בלויז פֿאַר סאַבקוועריז אין די אין און פאַרבינדן סעקשאַנז - דאָס איז, די לייזונג איז דערענדיקט.

אָבער, מיר אויך פּנים אַזאַ אַ סיטואַציע. א ספּעציעל קאַנאָניקאַל בייַשפּיל איז פּאַדזשאַנייטיד קוויריז. עס איז אַ באַריכט, עס האט עטלעכע בלעטער, און עס איז אַ בקשה פֿאַר לימיט 10. דעמאָלט דער זעלביקער זאַך, אָבער שיעור 10,10. דערנאָך אן אנדער ווייַטער בלאַט. און די פראגע איז, פארוואס ציילען מיר דאס אלץ יעדעס מאל? אבער איצט עס איז קיין לייזונג, און עס איז קיין וועג צו ויסמיידן עס.

עס איז אַן אָלטערנאַטיוו לייזונג וואָס איז געשטעלט ווי אַ סיידקאַר ווייַטער צו ClickHouse - קליקכאָוסע פּראָקסי.

קיריל שוואַקאָוו: ClickHouse Proxy האט אַ געבויט-אין קורס לימיטער און אַ געבויט-אין רעזולטאַטן קאַש. א פּלאַץ פון סעטטינגס זענען געמאכט דאָרט ווייַל אַ ענלעך פּראָבלעם איז געווען סאַלווד. פּראָקסי אַלאַוז איר צו באַגרענעצן ריקוועס דורך ריי זיי און קאַנפיגיער ווי לאַנג די בעטן קאַש לעבן. אויב די ריקוועס זענען טאַקע די זעלבע, פּראָקסי וועט שיקן זיי פילע מאָל, אָבער וועט גיין צו ClickHouse בלויז אַמאָל.

Nginx אויך האט אַ קאַש אין דער פריי ווערסיע, און דאָס וועט אויך אַרבעטן. Nginx אפילו האט סעטטינגס אַז אויב ריקוועס אָנקומען אין דער זעלביקער צייט, עס וועט פּאַמעלעך די אנדערע ביז איינער איז געענדיקט. אָבער אין ClickHouse Proxy די סעטאַפּ איז פיל בעסער. עס איז געמאכט ספּאַסיפיקלי פֿאַר ClickHouse, ספּאַסיפיקלי פֿאַר די ריקוועס, אַזוי עס איז מער פּאַסיק. נו, עס איז גרינג צו ינסטאַלירן.

וואָס וועגן ייסינגקראַנאַס אַפּעריישאַנז און מאַטיריאַלייזד קוקן?

עס איז אַ פּראָבלעם אַז אַפּעריישאַנז מיט די ריפּליי מאָטאָר זענען ייסינגקראַנאַס - ערשטער די דאַטן איז געשריבן, דעמאָלט עס קאַלאַפּסיז. אויב אַ מאַטיריאַלייזד טאַבלעט מיט עטלעכע אַגראַגייץ לעבן אונטער דעם צייכן, עס וועט זיין געשריבן דופּליקאַטן. און אויב עס איז קיין קאָמפּלעקס לאָגיק, די דאַטן וועט זיין דופּליקייטיד. וואָס קענען איר טאָן וועגן אים?

עס איז אַ קלאָר ווי דער טאָג לייזונג - צו ינסטרומענט אַ צינגל אויף אַ זיכער קלאַס פון מאַטוויעווס בעשאַס אַ ייסינגקראַנאַס ייַנבראָך אָפּעראַציע. זענען עס קיין זילבער בולאַץ אָדער פּלאַנז צו ינסטרומענט ענלעך פאַנגקשאַנאַליטי?

עס איז ווערט צו פֿאַרשטיין ווי דעדופּליקאַטיאָן אַרבעט. וואָס איך וועט זאָגן איר איצט איז נישט באַטייַטיק צו די קשיא, אָבער נאָר אין פאַל עס איז ווערט רימעמבערינג.

ווען ינסערטינג אין אַ רעפּליקייטיד טיש, עס איז דעדופּליקאַטיאָן פון די גאנצע ינסערטאַד בלאַקס. אויב איר ריינסערט די זעלבע בלאָק מיט די זעלבע נומער פון די זעלבע ראָוז אין דער זעלביקער סדר, די דאַטן זענען דעדופּליקייטיד. איר וועט באַקומען "Ok" אין ענטפער צו אַרייַנלייגן, אָבער אין פאַקט, איין פּאַקאַט פון דאַטן וועט זיין געשריבן, און עס וועט נישט זיין דופּליקייטיד.

דאָס איז נייטיק פֿאַר זיכערקייט. אויב איר באַקומען "Ok" בעשאַס ינסערשאַן, דיין דאַטן זענען ינסערטאַד. אויב איר באַקומען אַ טעות פֿון ClickHouse, עס מיטל אַז זיי זענען נישט ינסערטאַד און איר דאַרפֿן צו איבערחזרן די ינסערשאַן. אָבער אויב די קשר איז צעבראכן בעשאַס ינסערשאַן, איר טאָן ניט וויסן צי די דאַטן זענען ינסערטאַד אָדער נישט. דער בלויז אָפּציע איז צו איבערחזרן די ינסערשאַן ווידער. אויב די דאַטן זענען אַקשלי ינסערטאַד און איר ריינסערט עס, עס איז בלאָק דעדופּליקאַטיאָן. דאָס איז נייטיק צו ויסמיידן דופּליקאַטן.

און עס איז אויך וויכטיק ווי עס אַרבעט פֿאַר מאַטיריאַלייזד קוקן. אויב די דאַטן זענען דעדופּליקייטיד ווען ינסערטאַד אין די הויפּט טיש, עס וועט אויך נישט גיין אין די מאַטיריאַלייזד מיינונג.

איצט וועגן די קשיא. דיין סיטואַציע איז מער קאָמפּליצירט ווייַל איר רעקאָרדירן דופּליקאַטן פון יחיד שורות. אַז איז, עס איז נישט די גאנצע פּאַק וואָס איז דופּליקייטיד, אָבער ספּעציפיש שורות, און זיי ייַנבראָך אין דער הינטערגרונט. טאקע, די דאַטן וועט ייַנבראָך אין די הויפּט טיש, אָבער די אַנקאַלאַפּסט דאַטן וועט גיין צו די מאַטיריאַלייזד מיינונג, און בעשאַס מערדזשעס וועט גאָרנישט פּאַסירן מיט די מאַטיריאַלייזד קוקן. ווייַל אַ מאַטיריאַלייזד מיינונג איז גאָרנישט מער ווי אַ אַרייַנלייגן צינגל. בעשאַס אנדערע אַפּעריישאַנז, גאָרנישט נאָך כאַפּאַנז צו עס.

און איך קען נישט מאַכן איר צופרידן דאָ. איר נאָר דאַרפֿן צו קוקן פֿאַר אַ ספּעציפיש לייזונג פֿאַר דעם פאַל. פֿאַר בייַשפּיל, איז עס מעגלעך צו ריפּליי עס אין אַ מאַטיריאַלייזד מיינונג, און די דעדופּליקאַטיאָן אופֿן קען אַרבעטן די זעלבע וועג. אבער ליידער, ניט שטענדיק. אויב עס איז אַגגרעגייטינג, עס וועט נישט אַרבעטן.

קיריל שוואַקאָוו: מיר אויך האָבן קראַטש קאַנסטראַקשאַן צוריק אין דעם טאָג. עס איז געווען אַ פּראָבלעם אַז עס זענען גאַנצע ימפּרעססיאָנס, און עס זענען עטלעכע דאַטן וואָס מיר קענען ווייַזן אין פאַקטיש צייט - דאָס זענען נאָר ימפּרעססיאָנס. זיי זענען ראַרעלי דופּליקייטיד, אָבער אויב דאָס כאַפּאַנז, מיר וועלן ייַנבראָך זיי שפּעטער סייַ ווי סייַ. און עס זענען געווען זאכן וואָס קען נישט זיין דופּליקייטיד - קליקס און די גאנצע געשיכטע. אבער איך אויך געוואלט צו ווייַזן זיי כּמעט תיכף.

ווי זענען די מאַטיריאַלייזד מיינונגען געמאכט? עס זענען געווען קוקן ווו עס איז געווען געשריבן גלייַך - עס איז געווען געשריבן צו רוי דאַטן, און געשריבן צו קוקן. דאָרט, אין עטלעכע פונט די דאַטן זענען נישט זייער ריכטיק, עס איז דופּליקייטיד, און אַזוי אויף. און עס איז אַ צווייט טייל פון די טיש, ווו זיי קוקן פּונקט די זעלבע ווי מאַטיריאַלייזד קוקן, דאָס איז, זיי זענען לעגאַמרע יידעניקאַל אין סטרוקטור. אַמאָל אין אַ בשעת מיר ריקאַלקיאַלייט די דאַטן, ציילן די דאַטן אָן דופּליקאַטן, שרייַבן צו די טישן.

מיר האָבן דורכגעקאָכט די אַפּי - דאָס וועט נישט אַרבעטן מאַניואַלי אין ClickHouse. און דער API קוקט: ווען איך האב די דאטום פון די לעצטע צוגאב צום טיש, וואו עס איז גאראנטירט אז די ריכטיגע דאטא זענען שוין אויסגערעכנט געווארן, און עס מאכט א בקשה צו איין טיש און צו אן אנדערן טיש. פון איינעם סעלעקטירט די פארלאנג זיך ביז א געוויסע צייט, און פון צווייטן באקומט עס וואס איז נאך נישט גערעכנט געווארן. און עס אַרבעט, אָבער נישט דורך קליקכאָוסע אַליין.

אויב איר האָבן אַ מין פון אַפּי - פֿאַר אַנאַליס, פֿאַר יוזערז - דעמאָלט, אין פּרינציפּ, דאָס איז אַן אָפּציע. איר ציילט שטענדיק, שטענדיק ציילט. דאָס קען זיין געטאן אַמאָל אַ טאָג אָדער אין עטלעכע אנדערע צייט. איר קלייַבן פֿאַר זיך אַ קייט וואָס איר טאָן ניט דאַרפֿן און איז נישט קריטיש.

ClickHouse האט אַ פּלאַץ פון לאָגס. ווי קען איך זען אַלץ וואָס כאַפּאַנז צו די סערווער אין אַ בליק?

ClickHouse האט אַ זייער גרויס נומער פון פאַרשידענע לאָגס, און די נומער איז ינקריסינג. אין נייַע ווערסיעס, עטלעכע פון ​​​​זיי זענען אפילו ענייבאַלד דורך פעליקייַט; אין עלטערע ווערסיעס זיי מוזן זיין ענייבאַלד ווען אַפּדייטינג. אָבער, עס זענען מער און מער פון זיי. לעסאָף, איך וואָלט ווי צו זען וואָס איז געשעעניש מיט מיין סערווער איצט, אפֿשר אויף אַ מין פון קיצער דאַשבאָרד.

צי איר האָבן אַ קליקכאָוסע מאַנשאַפֿט, אָדער די טימז פון דיין פרענדז, וואָס שטיצן עטלעכע פאַנגקשאַנאַליטי פון פאַרטיק דאַשבאָרדז וואָס וואָלט ווייַזן די לאָגס ווי אַ פאַרטיק פּראָדוקט? לעסאָף, נאָר קוקן אין לאָגס אין ClickHouse איז גרויס. אבער עס וואָלט זיין זייער קיל אויב עס איז שוין צוגעגרייט אין די פאָרעם פון אַ דאַשבאָרד. איך וואָלט באַקומען אַ בריק פון עס.

עס זענען דאַשבאָרדז, כאָטש זיי זענען נישט סטאַנדערדייזד. אין אונדזער פירמע, וועגן 60 טימז נוצן ClickHouse, און די מאָדנע זאַך איז אַז פילע פון ​​​​זיי האָבן דאַשבאָרדז וואָס זיי געמאכט פֿאַר זיך, און אַ ביסל אַנדערש. עטלעכע טימז נוצן אַן ינערלעך יאַנדעקס.קלאָוד ינסטאַלירונג. עס זענען עטלעכע פאַרטיק ריפּאָרץ, כאָטש ניט אַלע די נייטיק. אנדערע האָבן זייער אייגן.

מייַן חברים פון מעטריקאַ האָבן זייער אייגן דאַשבאָרד אין גראַפאַנאַ, און איך האָבן מיין אייגענע פֿאַר זייער קנויל. איך קוק אויף זאכן ווי קאַש שלאָגן פֿאַר די סעריף קאַש. און אפילו מער שווער איז אַז מיר נוצן פאַרשידענע מכשירים. איך באשאפן מיין דאַשבאָרד מיט אַ זייער אַלט געצייַג גערופן Graphite-web. ער איז גאָר מיעס. און איך נאָך נוצן עס אַזוי, כאָטש גראַפאַנאַ וואָלט מיסטאָמע זיין מער באַקוועם און שיין.

די גרונט זאַך אין דאַשבאָרדז איז די זעלבע. דאָס זענען סיסטעם מעטריקס פֿאַר דעם קנויל: קפּו, זכּרון, דיסק, נעץ. אנדערע - נומער פון סיימאַלטייניאַס ריקוועס, נומער פון סיימאַלטייניאַס מערדזשיז, נומער פון ריקוועס פּער סעקונדע, מאַקסימום נומער פון טשאַנגקס פֿאַר MergeTree טיש פּאַרטישאַנז, רעפּלאַקיישאַן אָפּשטיי, רעפּלאַקיישאַן ריי גרייס, נומער פון ינסערטאַד ראָוז פּער סעקונדע, נומער פון ינסערטאַד בלאַקס פּער סעקונדע. דאָס איז אַלע וואָס איז באקומען ניט פון לאָגס, אָבער פון מעטריקס.

וולאדימיר קאָלאָבאַעוו: אַלעקסיי, איך וואָלט ווי צו פאַרריכטן עס אַ ביסל. עס איז גראַפאַנאַ. גראַפאַנאַ האט אַ דאַטן מקור, וואָס איז קליקכאָוסע. דאָס איז, איך קענען מאַכן ריקוועס פֿון Grafana גלייַך צו קליקקכאַוס. ClickHouse האט אַ טיש מיט לאָגס, דאָס איז די זעלבע פֿאַר אַלעמען. ווי אַ רעזולטאַט, איך ווילן צו אַקסעס דעם קלאָץ טיש אין Grafana און זען די ריקוועס אַז מיין סערווער מאכט. עס וואָלט זיין גרויס צו האָבן אַ דאַשבאָרד ווי דאָס.

איך בייקט עס זיך. אָבער איך האָבן אַ קשיא - אויב דאָס איז אַלע סטאַנדערדייזד, און גראַפאַנאַ איז געניצט דורך אַלעמען, פארוואס טוט יאַנדעקס נישט האָבן אַזאַ אַ באַאַמטער דאַשבאָרד?

קיריל שוואַקאָוו: אין פאַקט, די דאַטן מקור וואָס גייט צו ClickHouse איצט שטיצט אַלטיניטי. און איך נאָר ווילן צו געבן אַ וועקטאָר פון ווו צו גראָבן און וואָס צו שטופּן. איר קענען פרעגן זיי, ווייַל יאַנדעקס נאָך מאכט קליקקהאָוסע, און נישט די געשיכטע אַרום אים. Altinity איז די הויפּט פירמע וואָס דערווייַל פּראַמאָוץ ClickHouse. זיי וועלן נישט פאַרלאָזן אים، אָבער וועט שטיצן אים۔ ווייַל, אין פּרינציפּ, צו ופּלאָאַד אַ דאַשבאָרד צו די Grafana וועבזייטל, איר נאָר דאַרפֿן צו רעגיסטרירן און צופֿעליקער עס - עס זענען קיין ספּעציעל פּראָבלעמס.

אַלעקסיי מילאָווידאָוו: אין די לעצטע יאָר, ClickHouse האט צוגעלייגט פילע אָנפֿרעג פּראָפילינג קייפּאַבילאַטיז. עס זענען מעטריקס פֿאַר יעדער בקשה אויף מיטל באַניץ. און פּונקט לעצטנס, מיר צוגעגעבן אַן אפילו נידעריקער-מדרגה אָנפֿרעג פּראָפילער צו זען ווו אַ אָנפֿרעג איז ספּענדינג יעדער מיליסעקאַנד. אָבער צו נוצן דעם פאַנגקשאַנאַליטי, איך האָבן צו עפֿענען דעם קאַנסאָול קליענט און אַרייַן אַ בקשה, וואָס איך שטענדיק פאַרגעסן. איך געראטעוועט עס ערגעץ און האַלטן פערגעטינג ווו פּונקט.

איך ווינטשן עס איז געווען אַ געצייַג וואָס פּונקט געזאגט, דאָ זענען דיין שווער פֿראגן, גרופּט דורך אָנפֿרעג קלאַס. איך געדריקט אויף איין, און זיי וואָלט זאָגן מיר אַז דאָס איז וואָס עס איז שווער. עס איז ניט אַזאַ לייזונג איצט. און ס'איז טאַקע גאַנץ מאָדנע, אַז ווען מען פֿרעגט מיך: "זאָג מיר, זענען דאָרט קיין פֿאַרטיקע דאַשבאָרדז פֿאַר גראַפאַנאַ?", זאָג איך: "גיי צו די גראַפאַנאַ וועבזײַטל, ס'איז דאָ אַ "דאַשבאָאַרדס" קהילה, און עס איז דאָ אַ דאַשבאָרד. פֿון דימקאַ, עס איז אַ דאַשבאָרד פֿון קאָסטיאַן. איך ווייס נישט וואס דאס איז, איך האב עס אליינס נישט גענוצט. ”

ווי צו השפּעה מערדזשיז אַזוי אַז דער סערווער קען נישט קראַך אין OOM?

איך האָבן אַ טיש, עס איז בלויז איין צעטיילונג אין די טיש, עס איז ריפּלייסינגמערגעטרעע. איך האב געשריבן דאַטן אין עס פֿאַר פיר יאר. איך דארף צו מאַכן אַ יבערבייַטן אין עס און ויסמעקן עטלעכע דאַטן.

איך האָב דאָס געטאָן, און בעשאַס די פּראַסעסינג פון דעם בעטן, אַלע די זכּרון אויף אַלע די סערווערס אין דעם קנויל איז קאַנסומד, און אַלע די סערווערס אין דעם קנויל זענען אריין אין OOM. דערנאָך האָבן זיי אַלע זיך אויפגעשטעלט צוזאַמען, אָנגעהויבן צונויפגיסן דעם זעלבן אפעראציע, דעם דאטה בלאָק, און ווידער געפאלן אין OOM. דערנאך האבן זײ זיך װידער אויפגעהויבן און װידער געפאלן. און די זאך האט נישט אויפגעהערט.

דאן האט זיך ארויסגעשטעלט אז דאס איז למעשה א זשוק וואס די בחורים האבן פארריכט. דאָס איז זייער קיל, דאַנקען דיר זייער פיל. אבער א רעשט איז געבליבן. און איצט, ווען איך טראַכטן וועגן מאַכן אַ סאָרט פון צונויפגיסן אין די טיש, איך האָבן אַ קשיא - פארוואס קען איך נישט עפעס השפּעה אויף די מערדזשיז? פֿאַר בייַשפּיל, באַגרענעצן זיי דורך די סומע פון ​​​​באַראַן פארלאנגט, אָדער, אין פּרינציפּ, דורך די סומע וואָס וועט פּראָצעס דעם באַזונדער טיש.

איך האָבן אַ טיש גערופן "מעטריקס", ביטע פּראָצעס עס פֿאַר מיר אין צוויי פֿעדעם. עס איז ניט דאַרפֿן צו שאַפֿן צען אָדער פינף מערדזשיז אין פּאַראַלעל, טאָן עס אין צוויי. איך טראַכטן אַז איך האָבן גענוג זכּרון פֿאַר צוויי, אָבער עס קען נישט זיין גענוג צו פּראָצעס צען. פארוואס בלייבט מורא? ווייל דער טיש וואקסט, און אמאל וועל איך זיך טרעפן מיט א מצב וואס אין פרינציפן איז שוין נישט צוליב א זשוק, נאר ווייל די דאטא וועלן זיך טוישן אין אזא גרויסער כמות אז איך וועל פשוט נישט האבן גענוג זיקאָרן אויף די סערווער. און דער סערווער וועט קראַך אין OOM ווען מערדזשינג. דערצו, איך קענען באָטל מאַכן די מיוטיישאַן, אָבער מערדזשי איז ניט מער דאָרט.

איר וויסן, ווען מערדזשינג, דער סערווער וועט נישט פאַלן אין OOM, ווייַל ווען מערדזשינג, די סומע פון ​​באַראַן איז געניצט בלויז פֿאַר איין קליין קייט פון דאַטן. אַזוי אַלץ וועט זיין גוט ראַגאַרדלאַס פון די סומע פון ​​דאַטן.

וולאדימיר קאָלאָבאַעוו: פייַן. דאָ דער מאָמענט איז אַזאַ אַז נאָך די זשוק איז פאַרפעסטיקט, איך דאַונלאָודיד אַ נייַע ווערסיע פֿאַר זיך, און אויף אן אנדער טיש, אַ קלענערער, ​​ווו עס זענען פילע פּאַרטישאַנז, איך דורכגעקאָכט אַ ענלעך אָפּעראַציע. און בעשאַס די צונויפגיסן, וועגן 100 גיגאבייט פון באַראַן איז פארברענט אויף די סערווער. איך האָבן 150 פאַרנומען, 100 געגעסן, און אַ 50 גיגאבייט פֿענצטער לינקס, אַזוי איך בין נישט געפאלן אין OOM.

וואָס איצט פּראַטעקץ מיר פון פאַלינג אין OOM אויב עס אַקשלי קאַנסומז 100 גיגאבייט פון באַראַן? וואָס צו טאָן אויב פּלוצלינג די באַראַן אויף די מערדזשז לויפט אויס?

אַלעקסיי מילאָווידאָוו: עס איז אַזאַ אַ פּראָבלעם אַז די קאַנסאַמשאַן פון באַראַן ספּאַסיפיקלי פֿאַר מערדזשינג איז נישט לימיטעד. און די צווייטע פּראָבלעם איז אַז אויב אַ סאָרט פון צונויפגיסן איז אַסיינד, עס מוזן זיין עקסאַקיוטאַד ווייַל עס איז רעקאָרדעד אין די רעפּלאַקיישאַן קלאָץ. די רעפּלאַקיישאַן קלאָץ איז די אַקשאַנז וואָס זענען דארף צו ברענגען די רעפּליקע אין אַ קאָנסיסטענט שטאַט. אויב איר טאָן ניט מאַכן מאַנואַל מאַניפּיאַליישאַנז וואָס וועט צוריקקריגן דעם רעפּלאַקיישאַן קלאָץ, די צונויפגיסן וועט זיין דורכגעקאָכט אויף איין אָדער אנדערן וועג.

פון קורס, עס וואָלט נישט זיין יבעריק צו האָבן אַ באַראַן באַגרענעצונג וואָס "נאָר אין פאַל" פּראַטעקץ קעגן OOM. עס וועט נישט העלפן די צונויפגיסן צו פאַרענדיקן, עס וועט אָנהייבן ווידער, דערגרייכן עטלעכע שוועל, וואַרפן אַ ויסנעם, און דעמאָלט אָנהייבן ווידער - גאָרנישט גוט וועט קומען פון דעם. אבער אין פּרינציפּ, עס וואָלט זיין נוציק צו באַקענען דעם ריסטריקשאַן.

ווי וועט די Golang שאָפער פֿאַר ClickHouse זיין דעוועלאָפּעד?

דער גאָלאַנג דרייווער, וואָס איז געווען געשריבן דורך קיריל שוואַקאָוו, איז איצט אַפישאַלי געשטיצט דורך די קליקכאָוסע מאַנשאַפֿט. ער אין די קליקכאָוסע ריפּאַזאַטאָרי, ער איז איצט גרויס און פאַקטיש.

א קליין צעטל. עס איז אַ ווונדערלעך און באַליבט ריפּאַזאַטאָרי פון נאָרמאַל פארמען פון ינפאַנאַט סדר - דאָס איז ווערטיקאַ. זיי אויך האָבן זייער אייגן באַאַמטער פּיטהאָן שאָפער, וואָס איז געשטיצט דורך די ווערטיקאַ דעוועלאָפּערס. און עטלעכע מאָל עס געטראפן אַז די סטאָרידזש ווערסיעס און די שאָפער ווערסיעס האָבן דיפערד גאַנץ דראַמאַטיקלי, און דער שאָפער אין עטלעכע פונט פארשטאפט ארבעטן. און די צווייטע נקודה. שטיצן פֿאַר דעם באַאַמטער שאָפער, עס מיינט צו מיר, איז דורכגעקאָכט דורך די "אָפּל" סיסטעם - איר שרייַבן זיי אַן אַרויסגעבן, און עס כאַנגז אויף אייביק.

איך האב צוויי פראגעס. איצט קיריל ס Golang שאָפער איז כּמעט די פעליקייַט וועג צו יבערגעבן פֿון Golang מיט ClickHouse. סייַדן עמעצער נאָך קאַמיוניקייץ דורך די הטטפּ צובינד ווייַל ער לייקס עס אַזוי. ווי וועט די אַנטוויקלונג פון דעם שאָפער פאָרזעצן? וועט עס זיין סינגקראַנייזד מיט קיין ברייקינג ענדערונגען אין די ריפּאַזאַטאָרי זיך? און וואָס איז דער פּראָצעדור צו באַטראַכטן אַן אַרויסגעבן?

קיריל שוואַקאָוו: דער ערשטער איז ווי אַלץ איז אָרגאַניזירט ביוראַקראַטיש. די פונט איז נישט דיסקאַסט, אַזוי איך האָבן גאָרנישט צו ענטפֿערן.

צו ענטפֿערן די קשיא וועגן דעם אַרויסגעבן, מיר דאַרפֿן אַ ביסל געשיכטע פון ​​די שאָפער. איך געארבעט פֿאַר אַ פירמע וואָס האט אַ פּלאַץ פון דאַטן. עס איז געווען אַ גאַנצע ספּיננער מיט אַ ריזיק נומער פון געשעענישן וואָס דארף צו זיין סטאָרד ערגעץ. און אין עטלעכע פונט ClickHouse ארויס. מיר אָנגעפילט עס מיט דאַטן, און אין ערשטער אַלץ איז געווען גוט, אָבער דעמאָלט ClickHouse קראַשט. אין דעם מאָמענט מיר באַשלאָסן אַז מיר טאָן ניט דאַרפֿן עס.

א יאָר שפּעטער, מיר האָבן זיך אומגעקערט צו דער געדאַנק פון ניצן ClickHouse, און מיר דאַרפֿן צו שרייַבן דאַטן דאָרט עפעס. דער ינטראַדאַקטערי אָנזאָג איז געווען דאָס: די ייַזנוואַרג איז זייער שוואַך, עס זענען ווייניק רעסורסן. אבע ר מי ר האב ן שטענדי ק געארבע ט אזו י או ן דעריבע ר האב ן מי ר געזוכ ט צ ו דע ם געבוירענער־פראטאקאל .

זינט מיר האָבן געארבעט אין Go, עס איז געווען קלאָר אַז מיר דאַרפֿן אַ Go שאָפער. איך האָב עס כּמעט פול מאָל - דאָס איז געווען מיין אַרבעט אַרבעט. מיר האָבן עס געבראַכט צו אַ געוויסער פונט, און אין פּרינציפּ האָט קיינער נישט אָנגענומען אַז ווער עס יז אַנדערש ווי אונדז וועט נוצן עס. דערנאָך CloudFlare געקומען מיט פּונקט דער זעלביקער פּראָבלעם, און פֿאַר עטלעכע מאָל מיר געארבעט מיט זיי זייער סמודלי, ווייַל זיי האָבן די זעלבע טאַסקס. דערצו, מיר האבן דאָס ביידע אין ClickHouse זיך און אין די שאָפער.

אין עטלעכע פונט, איך פשוט פארשטאפט טאן עס, ווייַל מיין טעטיקייט אין טערמינען פון קליקכאָוסע און אַרבעט געביטן אַ ביסל. דעריבער ישוז זענען נישט פארמאכט. פּיריאַדיקלי, מענטשן וואס דאַרפֿן עפּעס זיך יבערגעבן צו די ריפּאַזאַטאָרי. דערנאָך איך קוק אין די ציען בעטן און מאל איך אפילו רעדאַגירן עפּעס זיך, אָבער דאָס כאַפּאַנז ראַרעלי.

איך וויל זיך אומקערן צום דרייווער. מיט עטלעכע יאָר צוריק, ווען די גאנצע זאַך אנגעהויבן, ClickHouse איז אויך אַנדערש און מיט פאַרשידענע קייפּאַבילאַטיז. איצט מיר האָבן אַ פארשטאנד פון ווי צו רימייק די שאָפער אַזוי אַז עס אַרבעט געזונט. אויב דאָס כאַפּאַנז, ווערסיע 2 וועט זיין ינקאַמפּאַטאַבאַל אין קיין פאַל רעכט צו דער אַקיומיאַלייטיד קראַטשיז.

איך טאָן ניט וויסן ווי צו אָרגאַניזירן דעם ענין. איך האָב אַלײן נישט קײן סך צײַט. אויב עטלעכע מענטשן ענדיקן דעם שאָפער, איך קענען העלפן זיי און זאָגן זיי וואָס צו טאָן. אָבער די אַקטיוו אָנטייל פון יאַנדעקס אין דער אַנטוויקלונג פון די פּרויעקט איז נאָך נישט דיסקאַסט.

אַלעקסיי מילאָווידאָוו: אין פאַקט, עס איז קיין ביוראַקראַסי וועגן די דריווערס נאָך. דער בלויז זאַך איז אַז זיי זענען דערלאנגט צו אַ באַאַמטער אָרגאַניזאַציע, דאָס איז, דער שאָפער איז אנערקענט ווי דער באַאַמטער פעליקייַט לייזונג פֿאַר Go. עס זענען עטלעכע אנדערע דריווערס, אָבער זיי קומען סעפּעראַטלי.

מיר טאָן ניט האָבן קיין ינערלעך אַנטוויקלונג פֿאַר די דריווערס. די קשיא איז צי מיר קענען אָנשטעלן אַ יחיד מענטש, ניט פֿאַר דעם באַזונדער שאָפער, אָבער פֿאַר דער אַנטוויקלונג פון אַלע קהל דריווערס, אָדער קענען מיר געפֿינען עמעצער פון די אַרויס.

די פונדרויסנדיק ווערטערבוך איז נישט לאָדן נאָך אַ רעבאָאָט מיט די לאַזי_לאָאַד באַשטעטיקן ענייבאַלד. וואָס צו טאָן?

מיר האָבן די לאַזי_לאָאַד באַשטעטיקן ענייבאַלד, און נאָך די סערווער איז רעבאָאָטעד, דער ווערטערבוך איז נישט לאָדן זיך. עס איז אויפשטיין בלויז נאָך דער באַניצער אַקסעס דעם ווערטערבוך. און דער ערשטער מאָל איך אַקסעס עס, עס גיט אַ טעות. איז עס מעגלעך צו עפעס אויטאָמאַטיש לאָדן דיקשאַנעריז ניצן ClickHouse, אָדער איר דאַרפֿן צו שטענדיק קאָנטראָלירן זייער גרייטקייַט זיך אַזוי אַז די יוזערז טאָן ניט באַקומען ערראָרס?

טאָמער מיר האָבן אַן אַלט ווערסיע פון ​​ClickHouse, אַזוי דער ווערטערבוך איז נישט לאָדן אויטאָמאַטיש. קען דאָס זיין דער פאַל?

ערשטער, דיקשאַנעריז קענען זיין געצווונגען לאָודיד מיט אַ אָנפֿרעג סיסטעם רילאָוד דיקשאַנעריז. צווייטנס, וועגן דעם טעות - אויב דער ווערטערבוך איז שוין לאָודיד, די פֿראגן וועלן אַרבעטן באזירט אויף די לאָודיד דאַטן. אויב דער ווערטערבוך איז נאָך נישט לאָודיד, עס וועט זיין לאָודיד גלייַך בעשאַס די בעטן.

דאָס איז נישט זייער באַקוועם פֿאַר שווער ווערטערבוך. פֿאַר בייַשפּיל, איר דאַרפֿן צו ציען אַ מיליאָן ראָוז פֿון MySQL. עמעצער מאכט אַ פּשוט אויסקלייַבן, אָבער דעם אויסקלייַבן וועט וואַרטן פֿאַר די זעלבע מיליאָן ראָוז. עס זענען צוויי סאַלושאַנז דאָ. דער ערשטער איז צו קער אַוועק lazy_load. צווייטנס, ווען דער סערווער איז אַרויף, איידער איר שטעלן די מאַסע אויף עס, טאָן דאָס סיסטעם רילאָוד ווערטערבוך אָדער נאָר טאָן אַ אָנפֿרעג וואָס ניצט אַ ווערטערבוך. דעמאָלט דער ווערטערבוך וועט זיין לאָודיד. איר דאַרפֿן צו קאָנטראָלירן די אַוויילאַבילאַטי פון דיקשאַנעריז מיט די לאַזי_לאָאַד באַשטעטיקן ענייבאַלד, ווייַל ClickHouse טוט נישט לאָדן זיי אויטאָמאַטיש.

דער ענטפער צו די לעצטע קשיא איז אָדער די ווערסיע איז אַלט אָדער עס דאַרף זיין דיבאַגד.

וואָס צו טאָן מיט דעם פאַקט אַז סיסטעם רילאָוד דיקשאַנעריז טוט נישט לאָדן קיין פון די פילע דיקשאַנעריז אויב בייַ מינדסטער איינער פון זיי קראַשיז מיט אַ טעות?

עס איז אן אנדער קשיא וועגן סיסטעם רילאָוד דיקשאַנעריז. מיר האָבן צוויי ווערטערביכער - איינער איז נישט לאָודיד, דער צווייטער איז לאָודיד. אין דעם פאַל, סיסטעם רילאָוד דיקשאַנעריז טוט נישט לאָדן קיין ווערטערבוך, און איר מוזן לאָודינג אַ ספּעציפיש איינער דורך זיין נאָמען מיט די סיסטעם רילאָוד ווערטערבוך. איז דאָס אויך שייַכות צו די ClickHouse ווערסיע?

איך וויל דיר פרייען. דעם אָפּפירונג איז געווען טשאַנגינג. דעם מיטל אַז אויב איר דערהייַנטיקן ClickHouse, עס וועט אויך טוישן. אויב איר זענט נישט צופרידן מיט דיין קראַנט נאַטור סיסטעם רילאָוד דיקשאַנעריז, דערהייַנטיקן, און לאָזן ס האָפֿן עס ענדערונגען פֿאַר די בעסער.

איז עס אַ וועג צו קאַנפיגיער דעטאַילס אין די ClickHouse קאַנפיגיעריישאַן, אָבער נישט ווייַזן זיי אין פאַל פון ערראָרס?

דער ווייַטער קשיא איז וועגן ערראָרס שייַכות צו דעם ווערטערבוך, ניימלי פרטים. מיר האָבן ספּעציפיצירט די קשר דעטאַילס אין די קליקכאָוסע קאַנפיגיעריישאַן פֿאַר דעם ווערטערבוך, און אויב עס איז אַ טעות, מיר באַקומען די דעטאַילס און פּאַראָל אין ענטפער.

מיר סאַלווד דעם טעות דורך אַדינג דעטאַילס צו די ODBC דרייווער קאַנפיגיעריישאַן. איז עס קיין וועג צו קאַנפיגיער די דעטאַילס אין די ClickHouse קאַנפיגיעריישאַן, אָבער נישט ווייַזן די דעטאַילס אין פאַל פון ערראָרס?

די פאַקטיש לייזונג דאָ איז צו ספּעציפיצירן די קראַדענטשאַלז אין odbc.ini, און אין ClickHouse זיך ספּעציפיצירן בלויז די ODBC דאַטאַ מקור נאָמען. דאָס וועט נישט פּאַסירן פֿאַר אנדערע ווערטערבוך קוואלן - ניט פֿאַר די ווערטערבוך מיט MySQL, אדער פֿאַר די אנדערע, איר זאָל נישט זען די פּאַראָל ווען איר באַקומען אַ טעות אָנזאָג. פֿאַר ODBC, איך וועט אויך קוקן - אויב עס יגזיסץ, איר נאָר דאַרפֿן צו באַזייַטיקן עס.

באָנוס: באַקגראַונדז פֿאַר פארגרעסער פון גאַדערינגז

דורך געבן אַ קליק אויף די בילד, באָנוס באַקגראַונדז פון די גאַדערינגז וועט עפענען פֿאַר די מערסט פּערסיסטענט לייענער. מיר שטעלן אויס די פייער צוזאַמען מיט די אַוויטאָ טעכנאָלאָגיע מאַסקאַץ, מיר באַראַטנ זיך מיט קאָלעגעס פון די סיסטעם אַדמיניסטראַטאָר ס צימער אָדער די אַלט-שולע קאָמפּיוטער קלוב, און מיר פירן טעגלעך מיטינגז אונטער די בריק קעגן די באַקדראַפּ פון גראַפיטי.

קליקכאָוסע פֿאַר אַוואַנסירטע ניצערס אין פֿראגן און ענטפֿערס

מקור: www.habr.com

לייגן אַ באַמערקונג