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

การเลือกระหว่าง PostgreSQL และ CockroachDB: คู่มือปฏิบัติจริง

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

เมื่อ CockroachDB® และ PostgreSQL® ได้鞏固ตำแหน่งในตลาดเมื่อพูดถึง relational workloads หลายคนเริ่มถามว่าควรเลือกตัวไหน CockroachDB ให้ true global-scale SQL พร้อม distributed transactions และ horizontal read/write scaling ในตัวสำหรับ scale, resiliency และ performance ที่ไม่เคยมีมาก่อนสำหรับ SQL workloads อย่างไรก็ตาม ยังมีบางสถานการณ์ที่ PostgreSQL อาจเป็นตัวเลือกที่ดีกว่า

การเลือกระหว่าง PostgreSQL และ CockroachDB: คู่มือปฏิบัติจริง

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

เทคโนโลยีทั้งสองทับซ้อนกันมาก ที่สำคัญที่สุด ทั้งคู่:

  • SQL compliance
  • ACID transactions
  • PostgreSQL wire protocol compatibility
  • Broad client driver และ ORM support

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

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

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

Compatibility, complex queries, scale และ flexibility อาจช่วยให้คุณเลือกตัวเลือกหนึ่งเหนืออีกตัว

Scale

ความแตกต่างที่ใหญ่ที่สุดคือวิธีที่ผลิตภัณฑ์จัดการ scaling, replication และ high availability (HA) CockroachDB สร้างขึ้นตั้งแต่พื้นฐานเพื่อให้ global SQL datastore พร้อม distributed transactions คุณสามารถกระจายข้อมูลข้าม clouds และ regions ด้วยการควบคุมละเอียดเกี่ยวกับข้อมูลที่อนุญาตให้อยู่ในแต่ละ region หรือ cloud แม้จะมีโซลูชันและ extensions สำหรับให้ฟังก์ชันเดียวกันกับ PostgreSQL แต่ไม่สมบูรณ์และไม่ตรงไปตรงมาในการกำหนดค่าและจัดการเท่าไหร่

ความมุ่งมั่นของ CockroachDB ใน global scale ทำให้มัน cloud-friendly มากขึ้น CockroachDB คาดหวังจำนวนโหนดเล็กๆ ที่ทิ้งได้มาก ดังนั้น scaling และ HA จึงถูกจัดการอย่างง่ายดายเบื้องหลังให้คุณโดยอัตโนมัติ

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

Flexibility

ข้อดีจริงของ PostgreSQL คือหลายปีของ battle hardening และขอบเขตของ tunables และ extensions เพียงเปรียบเทียบเอกสาร Server Configuration บน PostgreSQL คุณจะเห็นตัวเลือกและพารามิเตอร์การปรับแต่งมากมายสำหรับเคลสเตอร์ของคุณ ต้องการ Isolation levels? คุณมี 4 ตัวเลือก ในขณะที่ CockroachDB ให้แค่หนึ่ง ต้องการ replication? PostgreSQL ให้ 8 ทางเลือก ในขณะที่ CockroachDB จัดการเบื้องหลัง

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

Compatibility

หากคุณต้องการ PostgreSQL ความสมบูรณ์หรือ SQL conformance ที่มากขึ้น PostgreSQL เป็นพนันที่ดีกว่า ไม่ว่าคุณจะมี legacy app หรือต้องการ backend store สำหรับ CMS หรือ web framework มาตรฐาน อาจมีการพึ่งพามุมมองของ PostgreSQL หรือ SQL ที่ Cockroach อาจไม่รองรับหรือยัง แม้ Cockroach Labs จะเพิ่มฟีเจอร์และฟังก์ชันมากขึ้นเรื่อยๆ แต่ยังไม่ compatible 100% กับ PostgreSQL อีกพื้นที่ที่คุณอาจเห็นความแตกต่างคือวิธีที่ CockroachDB จัดการ roles, users, groups และ authentication ตัวเลือกการรับรองความถูกต้องของ PostgreSQL แข็งแกร่งมาก และแม้ CockroachDB จะเสนอ RBAC แต่มีความแตกต่างที่สำคัญระหว่างสองเทคโนโลยี

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

Complex queries

พื้นที่ที่ Cockroach Labs ลงทุนมากคือความสามารถในการทำ joins และปรับปรุงประสิทธิภาพด้วย cost-based SQL query optimizer ของพวกเขา อย่างไรก็ตาม หากคุณมี Business Intelligence หรือ analytics workload ที่มีคำขอซับซ้อนมาก multiple joins, views, aggregations และ expression evaluations PostgreSQL อาจเป็นตัวเลือกที่ดีกว่า

นี่เป็นพื้นที่ที่คุณสามารถทดสอบได้ง่ายด้วย evaluation หรือ proof of concept ยิ่ง use case ของคุณ傾斜ไป analytics queries และ OLAP PostgreSQL อาจเป็นพนันที่ดีกว่า ด้วย quick OLTP-style transactions CockroachDB ช่วยได้มากที่สุด

สรุปการเปรียบเทียบ

CockroachDB PostgreSQL
Year of initial release 2015 1996
Current Stable Version 20.1.0 13
Licensing Business Source License BSL core components. Cockroach Community License CCLenterprise features PostgreSQL License PostgreSQL License
SQ: Conformance* Full or partial conformance with ~244 SQL:2011 features Conforms with ~385 SQL:2011 features
Bonus points Online Schema changes, distributed transactions Stored procedures, cursors, triggers, materialized views
Wire Protocol PostgreSQL wire protocol PostgreSQL wire protocol
Client Drivers Tested options plus large ecosystem due to PostgreSQL wire protocol Large ecosystem of official and community provided drivers
CMS/Framework Compatibility Partial, via PostgreSQL wire compatibility Broad support and compatibility for major frameworks
Plugins/Extensions Enterprise feature pack Large ecosystem of community extensions
Replication/HA Yes, built-in Via open source additions/extensions
Multi-Master/Clustering Yes, built-in Via open source additions/extensions
Multi-Datacenter/Geo Yes, built-in Custom or via open source additions/extensions
Authentication Password, Certificate Password, Certificate, GSSAPI, SSPI, Ident, LDAP, RADIUS, PAM, BSD
Permissions User-based permissions and RBAC RBAC with row and column level permissions, full SQL:2011 privilege support
Strengths Cloud-native scaling, high availability, geo-distribution, straightforward configuration and deployment Flexibility, tunability, compatibility, and ecosystem
Weaknesses Latency and richness of SQL support/features Complexity at scale, read performance
The Bottom Line Choose CockroachDB when you are building a highly transactional, OLTP-style workload, or the ability to scale out (locally or globally) is important Choose PostgreSQL if your workload includes heavier analytics queries or you need access to a huge feature set, ecosystem, and compatible apps

* เนื่องจากไม่มี datastore ที่ผมรู้จัก 100% conforms กับ full SQL:2011 spec ผมเพียงดูว่าแต่ละผลิตภัณฑ์รองรับ spec มากน้อยแค่ไหน

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

PostgreSQL และ CockroachDB พร้อมใช้งานตอนนี้ หาว่าตัวไหนเหมาะกับคุณ

สรุป

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