ดูเหมือนว่าคุณจะมีสมมติฐานมากมายซึ่งอาจขึ้นอยู่กับประสบการณ์ของคุณกับ SVN และ CVS
Git และ Mercurial นั้นเหมือนกับ SVN และ CVS
การเปรียบเทียบ git และ CVS เปรียบเสมือนการเปรียบเทียบ iPad กับ Atari CVS ถูกสร้างขึ้นกลับเมื่อ dinoaurs ทั่วโลก การโค่นล้มนั้นเป็นรุ่นปรับปรุงของ CVS สมมติว่าระบบควบคุมเวอร์ชันที่ทันสมัยเช่น git และ Mercurial ทำงานเหมือนพวกมันมีเหตุผลน้อยมาก
ฐานข้อมูลเชิงสัมพันธ์มีประสิทธิภาพมากกว่าฐานข้อมูลแบบจุดประสงค์เดียว
ทำไม? ฐานข้อมูลเชิงสัมพันธ์จะจริงๆซับซ้อนและอาจจะไม่เป็นที่มีประสิทธิภาพฐานข้อมูลวัตถุประสงค์เดียว ความแตกต่างบางอย่างอยู่ด้านบนของหัวของฉัน:
- ระบบควบคุมเวอร์ชันไม่ต้องการการล็อคที่ซับซ้อนเนื่องจากคุณไม่สามารถทำหลายคอมมิตในเวลาเดียวกันได้
- ระบบควบคุมเวอร์ชันแจกจ่ายต้องมีพื้นที่ที่มีประสิทธิภาพอย่างมากเนื่องจากฐานข้อมูลโลคัลเป็นสำเนาทั้งหมดของ repo
- ระบบควบคุมเวอร์ชันจำเป็นต้องค้นหาข้อมูลด้วยวิธีการเฉพาะสองสามอย่าง (โดยผู้แต่งโดยใช้รหัสการแก้ไขบางครั้งการค้นหาข้อความแบบเต็ม) การสร้างฐานข้อมูลของคุณเองที่สามารถจัดการการค้นหาผู้แต่ง / การแก้ไข ID นั้นเป็นเรื่องเล็กน้อยและการค้นหาข้อความแบบเต็มไม่ได้รวดเร็วมากในฐานข้อมูลเชิงสัมพันธ์ที่ฉันได้ลอง
- ระบบควบคุมเวอร์ชันจำเป็นต้องทำงานกับหลายแพลตฟอร์ม สิ่งนี้ทำให้ยากต่อการใช้ฐานข้อมูลที่ต้องติดตั้งและใช้งานเป็นบริการ (เช่น MySQL หรือ PostgreSQL)
- ระบบควบคุมเวอร์ชันในเครื่องท้องถิ่นของคุณจะต้องทำงานเมื่อคุณทำอะไรบางอย่าง (เช่นการส่ง) การออกจากบริการเช่น MySQL ทำงานอยู่ตลอดเวลาในกรณีที่คุณต้องการทำคอมมิชชันจะสิ้นเปลือง
- ส่วนใหญ่ระบบควบคุมเวอร์ชันไม่ต้องการลบประวัติเพียงต่อท้าย ซึ่งอาจนำไปสู่การปรับให้เหมาะสมต่างกันและวิธีการต่าง ๆ ในการปกป้องความซื่อสัตย์
ฐานข้อมูลเชิงสัมพันธ์ปลอดภัยยิ่งขึ้น
อีกครั้งทำไม ดูเหมือนว่าคุณจะสันนิษฐานว่าเนื่องจากข้อมูลถูกเก็บไว้ในไฟล์ระบบควบคุมเวอร์ชันเช่น git และ Mercurial ไม่มีพันธะปรมาณูแต่ก็ทำเช่นนั้น ฐานข้อมูลเชิงสัมพันธ์ยังเก็บฐานข้อมูลเป็นไฟล์ เป็นที่น่าสังเกตว่า CVS ไม่ได้ทำพันธะอะตอม แต่เป็นไปได้ว่ามันมาจากยุคมืดไม่ใช่เพราะพวกเขาไม่ได้ใช้ฐานข้อมูลเชิงสัมพันธ์
นอกจากนี้ยังมีปัญหาในการปกป้องข้อมูลจากความเสียหายเมื่ออยู่ในฐานข้อมูลและคำตอบก็เหมือนกัน หากระบบไฟล์เสียหายก็ไม่สำคัญว่าคุณใช้ฐานข้อมูลใดอยู่ หากระบบไฟล์ไม่เสียหายกลไกฐานข้อมูลของคุณอาจเสียหาย ฉันไม่เห็นว่าทำไมฐานข้อมูลการควบคุมเวอร์ชันจะมีความเสี่ยงมากกว่าฐานข้อมูลเชิงสัมพันธ์
ฉันจะยืนยันว่าระบบควบคุมเวอร์ชันแบบกระจาย (เช่น git และ Mercurial) ดีกว่าสำหรับการปกป้องฐานข้อมูลของคุณมากกว่าการควบคุมเวอร์ชันรวมศูนย์เนื่องจากคุณสามารถกู้คืน repo ทั้งหมดจากโคลนใดก็ได้ ดังนั้นถ้าเซิร์ฟเวอร์กลางของคุณเป็นธรรมชาติ combusts พร้อมกับทั้งหมดของการสำรองข้อมูลของคุณคุณสามารถเรียกคืนได้โดยการทำงานgit init
บนเซิร์ฟเวอร์ใหม่แล้วgit push
จากเครื่องของนักพัฒนาซอฟต์แวร์ใด ๆ
การประกอบล้อใหม่ไม่ดี
เพียงเพราะคุณสามารถใช้ฐานข้อมูลเชิงสัมพันธ์สำหรับการจัดเก็บปัญหาใด ๆ ไม่ได้หมายความว่าคุณควร เหตุใดคุณจึงใช้ไฟล์กำหนดค่าแทนที่จะเป็นฐานข้อมูลเชิงสัมพันธ์ ทำไมต้องเก็บอิมเมจบนระบบไฟล์เมื่อคุณสามารถจัดเก็บข้อมูลในฐานข้อมูลเชิงสัมพันธ์ได้? เหตุใดจึงต้องเก็บรหัสของคุณไว้ในระบบแฟ้มเมื่อคุณสามารถจัดเก็บได้ทั้งหมดในฐานข้อมูลเชิงสัมพันธ์
"ถ้าสิ่งที่คุณมีคือค้อนทุกสิ่งดูเหมือนเป็นเล็บ"
นอกจากนี้ยังมีความจริงที่ว่าโครงการโอเพนซอร์สสามารถจ่ายได้บูรณาการล้อเมื่อใดก็ตามที่มันสะดวกเนื่องจากคุณไม่ได้มีชนิดเดียวกันของข้อ จำกัด ของทรัพยากรที่จะทำโครงการเชิงพาณิชย์ หากคุณมีอาสาสมัครที่มีความเชี่ยวชาญในการเขียนฐานข้อมูลแล้วทำไมไม่ใช้พวกเขา
สำหรับเหตุผลที่เราจะไว้วางใจนักเขียนของระบบการควบคุมการแก้ไขที่จะรู้ว่าสิ่งที่พวกเขากำลังทำ .. ฉันไม่สามารถพูด VCS อื่น ๆ แต่ผมค่อนข้างมั่นใจว่าLinus Torvalds เข้าใจระบบไฟล์
เหตุใดระบบควบคุมเวอร์ชันเชิงพาณิชย์บางรุ่นจึงใช้ฐานข้อมูลเชิงสัมพันธ์
มีโอกาสมากที่สุดที่จะรวมกันดังต่อไปนี้:
- นักพัฒนาบางคนไม่ต้องการเขียนฐานข้อมูล
- นักพัฒนาระบบควบคุมเวอร์ชันเชิงพาณิชย์มีข้อ จำกัด ด้านเวลาและทรัพยากรดังนั้นพวกเขาจึงไม่สามารถที่จะเขียนฐานข้อมูลเมื่อพวกเขามีบางสิ่งที่ใกล้เคียงกับสิ่งที่พวกเขาต้องการอยู่แล้ว นอกจากนี้นักพัฒนามีราคาแพงและผู้พัฒนาฐานข้อมูล (เช่นคนที่เขียนฐานข้อมูล) อาจมีราคาแพงกว่าเนื่องจากคนส่วนใหญ่ไม่มีประสบการณ์แบบนั้น
- ผู้ใช้ระบบควบคุมเวอร์ชันเชิงพาณิชย์มีโอกาสน้อยที่จะใส่ใจเกี่ยวกับค่าใช้จ่ายในการตั้งค่าและใช้งานฐานข้อมูลเชิงสัมพันธ์เนื่องจากพวกเขามีอยู่แล้ว
- ผู้ใช้ระบบควบคุมเวอร์ชันเชิงพาณิชย์มีแนวโน้มที่จะต้องการฐานข้อมูลเชิงสัมพันธ์สนับสนุนข้อมูลการแก้ไขเนื่องจากอาจรวมเข้ากับกระบวนการที่ดีกว่า (เช่นการสำรองข้อมูลเป็นต้น)