การพัฒนาประเภทข้อมูล JSON ใหม่อันทรงพลังสำหรับ ClickHouse
(clickhouse.com)บทนำ
- JSON ได้กลายเป็นฟอร์แมตมาตรฐานสำหรับการจัดการข้อมูลกึ่งมีโครงสร้างและไม่มีโครงสร้างในระบบข้อมูลสมัยใหม่
- ClickHouse ตระหนักถึงความสำคัญของ JSON และได้แก้ไขความท้าทายหลายประการในการใช้งาน JSON อย่างมีประสิทธิภาพในระดับขนาดใหญ่
ความท้าทาย
-
ความท้าทาย 1: ที่เก็บข้อมูลแบบคอลัมน์อย่างแท้จริง
เพื่อให้ประมวลผลข้อมูล JSON ได้อย่างมีประสิทธิภาพเช่นเดียวกับคอลัมน์ประเภทอื่น จำเป็นต้องจัดเก็บเส้นทาง JSON ในรูปแบบคอลัมน์ -
ความท้าทาย 2: ปัญหาการผสานรวมข้อมูลและชนิดข้อมูลที่เปลี่ยนแปลงแบบไดนามิก
ต้องสามารถจัดเก็บชนิดข้อมูลที่แตกต่างกันสำหรับเส้นทาง JSON เพื่อรักษาความสมบูรณ์ของข้อมูล -
ความท้าทาย 3: ป้องกันการเพิ่มจำนวนมหาศาลของไฟล์ข้อมูลคอลัมน์บนดิสก์
ในกรณีที่มีคีย์ JSON ที่ไม่ซ้ำจำนวนมาก ต้องมีการจำกัดการสร้างคอลัมน์เพื่อป้องกันไม่ให้ไฟล์คอลัมน์เพิ่มจำนวนมหาศาล -
ความท้าทาย 4: การจัดเก็บแบบหนาแน่น
ในกรณีที่มีคีย์ JSON ที่ไม่ซ้ำกันแต่พบไม่บ่อยจำนวนมาก ต้องหลีกเลี่ยงการจัดเก็บค่า NULL หรือค่าเริ่มต้นซ้ำซ้อน
ประเภทข้อมูล JSON ใหม่
- ClickHouse ได้เปิดตัวประเภทข้อมูล JSON ใหม่สำหรับการประมวลผลข้อมูล JSON ประสิทธิภาพสูง
- ประเภทนี้รองรับข้อมูลที่เปลี่ยนแปลงแบบไดนามิก พร้อมคงไว้ซึ่งการบีบอัดข้อมูลระดับสูงและประสิทธิภาพในการคิวรี
- สามารถปรับแต่งประสิทธิภาพได้โดยการให้ hint สำหรับการ parse JSON
องค์ประกอบพื้นฐาน 1 - ประเภท Variant
- ประเภท Variant ช่วยให้สามารถจัดเก็บค่าของชนิดข้อมูลที่แตกต่างกันได้อย่างมีประสิทธิภาพภายในคอลัมน์เดียวกันของตาราง
- ใช้ซับคอลัมน์แยกสำหรับแต่ละชนิดข้อมูลเพื่อรักษาความสมบูรณ์ของข้อมูล
องค์ประกอบพื้นฐาน 2 - ประเภท Dynamic
- ประเภท Dynamic ขยายความสามารถของประเภท Variant เพื่อให้สามารถจัดเก็บชนิดข้อมูลที่หลากหลายได้โดยไม่ต้องกำหนดชนิดล่วงหน้า
- จำกัดจำนวนชนิดข้อมูลที่จัดเก็บเพื่อป้องกันการเพิ่มจำนวนมหาศาลของไฟล์คอลัมน์
ประเภท JSON ของ ClickHouse
- โดยอาศัยประเภท Variant และ Dynamic จึงได้มีการนำประเภท JSON ใหม่มาใช้งานเพื่อแก้ทุกความท้าทาย
- สามารถจัดเก็บได้โดยไม่ขึ้นกับโครงสร้างของอ็อบเจ็กต์ JSON และอ่านค่าได้โดยใช้เส้นทาง JSON เป็นซับคอลัมน์
สรุปโดย GN⁺
- ประเภทข้อมูล JSON ใหม่ของ ClickHouse มุ่งเน้นไปที่การแก้ปัญหาด้านประสิทธิภาพของ JSON ในการวิเคราะห์ข้อมูลขนาดใหญ่
- ประเภทนี้รองรับชนิดข้อมูลที่หลากหลาย พร้อมมอบประสิทธิภาพและความสามารถในการขยายระบบในระดับสูง
- นอกจากนี้ยังวางรากฐานสำหรับการรองรับประเภทกึ่งมีโครงสร้างอื่น ๆ เช่น XML, YAML
- มีประโยชน์สำหรับนักพัฒนาที่ใช้งาน ClickHouse และมอบข้อได้เปรียบด้านการบีบอัดข้อมูลและประสิทธิภาพการคิวรี
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การตัดสินใจใช้ ClickHouse ที่ PostHog เป็นหนึ่งในการตัดสินใจที่ดีที่สุด ทำให้เราสามารถสร้างผลิตภัณฑ์ได้มากขึ้นบนชุดข้อมูลเดียวกันพร้อมกับขยายประสิทธิภาพไปได้ด้วย
สงสัยว่าการเพิ่ม data type เข้าไปใน JSON ยังนับว่าเป็น JSON อยู่หรือไม่
ดีที่ได้เห็นฟีเจอร์นี้ใน ClickHouse
ตอนประเมิน ClickHouse ก็คุ้มที่จะพิจารณา Apache Pinot ด้วย
รู้สึกว่าน่าสนใจสำหรับข้อมูลที่เปลี่ยนแปลงแบบไดนามิก
รอฟีเจอร์รองรับ JSON ของ ClickHouse มานานแล้ว และ type ใหม่กับ dynamic columns น่าจะมีประโยชน์มากเป็นพิเศษ
ClickHouse เป็นเครื่องมือที่ยอดเยี่ยม
ตอนลอง ClickHouse เมื่อไม่กี่สัปดาห์ก่อน มันตั้งชื่อไฟล์ตามชื่อคอลัมน์ ทำให้เกิดข้อผิดพลาดใน file system เพราะชื่อไฟล์ยาวและมีเครื่องหมายทับ
ClickHouse ยังถูกใช้งานน้อยกว่าที่ควร