การโอนย้ายสำหรับ Java


86

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

คำตอบ:


9

ฉันใช้ SchemaUpdate ของ Hibernate เพื่อทำหน้าที่เดียวกับการย้ายข้อมูล จริงๆแล้วมันง่ายกว่าการย้ายข้อมูลเพราะทุกครั้งที่คุณเริ่มต้นแอพของคุณมันจะตรวจสอบโครงสร้างฐานข้อมูลและซิงค์กับการแมปของคุณดังนั้นจึงไม่มีการคราดเพิ่มเติม: db: ขั้นตอนการโยกย้ายและแอพของคุณจะไม่ซิงค์กับฐานข้อมูลที่กำลังทำงานอยู่ ต่อต้าน. ไฟล์การแมป Hibernate นั้นไม่ซับซ้อนไปกว่าการโยกย้าย Rails ดังนั้นแม้ว่าคุณจะไม่ได้ใช้ Hibernate ในแอปคุณก็สามารถใช้ประโยชน์จากมันได้ ข้อเสียคือมันไม่ยืดหยุ่นเท่าการย้อนกลับการโยกย้ายลงเรียกใช้คำสั่ง DML ตามที่ระบุไว้ในความคิดเห็นมันยังไม่วางตารางหรือคอลัมน์ ฉันเรียกใช้วิธีการแยกต่างหากเพื่อดำเนินการด้วยตนเองซึ่งเป็นส่วนหนึ่งของกระบวนการเริ่มต้นไฮเบอร์เนต

ฉันไม่เห็นว่าทำไมคุณไม่สามารถใช้การย้ายข้อมูล Rails ได้ตราบใดที่คุณไม่สนใจที่จะติดตั้งสแต็ก (Ruby, Rake, Rails) คุณก็ไม่ต้องแตะแอปของคุณ


22
มันไม่ซิงค์ 100% ไม่แก้ไขคอลัมน์ลบคอลัมน์หรือตารางลบ FKs เป็นต้น
cherouvim

89

สำหรับการเปรียบเทียบคุณสมบัติระหว่าง

  • ฟลายเวย์
  • ลิควิเบส
  • c5-db- การโยกย้าย
  • dbdeploy
  • mybatis
  • โยกย้าย db
  • migrate4j
  • dbmaintain
  • AutoPatch

ดูได้ที่http://flywaydb.org

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


2
เฮ้ฉันไม่รู้เรื่อง Flyway มันดูน่าสนใจมากและฉันจะดูให้ละเอียดยิ่งขึ้น ขอบคุณที่กล่าวถึง Flyway!
Pascal Thivent

@Pascal Thivent ขอบคุณสำหรับความคิดเห็นของคุณ! หากคุณประเมินมันฉันยินดีที่จะรับฟังความคิดเห็น / คำวิจารณ์ / ข้อเสนอแนะของคุณไม่ว่าจะที่นี่หรือในตัวติดตามปัญหาของ Flyway :-) ฉันจะดูการเพิ่ม DbMaintain ลงในเมทริกซ์เปรียบเทียบด้วยเพราะดูเหมือนว่าจะดีมาก คู่แข่ง ...
Axel Fontaine

แน่นอนฉันจะ และขอบคุณที่เพิ่ม DbMaintain ให้กับการเปรียบเทียบเป็นเรื่องดีมากที่มีเมทริกซ์แบบนี้
Pascal Thivent

3
ขอบคุณสำหรับการโพสต์สิ่งนี้ ฉันเพิ่งเริ่มใช้ Flyway วันนี้ ฉันเคยใช้ลิควิดเบสมาก่อนและในโครงการหนึ่งพวกเขารีดสารละลายของตัวเอง Flyway คือสิ่งที่ฉันคาดหวังว่าจะเป็นของเหลว ง่าย ๆ ไม่มี xml และฉันสามารถเขียนการย้ายข้อมูลที่ซับซ้อนมากขึ้นใน java สมบูรณ์แบบ. รอคอยที่จะสนับสนุนมด
nogridbag

1
เวอร์ชันปัจจุบันของเว็บไซต์ดูเหมือนจะเปรียบเทียบเฉพาะ Flyway, Liquibase และ MyBatis เท่านั้น การเปรียบเทียบแบบเต็มยังมีอยู่ที่อื่นหรือไม่?
Zero3



6

ฉันพบโพสต์นี้ในขณะที่ค้นคว้าคำถามเดียวกัน ฉันไม่ได้มาถึงข้อสรุปใด ๆ เกี่ยวกับเครื่องมือที่ดีที่สุดหรือวิธีการ แต่เครื่องมือหนึ่งที่ผมเคยเจอซึ่งยังไม่ได้รับการกล่าวถึงในคำตอบอื่น ๆ เพื่อให้ห่างไกลdbdeploy ฉันสนใจที่จะอ่านการเปรียบเทียบเครื่องมือเหล่านี้

แหล่งข้อมูลอื่น ๆ ที่เกี่ยวข้อง: โพสต์ที่ค่อนข้างเก่าของ Martin Fowler และ Pramod Sadalage เกี่ยวกับEvolutionary Database DesignและหนังสือRefactoring Databases: Evolutionary Database Designโดย Sadalage และ Scot Ambler


6

นอกจากนี้ยังมีการใช้งานการโอนย้ายแบบรางสำหรับ Java สองแบบ:

1) การโยกย้ายโดยใช้ Maven จากCarbon Five

2) งานมดจากHashrocket (รายการโปรดส่วนตัวของฉัน)

แม้ว่าแพ็คเกจเหล่านี้เขียนขึ้นสำหรับ Maven และ Ant โดยเฉพาะ แต่งานบางอย่างคุณสามารถปรับให้เข้ากับอะไรก็ได้


5
ไม่ได้สัมผัส Hashrocket ตั้งแต่ปี 2550 ผลิตภัณฑ์ c5-db-migration ของ Carbon Five ไม่ได้รับการอัปเดตตั้งแต่ปี 2010
สีเขียว

4

Migrate4jดูเหมือนจะเป็นผู้สมัคร แต่โปรเจ็กต์ยังดูไม่สมบูรณ์เพียงพอสำหรับการใช้งานจริง


2

นอกจากนี้ยังมีDbMaintainซึ่งได้รับการพัฒนาครั้งแรกภายในUnitilsแต่ปัจจุบันเป็นโครงการเฉพาะ เรากำลังใช้งานอยู่และพอใจมาก (ซึ่งไม่ได้หมายความว่าไม่มีทางเลือกอื่นที่ดี) ฉันแสดงรายการเพิ่มเติมในฐานข้อมูล +บุ๊กมาร์กการย้ายข้อมูล (โดยเน้นที่เครื่องมือที่รองรับ Maven)


1
เครื่องมือแบบนี้จะช่วยให้เราพัฒนาได้เร็วและปลอดภัย
Arthur Ronald

@ อาเธอร์ใช่มันเป็นสิ่งที่ดีมากที่เรามีเครื่องมือแบบนั้นด้วย การอัปเดตสคีมาแบบเรียงซ้อนจากสภาพแวดล้อมหนึ่งไปสู่อีกสภาพหนึ่งเป็นเรื่องที่น่ายินดีสำหรับเรา :)
Pascal Thivent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.