Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

วิธีการเลือกระหว่าง PostgreSQL และ CockroachDB

เผยแพร่ครั้งแรกเมื่อวันที่ 15 ส.ค. 2019 ที่ ObjectRocket.com/blog

เนื่องจาก CockroachDB® และ PostgreSQL® ได้รวมตัวกันในตลาดเมื่อพูดถึงปริมาณงานเชิงสัมพันธ์ ผู้คนจำนวนมากเริ่มถามว่าควรเลือกอะไร CockroachDB นำเสนอ SQL ระดับโลกอย่างแท้จริงด้วยธุรกรรมแบบกระจายและการปรับสเกลการอ่าน/เขียนแนวนอนในตัวสำหรับขนาดที่ไม่เคยมีมาก่อน ความยืดหยุ่น และประสิทธิภาพสำหรับเวิร์กโหลด SQL อย่างไรก็ตาม ยังมีบางสถานการณ์ที่ PostgreSQL อาจเหมาะสมกว่า

วิธีการเลือกระหว่าง PostgreSQL และ CockroachDB

ความคล้ายคลึงระหว่าง CockroachDB และ PostgreSQL

เทคโนโลยีทั้งสองนี้ทับซ้อนกันเล็กน้อย อย่างแรกเลย ทั้งสองโม้:

  • การปฏิบัติตามข้อกำหนดของ SQL
  • ธุรกรรมกรด
  • ความเข้ากันได้ของโปรโตคอลสาย PostgreSQL
  • โปรแกรมควบคุมไคลเอ็นต์แบบกว้างและการสนับสนุน ORM

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

โดยมีข้อยกเว้นเพียงไม่กี่ข้อ

ต้องการตรวจสอบ CockroachDB แต่ตัดสินใจว่า PostgreSQL เหมาะสมกว่าหรือไม่ โอกาสค่อนข้างดีที่คุณจะไม่ประสบปัญหาใดๆ คุณมีแอปที่ทำงานบน PostgreSQL แต่คุณกำลังมองหาการปรับขนาดและเฟลโอเวอร์ที่ดีกว่าไหม CockroachDB อาจเหมาะสมกว่า

ตัวแตกต่างที่จะช่วยคุณตัดสินใจ

ความเข้ากันได้ การสืบค้นที่ซับซ้อน มาตราส่วน และความยืดหยุ่นอาจช่วยให้คุณเลือกตัวเลือกใดตัวเลือกหนึ่งได้

สเกล

ความแตกต่างที่ใหญ่ที่สุดคือวิธีที่ผลิตภัณฑ์จัดการกับการปรับขนาด การจำลองแบบ และความพร้อมใช้งานสูง (HA) CockroachDB สร้างขึ้นจากพื้นฐานเพื่อให้ฐานข้อมูล SQL ทั่วโลกพร้อมธุรกรรมแบบกระจาย คุณสามารถกระจายข้อมูลของคุณทั่วทั้งคลาวด์และภูมิภาคด้วยการควบคุมที่ละเอียดถี่ถ้วนว่าข้อมูลใดบ้างที่ได้รับอนุญาตให้อยู่ในแต่ละภูมิภาคหรือบนคลาวด์ แม้ว่าจะมีโซลูชันและส่วนขยายสำหรับการให้ฟังก์ชันการทำงานที่เหมือนกันกับ PostgreSQL แต่ก็ไม่ได้สมบูรณ์และกำหนดค่าได้ไม่ง่ายนัก และจัดการ

การมุ่งเน้นของ CockroachDB ในระดับโลกช่วยให้เป็นมิตรกับคลาวด์มากขึ้น CockroachDB คาดว่าจะมีโหนดขนาดเล็กและแบบใช้แล้วทิ้งจำนวนมาก ดังนั้นการปรับขนาดและ HA จึงสามารถจัดการเบื้องหลังได้อย่างง่ายดายสำหรับคุณ

ในทางกลับกัน PostgreSQL มีโซลูชันมากมายสำหรับ multi-master, scaling และ HA แต่ฟังก์ชันส่วนใหญ่นั้นไม่รวมอยู่ใน PostgreSQL และต้องการส่วนขยายของบุคคลที่สาม นอกจากนี้ การตั้งค่า การกำหนดค่า และการจัดการแบบวันต่อวันยังซับซ้อนกว่าเล็กน้อยสำหรับการปรับใช้ HA PostgreSQL

ความยืดหยุ่น

ประโยชน์ที่แท้จริงของ PostgreSQL คือหลายปีของการต่อสู้ที่แข็งแกร่งและขอบเขตของการปรับแต่งและส่วนขยาย เพียงเปรียบเทียบเอกสารประกอบสำหรับการกำหนดค่าเซิร์ฟเวอร์บน PostgreSQL แล้วคุณจะเห็นตัวเลือกมากมายและพารามิเตอร์การปรับแต่งสำหรับคลัสเตอร์ของคุณ ต้องการระดับการแยก? คุณมีสี่ตัวเลือก ในขณะที่ CockroachDB ให้ตัวเลือกเดียวเท่านั้น ต้องการการจำลองแบบ? PostgreSQL มีทางเลือกถึง 8 ทาง ในขณะที่ CockroachDB จัดการอยู่เบื้องหลัง

