2 पॉइंट द्वारा GN⁺ 2024-10-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें

परिचय

  • JSON आधुनिक data systems में semi-structured और unstructured data को संभालने का standard format बन चुका है.
  • ClickHouse JSON के महत्व को पहचानता है और बड़े पैमाने पर JSON का प्रभावी उपयोग करने में आने वाली कुछ चुनौतियों का समाधान करता है.

चुनौतियाँ

  • चुनौती 1: सच्चा column-oriented storage
    JSON data को दूसरे column types की तरह कुशलता से संभालने के लिए JSON paths को column-oriented तरीके से store करना चाहिए.

  • चुनौती 2: dynamically बदलते data और type integration की समस्या
    JSON paths के लिए अलग-अलग data types store करने की क्षमता होनी चाहिए ताकि data integrity बनी रहे.

  • चुनौती 3: disk पर column data files की अनियंत्रित वृद्धि रोकना
    जब बहुत अधिक unique JSON keys हों, तो column files की बेतहाशा वृद्धि रोकने के लिए column creation पर सीमा लगानी चाहिए.

  • चुनौती 4: dense storage
    जब unique लेकिन कम उपयोग होने वाली JSON keys बहुत हों, तो NULL या default values को बार-बार store नहीं करना चाहिए.

नया JSON data type

  • ClickHouse high-performance JSON data processing के लिए नया JSON data type पेश करता है.
  • यह type dynamically बदलते data को support करता है और high data compression तथा query performance बनाए रखता है.
  • JSON parsing के लिए hints देकर performance को tune किया जा सकता है.

Building Block 1 - Variant type

  • Variant type एक ही table column के भीतर अलग-अलग data types के values को कुशलता से store करने में मदद करता है.
  • हर data type के लिए अलग subcolumn का उपयोग करके data integrity बनाए रखी जाती है.

Building Block 2 - Dynamic type

  • Dynamic type, Variant type का विस्तार है, जो पहले से type निर्दिष्ट किए बिना विभिन्न data types store करने की सुविधा देता है.
  • store किए जाने वाले types की संख्या सीमित रखकर column files की अनियंत्रित वृद्धि रोकी जाती है.

ClickHouse JSON type

  • Variant और Dynamic types के आधार पर नया JSON type लागू किया गया है, जो सभी चुनौतियों का समाधान करता है.
  • JSON object की संरचना चाहे जैसी भी हो, उसे store किया जा सकता है, और values को पढ़ने के लिए JSON paths को subcolumns के रूप में इस्तेमाल किया जा सकता है.

GN⁺ की संक्षिप्त टिप्पणी

  • ClickHouse का नया JSON data type बड़े पैमाने के data analysis में JSON की performance समस्याओं को हल करने पर केंद्रित है.
  • यह type विभिन्न data types को support करता है और high performance व scalability प्रदान करता है.
  • JSON के अलावा XML, YAML जैसे अन्य semi-structured types को support करने की नींव भी तैयार करता है.
  • ClickHouse इस्तेमाल करने वाले developers के लिए यह उपयोगी है और data compression तथा query performance में लाभ देता है.

1 टिप्पणियां

 
GN⁺ 2024-10-23
Hacker News टिप्पणियाँ
  • PostHog में ClickHouse का उपयोग करने का फैसला सबसे बेहतरीन फैसलों में से एक था। परफॉर्मेंस को scale करते हुए उसी data set के साथ ज़्यादा products बनाए जा सके

    • JSON फीचर आने से पहले ही ClickHouse का उपयोग कर रहे थे, और JSON blob में keys के query pattern के आधार पर JSON fields को physical columns में बदलने की व्यवस्था की थी
    • Physical columns बन जाने के बाद runtime पर queries को उन columns की ओर route किया गया, जिससे CPU और IO उपयोग में काफी कमी आई
    • ClickHouse का नया JSON type परफॉर्मेंस बेहतर बनाता है क्योंकि इससे कंप्यूटर को कम काम करना पड़ता है
    • ClickHouse Inc. की टीम और community बहुत तेज़ी से आगे बढ़ रही है, और Parquet व Iceberg support को लेकर काफी उम्मीदें हैं
  • यह जानने की जिज्ञासा है कि JSON में data types जोड़ने के बाद क्या वह JSON कहलाने योग्य रहता है

    • अगर standard library JSON parser उसे पढ़ नहीं सकता, तो "CH-JSON" जैसा नाम इस्तेमाल करना बेहतर हो सकता है
    • अभी तक ClickHouse इस्तेमाल नहीं किया है, लेकिन नतीजे शानदार लगते हैं
  • ClickHouse में यह फीचर देखना अच्छा है

    • Snowflake ने IPO से पहले इस फीचर का ज़िक्र करने वाला एक whitepaper जारी किया था, और JSON को चुपचाप columns में बदलकर परफॉर्मेंस बेहतर की थी
  • ClickHouse का मूल्यांकन करते समय Apache Pinot पर भी विचार करना उचित है

    • ClickHouse को single-machine installation के लिए design किया गया था और cluster support कमज़ोर है
    • Pinot में horizontal scaling आसान है, और star-tree index का उपयोग करने पर multidimensional analysis में परफॉर्मेंस का अंतर बड़ा होता है
  • Dynamically बदलने वाले data के लिए यह दिलचस्प लगता है

    • उम्मीद है कि यह Elasticsearch में logs स्टोर करते समय आने वाली type configuration समस्याओं को हल कर सकेगा
  • ClickHouse के JSON support का इंतज़ार था, और नया type व dynamic columns खास तौर पर उपयोगी होंगे

  • ClickHouse एक शानदार tool है

    • इसे OLAP के लिए इस्तेमाल करते हैं, और 60 करोड़ rows, 300GB database को बिना समस्या संभालता है
    • उम्मीद है कि नया JSON data type उन use cases के लिए बेहतर होगा जिन्हें अभी nested tuples से हल किया जाता है
  • कुछ हफ्ते पहले जब ClickHouse आज़माया था, तब यह column names के आधार पर files के नाम रख रहा था, जिससे लंबे file names और slash की वजह से file system में errors आए

  • ClickHouse का पर्याप्त उपयोग नहीं हो रहा है

    • 'postgres ही सब कुछ है' जैसी धारणा है, लेकिन अगर ज़रूरत से ज़्यादा scale करना पड़े तो ClickHouse पर विचार करना चाहिए
    • clickhouse-local, SQL का उपयोग करके CSV प्रोसेस करने में बेहतरीन है, और अगर आप Google Sheets या Excel से थक चुके हैं तो इसकी ज़ोरदार सिफारिश है