Cassandra ตัวอย่างการสร้าง แก้ไข และตัดข้อมูลในตาราง CQL
⚡ สรุปอย่างชาญฉลาด
Cassandra การดำเนินการกับตารางครอบคลุมถึงการสร้าง การแก้ไข และการลบpingและการตัดทอนกลุ่มคอลัมน์ด้วย CQL หน้านี้อธิบายคำสั่งแต่ละคำสั่ง รูปแบบคีย์หลักสามแบบที่กำหนดการกระจายข้อมูล และความแตกต่างระหว่างการลบแถวและการลบตาราง

ไวยากรณ์ของ Cassandra ภาษาสอบถาม (CQL) มีลักษณะคล้ายกับ SQL ภาษา.
วิธีสร้างตารางใน Cassandra
ตระกูลคอลัมน์ใน Cassandra คล้ายกับตาราง RDBMS ตระกูลคอลัมน์ใช้เพื่อจัดเก็บข้อมูล
คำสั่ง 'สร้างตาราง' ใช้เพื่อสร้างตระกูลคอลัมน์ Cassandra.
วากยสัมพันธ์
CREATE TABLE KeyspaceName.TableName ( ColumnName DataType, ColumnName DataType, ColumnName DataType, PRIMARY KEY (ColumnName) ) WITH PropertyName = PropertyValue;
1. คีย์หลัก: มีสองประเภทเป็น คีย์หลัก.
- คีย์หลักเดี่ยว: ระบุคีย์หลักตัวเดียวตามรูปแบบต่อไปนี้
วากยสัมพันธ์
PRIMARY KEY (ColumnName)
ในคีย์หลักเดียวจะมีเพียงคอลัมน์เดียวเท่านั้น คอลัมน์นั้นเรียกอีกอย่างว่าคีย์การแบ่งพาร์ติชัน ข้อมูลจะถูกแบ่งพาร์ติชันตามคอลัมน์นั้น ข้อมูลถูกกระจายไปยังโหนดต่างๆ บนพื้นฐานของพาร์ติชั่นคีย์
2. คีย์หลักแบบผสม: คีย์หลักแบบผสมจะถูกระบุตามรูปแบบต่อไปนี้
วากยสัมพันธ์
PRIMARY KEY (ColumnName1, ColumnName2, ...)
ตามไวยากรณ์ด้านบน ColumnName1 คือคีย์การแบ่งพาร์ติชัน และ ColumnName2 คือ Clusterการใช้คีย์ ข้อมูลจะถูกแบ่งพาร์ติชั่นตาม ColumnName1 และข้อมูลจะถูกจัดกลุ่มตาม ColumnName2 Clustering เป็นกระบวนการที่เรียงลำดับข้อมูลในพาร์ติชัน
3. คีย์การแบ่งพาร์ติชันแบบผสม: คีย์การแบ่งพาร์ติชั่นแบบผสมถูกระบุโดยรูปแบบไวยากรณ์ดังต่อไปนี้
วากยสัมพันธ์
PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)
ในไวยากรณ์ข้างต้น ColumnName1 และ ColumnName2 คือคีย์พาร์ติชันแบบผสม ข้อมูลจะถูกแบ่งพาร์ติชันตามคอลัมน์ ColumnName1 และ ColumnName2 และข้อมูลจะถูกจัดกลุ่มตามคอลัมน์ ColumnName3 หากคุณมีข้อมูลจำนวนมากในพาร์ติชันเดียว คีย์พาร์ติชันแบบผสมจะถูกนำมาใช้ คีย์พาร์ติชันแบบผสมใช้เพื่อสร้างพาร์ติชันหลายพาร์ติชันสำหรับข้อมูล
- ด้วยข้อ
“With clause” ใช้เพื่อระบุคุณสมบัติและค่าของคุณสมบัติสำหรับตารางที่กำหนด เช่น หากคุณต้องการบีบอัด Cassandra ข้อมูลในตาราง คุณสามารถตั้งค่าคุณสมบัติการบีบอัดได้โดยระบุค่าคุณสมบัติอัลกอริธึมการบีบอัดใน "ส่วนคำสั่ง With" ส่วนคำสั่งเดียวกันนี้ยังตั้งค่า CLUSTERING ORDER BY เพื่อกลับทิศทางการเรียงลำดับของคอลัมน์คลัสเตอร์ และตั้งค่า default_time_to_live เพื่อลบข้อมูลทุกแถวโดยอัตโนมัติ
ตัวอย่าง
นี่คือการดำเนินการของคำสั่ง 'สร้างตาราง' ที่จะสร้างชื่อตาราง 'นักเรียน' ในคีย์สเปซ 'มหาวิทยาลัย'
CREATE TABLE University.Student ( RollNo int, Name text, dept text, PRIMARY KEY (RollNo) );
หลังจากดำเนินการคำสั่ง 'Create table' สำเร็จแล้ว ตาราง 'Student' จะถูกสร้างขึ้นในคีย์สเปซ 'University' โดยมีคอลัมน์ RollNo, Name และ dept. RollNo เป็นคีย์หลัก และยังเป็นคีย์แบ่งพาร์ติชันด้วย ดังนั้นนักเรียนแต่ละคนจะอยู่ในพาร์ติชันแยกกัน โดยแต่ละพาร์ติชันจะมีเพียงแถวเดียว
Cassandra เปลี่ยนตาราง
คำสั่ง 'Alter Table' ใช้ในการวางคอลัมน์ เพิ่มคอลัมน์ใหม่ เปลี่ยนชื่อคอลัมน์ แก้ไขประเภทคอลัมน์ และเปลี่ยนคุณสมบัติของตาราง
วากยสัมพันธ์
ต่อไปนี้คือรูปแบบคำสั่ง 'Alter Table'
ALTER TABLE KeyspaceName.TableName ADD ColumnName ColumnDataType; ALTER TABLE KeyspaceName.TableName DROP ColumnName; ALTER TABLE KeyspaceName.TableName RENAME ColumnName TO NewColumnName; ALTER TABLE KeyspaceName.TableName WITH PropertyName = PropertyValue;
แบบฟอร์มแต่ละแบบจะออกเป็นใบแจ้งยอดแยกต่างหาก มีข้อจำกัดสองประการที่ใช้บังคับในปัจจุบัน Cassandra การอัปเดตครั้งนี้: ไม่สามารถเปลี่ยนแปลงชนิดข้อมูลของคอลัมน์ที่มีอยู่ได้อีกต่อไป และฟังก์ชัน RENAME จะใช้งานได้เฉพาะกับคอลัมน์คลัสเตอร์ของคีย์หลักเท่านั้น
ตัวอย่าง
นี่คือภาพรวมของคำสั่ง 'Alter Table' ที่จะเพิ่มคอลัมน์ใหม่ในตาราง Student
ALTER TABLE University.Student ADD Semester int;
หลังจากดำเนินการคำสั่ง 'Alter Table' สำเร็จแล้ว คอลัมน์ใหม่ 'ภาคการศึกษา' ที่มีประเภทข้อมูล 'int' จะถูกเพิ่มลงในตาราง Student
นี่คือภาพหน้าจอที่แสดงตารางนักเรียนที่อัปเดต
Cassandra วางตาราง
คำสั่ง 'Drop table' จะลบตารางที่ระบุ รวมทั้งข้อมูลทั้งหมดจากคีย์สเปซ ก่อนทำการลบ ให้ตรวจสอบเงื่อนไขต่อไปนี้ping โต๊ะ Cassandra ถ่ายภาพสแน็ปช็อตของข้อมูลไม่ใช่สคีมาเป็นข้อมูลสำรอง
วากยสัมพันธ์
DROP TABLE IF EXISTS KeyspaceName.TableName;
ตัวอย่าง
นี่คือภาพรวมของคำสั่งที่ดำเนินการ 'Drop Table' ซึ่งจะปล่อยตาราง Student จากคีย์สเปซ 'University'
DROP TABLE University.Student;
หลังจากดำเนินการคำสั่ง 'Drop Table' สำเร็จแล้ว table Student จะถูกดร็อปจาก keyspace University
นี่คือภาพรวมที่แสดงข้อผิดพลาดที่ส่งคืนโดย Cassandra เมื่อพยายามเข้าถึงตารางนักเรียนที่ไม่มีอยู่
Cassandra ตัดตาราง
คำสั่ง 'Truncate table' จะลบข้อมูลทั้งหมดออกจากตารางที่ระบุ ก่อนที่จะตัดทอนข้อมูล Cassandra ถ่ายภาพสแน็ปช็อตของข้อมูลเป็นข้อมูลสำรอง
วากยสัมพันธ์
TRUNCATE KeyspaceName.TableName;
ตัวอย่าง
มีสามระเบียนในตารางนักเรียน นี่คือบันทึกในตาราง
นี่คือภาพรวมของคำสั่งที่ดำเนินการ 'Truncate table' ซึ่งจะลบข้อมูลทั้งหมดออกจากตาราง Student
หลังจากดำเนินการคำสั่ง 'Truncate Table' สำเร็จแล้ว ข้อมูลทั้งหมดจะถูกลบออกจากตาราง Student
นี่คือภาพรวมของสถานะฐานข้อมูลที่ไม่มีบันทึกในตาราง Student
คำสั่ง `truncate` จำเป็นต้องให้ทุกโหนดสามารถเข้าถึงได้ เนื่องจากคำสั่งนี้จะถูกประมวลผลพร้อมกันทั่วทั้งคลัสเตอร์ หากโหนดใดโหนดหนึ่งหยุดทำงาน คำสั่งจะล้มเหลว ซึ่งเป็นมาตรการป้องกันโดยเจตนาเพื่อไม่ให้ข้อมูลบางส่วนสูญหาย
Drop vs Truncate vs Delete ใน Cassandra
มีคำสั่งสามคำสั่งที่ใช้ลบข้อมูล และการเลือกคำสั่งที่ไม่ถูกต้องอาจทำให้โครงสร้างข้อมูลเสียหายหรือส่งผลให้เกิดปัญหาด้านประสิทธิภาพ
| คำสั่ง | สิ่งที่มันกำจัดออกไป | เก็บรักษาสคีมาไว้ | ราคา |
|---|---|---|---|
| วางตาราง | แถวทั้งหมดและคำจำกัดความของตาราง | ไม่ | ราคาถูก ไฟล์ SSTable จะถูกบันทึกภาพรวมแล้วก็ถูกทิ้งไป |
| ตัด | ทุกแถว | มี (ใบกำกับภาษีเต็มรูปแบบ) | ราคาถูก แต่ต้องเปิดใช้งานทุกโหนด ไม่มีการสร้างป้ายหลุมศพ |
| ลบ | แถวหรือคอลัมน์ที่เลือก | มี (ใบกำกับภาษีเต็มรูปแบบ) | มีราคาแพงเมื่อทำในปริมาณมาก การกำจัดแต่ละครั้งเปรียบเสมือนการจารึกบนหลุมศพที่ระบุว่า ต้องข้ามไปจนกว่าจะมีการอัดแน่น |
หลักการปฏิบัติคือควรเลือกใช้ TRUNCATE แทนการลบข้อมูลจำนวนมาก (bulk DELETE) เมื่อต้องการล้างตารางทั้งหมด เพราะการลบข้อมูลจำนวนหลายพันรายการจะทำให้การอ่านข้อมูลในพาร์ติชันนั้นช้าลง การลบข้อมูลระดับแถวจะกล่าวถึงในหัวข้อถัดไป การแทรก การอัปเดต และการลบ CQL เกี่ยวกับการสอน