PostgreSQL ยังเสนอระบบนิเวศส่วนขยายขนาดใหญ่เพื่อขยายผลิตภัณฑ์ มีส่วนขยายหลายร้อยรายการต่อสาธารณะ และคุณสามารถเขียนส่วนขยายของคุณเองได้ ช่วงเหล่านี้มีตั้งแต่การเพิ่มการจัดกลุ่ม (เช่น Citus) ไปจนถึงวัตถุใหม่ (postGIS) ไปจนถึงการปรับ PostgreSQL ให้เหมาะสมสำหรับกรณีการใช้งานเฉพาะ (Timescale) ความยืดหยุ่นนี้มาพร้อมกับค่าใช้จ่ายอย่างแน่นอน มันสามารถทำให้เกิดความซับซ้อนและส่งผลกระทบต่อประสิทธิภาพและความเสถียรของอินสแตนซ์ของคุณ คุณอาจจบลงด้วยการกำหนดค่าสภาพแวดล้อมของคุณผิดพลาด วิธี CockroachDB ช่วยลดความซับซ้อนของสิ่งต่างๆ เพื่อให้การสร้างและจัดการคลัสเตอร์ตรงไปตรงมา

ความเข้ากันได้

หากคุณต้องการความสอดคล้องของ PostgreSQL หรือ SQL ที่สมบูรณ์กว่า PostgreSQL เป็นทางเลือกที่ดีกว่า ไม่ว่าคุณจะมีแอปรุ่นเก่าหรือต้องการแบ็กเอนด์สโตร์สำหรับ CMS มาตรฐานหรือเฟรมเวิร์กของเว็บ อาจมีการพึ่งพา PostgreSQL หรือ SQL อย่างมากที่ Cockroach อาจยังไม่รองรับ แม้ว่า Cockroach Labs ยังคงเพิ่มคุณสมบัติและฟังก์ชันการทำงานเพิ่มเติมให้กับผลิตภัณฑ์ แต่ก็ยังไม่สามารถใช้งานร่วมกับ PostgreSQL ได้ 100% อีกด้านที่คุณอาจเห็นความแตกต่างคือวิธีที่ CockroachDB จัดการกับบทบาท ผู้ใช้ กลุ่ม และการตรวจสอบสิทธิ์ ตัวเลือก PostgreSQLaauthentication นั้นแข็งแกร่งมาก และแม้ว่าCockroachDB จะเสนอ RBAC แต่ก็มีความแตกต่างที่สำคัญระหว่างสองเทคโนโลยี

คุณสามารถเอาชนะความท้าทายด้านความเข้ากันได้ แต่ท้ายที่สุดก็ขึ้นอยู่กับแอปและความสามารถในการระบุและจัดการกับความเข้ากันไม่ได้ที่อาจเกิดขึ้น

ข้อความค้นหาที่ซับซ้อน

พื้นที่ที่ Cockroach Labs ได้ทุ่มเทความพยายามอย่างมากคือความสามารถในการเข้าร่วมและปรับปรุงประสิทธิภาพด้วยเครื่องมือเพิ่มประสิทธิภาพการสืบค้น SQL ที่อิงตามต้นทุน อย่างไรก็ตาม หากคุณมี Business Intelligence หรือภาระงานด้านการวิเคราะห์ที่มีการสืบค้นที่ซับซ้อนมากและการเข้าร่วม มุมมอง การรวมกลุ่ม และการประเมินนิพจน์หลายรายการ PostgreSQL อาจเป็นตัวเลือกที่ดีกว่า

นี่คือพื้นที่ที่คุณสามารถทดสอบได้อย่างง่ายดายด้วยการประเมินหรือการพิสูจน์แนวคิด ยิ่งกรณีการใช้งานของคุณเข้าใกล้การสืบค้นข้อมูลเชิงวิเคราะห์และ OLAP มากเท่าใด PostgreSQL อาจเป็นทางออกที่ดีกว่า ด้วยธุรกรรมแบบ OLTP ที่รวดเร็ว CockroachDB สามารถช่วยได้มากที่สุด

การเปรียบเทียบโดยย่อ

