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

Keyspace คืออะไร Cassandra?
คีย์สเปซใน Cassandra คือที่เก็บข้อมูล คล้ายกับฐานข้อมูลในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) Cassandra Keyspace กำหนดวิธีการจำลองข้อมูลบนโหนด
เนื่องจากการจำลองข้อมูลถูกตั้งค่าไว้ที่คีย์สเปซแทนที่จะเป็นตารางแต่ละตาราง ดังนั้นทุกตารางที่สร้างขึ้นภายในคีย์สเปซจึงได้รับกลยุทธ์และปัจจัยการจำลองข้อมูลเดียวกัน ทำให้คีย์สเปซเป็นสิ่งสำคัญอันดับแรกในการตัดสินใจเลือกสคีมาใดๆ
วิธีสร้าง Keyspace ใน Cassandra
คีย์สเปซคืออ็อบเจ็กต์ที่เก็บตระกูลคอลัมน์ ซึ่งเป็นประเภทที่ผู้ใช้กำหนด ใน Cassandra, Keyspace มีความคล้ายคลึงกับ อาร์ดีบีเอ็มเอส ฐานข้อมูล Keyspace เก็บตระกูลคอลัมน์ ดัชนี ประเภทที่ผู้ใช้กำหนด การรับรู้ของศูนย์ข้อมูล กลยุทธ์ที่ใช้ในคีย์สเปซ ปัจจัยการจำลอง ฯลฯ
สั่งการ "สร้างคีย์สเปซ” ใช้เพื่อสร้างคีย์สเปซใน Cassandra.
วากยสัมพันธ์
CREATE KEYSPACE KeyspaceName WITH replication = { 'class': 'StrategyName', 'replication_factor': 3 };
ส่วนประกอบต่างๆของ Cassandra คีย์สเปซ
- กลยุทธ์: ขณะประกาศชื่อกลยุทธ์เข้ามา Cassandra- มีการประกาศกลยุทธ์สองประเภท Cassandra ไวยากรณ์
- กลยุทธ์ง่ายๆ:ใช้กลยุทธ์ที่เรียบง่ายเมื่อคุณมีศูนย์ข้อมูลเพียงแห่งเดียว ในกลยุทธ์นี้ สำเนาแรกจะถูกวางไว้บนโหนดที่เลือกโดยตัวแบ่งพาร์ติชัน โหนดที่เหลือจะถูกวางไว้ในทิศทางตามเข็มนาฬิกาในวงแหวนโดยไม่คำนึงถึงตำแหน่งของแร็คหรือโหนด
- กลยุทธ์โทโพโลยีเครือข่าย:กลยุทธ์โทโพโลยีเครือข่ายใช้ในกรณีที่คุณมีศูนย์ข้อมูลมากกว่าหนึ่งแห่ง ในกลยุทธ์นี้ คุณต้องจัดเตรียมปัจจัยการจำลองข้อมูลสำหรับศูนย์ข้อมูลแต่ละแห่งแยกจากกัน กลยุทธ์โทโพโลยีเครือข่ายจะวางสำเนาไว้ในโหนดตามทิศทางตามเข็มนาฬิกาในศูนย์ข้อมูลเดียวกัน กลยุทธ์นี้จะพยายามวางสำเนาไว้ในแร็คที่แตกต่างกัน
- ปัจจัยการจำลองแบบ: ปัจจัยการจำลองคือจำนวนแบบจำลองของข้อมูลที่วางอยู่บนโหนดที่แตกต่างกัน หากไม่เกิดความล้มเหลว 3 จะเป็นปัจจัยการจำลองที่ดี ปัจจัยการจำลองมากกว่าสองปัจจัยทำให้มั่นใจได้ว่าไม่มีจุดล้มเหลวเพียงจุดเดียว บางครั้ง เซิร์ฟเวอร์อาจล่ม หรือปัญหาเครือข่ายอาจเกิดขึ้นได้ แบบจำลองอื่นๆ ก็ให้บริการได้โดยไม่มีข้อผิดพลาด
- ตัวอย่าง: นี่คือภาพรวมของคำสั่งที่ดำเนินการ “Create Keyspace” ซึ่งจะสร้างคีย์สเปซเข้าไป Cassandra.
CREATE KEYSPACE University WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 3 };
หลังจากดำเนินการตามคำสั่ง "สร้าง Keyspace" สำเร็จแล้ว มหาวิทยาลัย Keyspace จะถูกสร้างขึ้นในนั้น Cassandra โดยใช้กลยุทธ์ “SimpleStrategy” และปัจจัยการจำลองแบบ (replication factor) เท่ากับ 3 โปรดทราบว่าชื่อกลยุทธ์ต้องอยู่ในเครื่องหมายคำพูด หากไม่ใส่เครื่องหมายคำพูดจะถูกปฏิเสธเนื่องจากเป็นข้อผิดพลาดทางไวยากรณ์
เปลี่ยนคีย์สเปซ Cassandra
คำสั่ง “Alter Keyspace” จะเปลี่ยนปัจจัยการจำลอง ชื่อกลยุทธ์ และคุณสมบัติการเขียนแบบคงทนในคีย์สเปซที่สร้างขึ้น Cassandra.
วากยสัมพันธ์
ALTER KEYSPACE KeyspaceName WITH replication = { 'class': 'StrategyName', 'replication_factor': 3 } AND DURABLE_WRITES = true;
ประเด็นสำคัญในขณะที่เปลี่ยน Keyspace ใน Cassandra
- ชื่อคีย์สเปซ: ชื่อคีย์สเปซไม่สามารถเปลี่ยนแปลงได้ Cassandra.
- ชื่อกลยุทธ์: ชื่อกลยุทธ์สามารถเปลี่ยนแปลงได้โดยการระบุชื่อกลยุทธ์ใหม่
- ปัจจัยการจำลอง: ปัจจัยการจำลองสามารถเปลี่ยนแปลงได้โดยการระบุปัจจัยการจำลองใหม่
- DURABLE_WRITES: ค่าของ DURABLE_WRITES สามารถเปลี่ยนแปลงได้โดยการระบุค่าเป็น true หรือ false โดยค่าเริ่มต้นจะเป็น true หากตั้งค่าเป็น false จะไม่มีการเขียนการอัปเดตใดๆ ลงใน commit log และในทางกลับกัน
- การดำเนินการ: นี่คือภาพรวมของคำสั่งที่ดำเนินการ “Alter Keyspace” ซึ่งเปลี่ยนกลยุทธ์คีย์สเปซจาก 'SimpleStrategy' เป็น 'NetworkTopologyStrategy' และปัจจัยการจำลองจาก 3 เป็น 1 สำหรับ DataCenter1
ALTER KEYSPACE University WITH replication = { 'class': 'NetworkTopologyStrategy', 'DataCenter1': 1 };
หลังจากดำเนินการคำสั่ง “Alter Keyspace” สำเร็จแล้ว ชื่อกลยุทธ์จะเปลี่ยนจาก 'SimpleStrategy' เป็น 'NetworkTopologyStrategy' และค่าตัวประกอบการจำลองแบบจะเปลี่ยนจาก 3 เป็น 1 สำหรับ 'DataCenter1'
สำคัญ: การเพิ่มค่าตัวประกอบการจำลองแบบไม่ได้เป็นการคัดลอกข้อมูลที่มีอยู่โดยอัตโนมัติ เรียกใช้ การซ่อมแซมเครื่องมือโหนด ในพื้นที่คีย์ที่ได้รับผลกระทบในภายหลัง มิฉะนั้นสำเนาใหม่จะยังคงว่างเปล่าจนกว่าจะมีการซ่อมแซมการอ่านเกิดขึ้นเพื่อแก้ไขแต่ละแถว
Cassandra วางคีย์สเปซ
สั่งการ 'วางคีย์สเปซ' ปล่อยคีย์สเปซซึ่งรวมถึงข้อมูลทั้งหมด ตระกูลคอลัมน์ ประเภทที่ผู้ใช้กำหนด และดัชนีจาก Cassandraก่อนตกping พื้นที่คีย์ Cassandra ถ่ายภาพสแนปช็อตของคีย์สเปซ หากไม่มีคีย์สเปซอยู่ใน Cassandra, Cassandra จะส่งกลับข้อผิดพลาดเว้นแต่จะใช้ IF EXISTS
วากยสัมพันธ์
DROP KEYSPACE IF EXISTS KeyspaceName;
ตัวอย่าง
นี่คือภาพรวมของคำสั่งที่ดำเนินการ 'Drop Keyspace' ที่จะปล่อย keyspace University
DROP KEYSPACE University;
หลังจากดำเนินการคำสั่ง 'Drop keyspace University' สำเร็จแล้ว keyspace University จะถูกละทิ้งจาก Cassandra พร้อมข้อมูลและสคีมาทั้งหมด
นี่คือสแน็ปช็อตที่มีการส่งคืนข้อผิดพลาดเมื่อพยายามเข้าถึงคีย์สเปซที่ไม่มีอยู่
หมายเหตุ: ไม่มีความแตกต่างในการปล่อยคีย์สเปซและการลบคีย์สเปซ วางคีย์สเปซเท่ากับลบคีย์สเปซ
คุณสมบัติของคีย์สเปซและคีย์สเปซของระบบ
นอกเหนือจากการสร้างและทิ้งแล้วpingคำสั่งสามคำสั่งนี้ครอบคลุมงานเกี่ยวกับ keyspace ในชีวิตประจำวันเกือบทั้งหมดใน cqlsh
DESCRIBE KEYSPACES; DESCRIBE KEYSPACE University; USE University;
คำสั่งแรกจะแสดงรายการคีย์สเปซทั้งหมดในคลัสเตอร์ คำสั่งที่สองจะพิมพ์สคีมาทั้งหมดของคีย์สเปซหนึ่ง รวมถึงตารางต่างๆ และคำสั่งที่สามจะตั้งค่าคีย์สเปซปัจจุบันเพื่อให้ชื่อตารางไม่จำเป็นต้องมีคำนำหน้าอีกต่อไป
นอกเหนือจากคีย์สเปซของผู้ใช้แล้ว Cassandra เรือลำนี้มีคีย์สเปซของตัวเองอยู่หลายอัน คีย์สเปซเหล่านี้จะปรากฏในผลลัพธ์ของคำสั่ง DESCRIBE KEYSPACES และควรค่าแก่การจดจำมากกว่าการลบทิ้ง
- ระบบ: สถานะของโหนดภายในเครื่อง รวมถึงช่วงโทเค็นและโหนดเพื่อนร่วมเครือข่ายที่โหนดนั้นรู้จัก
- สคีมาระบบ: คำจำกัดความของคีย์สเปซ ตาราง คอลัมน์ และดัชนีทั้งหมดบนคลัสเตอร์
- การตรวจสอบสิทธิ์ระบบ: บทบาท สิทธิ์ และข้อมูลประจำตัวเมื่อเปิดใช้งานการตรวจสอบสิทธิ์
- ระบบกระจาย: ประวัติการซ่อมแซมและข้อมูลอื่นๆ ที่เกี่ยวข้องกับกลุ่มอาคารping.
- ระบบ_tracมันเป็น: สอบถาม tracถูกจับเมื่อ tracเปิดใช้งานแล้ว
สองประเด็นนี้สมควรได้รับการพิจารณาในขั้นตอนการผลิต การตรวจสอบสิทธิ์ระบบ โดยค่าเริ่มต้น keyspace จะถูกสร้างขึ้นด้วยปัจจัยการจำลองแบบ (replication factor) เท่ากับหนึ่ง หากโหนดนั้นสูญหาย จะไม่มีใครสามารถล็อกอินได้ ดังนั้นจึงควรเพิ่มปัจจัยการจำลองแบบให้ตรงกับคลัสเตอร์ สคีมาระบบ keyspace อธิบายว่าเหตุใดการเปลี่ยนแปลงสคีมาจึงต้องดำเนินการทีละรายการ เนื่องจากหากทำการเปลี่ยนแปลงพร้อมกันอาจทำให้เกิดเวอร์ชันสคีมาที่ขัดแย้งกันในโหนดต่างๆ
ข้อผิดพลาดและวิธีแก้ไข Keyspace ที่พบบ่อย
ข้อผิดพลาดเกี่ยวกับคีย์สเปซส่วนใหญ่มักแสดงข้อความสั้นๆ ที่เข้าใจได้ง่าย
| ความผิดพลาด | สาเหตุและวิธีแก้ไข |
|---|---|
| พื้นที่คีย์ที่ไม่รู้จัก | ไม่ได้เลือกคีย์สเปซใดๆ เรียกใช้คำสั่ง USE KeyspaceName หรือใส่คำนำหน้าตารางเป็น Keyspace.Table |
| ข้อผิดพลาดทางไวยากรณ์ที่ 'SimpleStrategy' | ชื่อกลยุทธ์ไม่ต้องใส่เครื่องหมายคำพูด ให้เขียน 'class': 'SimpleStrategy' โดยใส่เครื่องหมายคำพูดด้วย |
| ตัวเลือกกลยุทธ์ที่ไม่ได้รับการยอมรับ {replication_factor} | มีการใช้ replication_factor ร่วมกับ NetworkTopologyStrategy โดยกลยุทธ์ดังกล่าวจะใช้ค่าแฟกเตอร์ต่อชื่อศูนย์ข้อมูลแต่ละแห่งแทน |
| ไม่สามารถเพิ่มคีย์สเปซที่มีอยู่ได้ | พื้นที่คีย์นั้นมีอยู่แล้ว เพิ่มคำสั่ง IF NOT EXISTS หรือลบพื้นที่คีย์เก่าออกก่อน |
| ข้อมูลหายไปหลังจากเพิ่มค่าตัวประกอบการจำลองแบบ | เป็นไปตามที่คาดไว้ รันคำสั่ง nodetool repair บน keyspace เพื่อสร้าง replicas ใหม่ |
เมื่อสร้างคีย์สเปซเสร็จแล้ว ขั้นตอนต่อไปคือการกำหนดพื้นที่จัดเก็บข้อมูลภายในคีย์สเปซ ซึ่งจะกล่าวถึงในหัวข้อถัดไป Cassandra ตาราง เกี่ยวกับการสอน




