เผยแพร่ครั้งแรกเมื่อวันที่ 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 อาจเป็นตัวเลือกที่ดีกว่า
ความคล้ายคลึงระหว่าง 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 เพื่อแชททันทีและเริ่มสนทนาได้