CockroachDB PostgreSQL
ปีที่วางจำหน่าย 2015 2539
เวอร์ชันเสถียรในปัจจุบัน 20.1.0 13
การออกใบอนุญาต ส่วนประกอบหลักของ Business Source License BSL ใบอนุญาตชุมชนแมลงสาบ CCLenterprise มีใบอนุญาต PostgreSQL ใบอนุญาต PostgreSQL
SQ:ความสอดคล้อง* ความสอดคล้องทั้งหมดหรือบางส่วนด้วยคุณลักษณะ ~244 SQL:2011 สอดคล้องกับคุณสมบัติ ~385 SQL:2011
คะแนนโบนัส การเปลี่ยนแปลงสคีมาออนไลน์ ธุรกรรมแบบกระจาย กระบวนงานที่เก็บไว้ เคอร์เซอร์ ทริกเกอร์ มุมมองที่เป็นรูปธรรม
Wire Protocol โปรโตคอลสาย PostgreSQL โปรโตคอลสาย PostgreSQL
ไดรเวอร์ไคลเอ็นต์ ตัวเลือกที่ผ่านการทดสอบบวกกับระบบนิเวศขนาดใหญ่เนื่องจากโปรโตคอลสาย PostgreSQL ระบบนิเวศขนาดใหญ่ของไดรเวอร์อย่างเป็นทางการและชุมชน
ความเข้ากันได้ของ CMS/เฟรมเวิร์ก บางส่วน ผ่านความเข้ากันได้ของสาย PostgreSQL รองรับและเข้ากันได้อย่างกว้างขวางสำหรับเฟรมเวิร์กหลัก
ปลั๊กอิน/ส่วนขยาย ชุดคุณลักษณะสำหรับองค์กร ระบบนิเวศขนาดใหญ่ของการขยายชุมชน
การจำลองแบบ/HA มีในตัว ผ่านโอเพ่นซอร์สเพิ่มเติม/ส่วนขยาย
หลายมาสเตอร์/คลัสเตอร์ มีในตัว ผ่านโอเพ่นซอร์สเพิ่มเติม/ส่วนขยาย
ศูนย์ข้อมูลหลายศูนย์/ภูมิศาสตร์ มีในตัว กำหนดเองหรือผ่านการเพิ่ม/ส่วนขยายโอเพนซอร์ส
การตรวจสอบสิทธิ์ รหัสผ่าน ใบรับรอง รหัสผ่าน, ใบรับรอง, GSSAPI, SSPI, รหัส, LDAP, RADIUS, PAM, BSD
การอนุญาต สิทธิ์ตามผู้ใช้และ RBAC RBAC พร้อมสิทธิ์ระดับแถวและคอลัมน์ รองรับสิทธิ์ SQL:2011 เต็มรูปแบบ
จุดแข็ง การปรับขนาดแบบ Cloud-native ความพร้อมใช้งานสูง การกระจายทางภูมิศาสตร์ การกำหนดค่าและการปรับใช้ที่ตรงไปตรงมา ความยืดหยุ่น การปรับแต่ง ความเข้ากันได้ และระบบนิเวศ
จุดอ่อน เวลาแฝงและความสมบูรณ์ของการสนับสนุน/คุณลักษณะของ SQL ความซับซ้อนตามขนาด ประสิทธิภาพการอ่าน
บทสรุป เลือก CockroachDB เมื่อคุณสร้างปริมาณงานแบบ OLTP ที่มีการทำธุรกรรมสูง หรือความสามารถในการขยายขนาด (ในพื้นที่หรือทั่วโลก) เป็นสิ่งสำคัญ เลือก PostgreSQL หากภาระงานของคุณมีการสืบค้นข้อมูลวิเคราะห์ที่หนักกว่า หรือคุณต้องการเข้าถึงชุดคุณลักษณะขนาดใหญ่ ระบบนิเวศ และแอปที่เข้ากันได้

* เนื่องจากไม่มีที่เก็บข้อมูลที่ฉันรู้ 100% ว่าสอดคล้องกับข้อมูลจำเพาะของ SQL:2011 ทั้งหมด ฉันจึงเพียงแค่ดูว่าแต่ละผลิตภัณฑ์รองรับสเป็คมากเพียงใด

คุณมีสองทางเลือกที่ดีก่อนคุณ ทั้งสองสามารถใช้ร่วมกันเพื่อสร้างพอร์ตโฟลิโอคลังข้อมูลที่น่าทึ่ง หากคุณกำลังสร้างจากศูนย์ในวันนี้ และคุณไม่มีความต้องการเฉพาะและความต้องการเฉพาะของ PostgreSQL และการปรับขนาด ให้มองอย่างจริงจังที่ CockroachDB เป็นโอกาสที่น่าทึ่ง อย่างไรก็ตาม หากคุณทราบแล้วว่าต้องการอะไรและต้องการมุ่งเน้นไปที่ความยืดหยุ่นในวงกว้างของ PostgreSQL เราก็สามารถช่วยได้เช่นกัน

ทั้ง PostgreSQL และ CockroachDB พร้อมใช้งานแล้ว ค้นหาสิ่งที่ใช่สำหรับคุณ

บทสรุป

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิกแชทขาย เพื่อแชทตอนนี้และเริ่มการสนทนา