Di chuyển cho Java


85

Tôi sử dụng cả ruby ​​trên rails và Java. Tôi thực sự thích sử dụng di chuyển khi tôi đang làm việc trong một dự án đường ray. vì vậy tôi tự hỏi liệu có một công cụ di chuyển giống như cho Java không? Nếu không có công cụ này, bạn có nên sử dụng chuyển đổi như một công cụ để kiểm soát cơ sở dữ liệu được sử dụng bởi một dự án Java không?

Câu trả lời:


8

Tôi đã sử dụng SchemaUpdate của Hibernate để thực hiện chức năng tương tự như di chuyển. Nó thực sự dễ dàng hơn di chuyển vì mỗi khi bạn khởi động ứng dụng của mình, nó sẽ kiểm tra cấu trúc cơ sở dữ liệu và đồng bộ hóa nó với các ánh xạ của bạn, do đó không có thêm bất kỳ bước nào: db: migrate và ứng dụng của bạn không bao giờ có thể không đồng bộ với cơ sở dữ liệu mà nó đang chạy chống lại. Các tệp ánh xạ Hibernate không phức tạp hơn so với việc di chuyển Rails nên ngay cả khi bạn không sử dụng Hibernate trong ứng dụng, bạn vẫn có thể tận dụng nó. Nhược điểm là nó không linh hoạt như cuộn lùi, di chuyển xuống, chạy các câu lệnh DML. Như đã chỉ ra trong các nhận xét, nó cũng không làm rớt bảng hoặc cột. Tôi chạy một phương pháp riêng để thực hiện những điều đó theo cách thủ công như một phần của quá trình khởi tạo Hibernate.

Tuy nhiên, tôi không hiểu tại sao bạn không thể sử dụng di chuyển Rails - miễn là bạn không ngại cài đặt ngăn xếp (Ruby, Rake, Rails), bạn sẽ không phải động đến ứng dụng của mình.


22
Nó không đồng bộ hóa nó 100%. Nó không cột alter, cột xóa hoặc bảng, FKS remove, vv
cherouvim

88

Để so sánh tính năng giữa

  • Đường bay
  • Liquibase
  • c5-db -igration
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • Vá tự động

hãy xem http://flywaydb.org

Đây sẽ là một khởi đầu tốt cho bạn và bất kỳ ai khác để chọn công cụ phù hợp cho công việc


2
Này, tôi không biết về Flyway. Nó trông khá thú vị và tôi sẽ xem xét kỹ hơn. Cảm ơn bạn đã đề cập đến Flyway!
Pascal Thivent

@Pascal Thivent Cảm ơn bạn đã bình luận! Nếu bạn đánh giá nó, tôi rất vui khi nghe ý kiến ​​/ chỉ trích / đề xuất của bạn về nó, ở đây hoặc trong trình theo dõi vấn đề của Flyway :-) Tôi cũng sẽ xem xét thêm DbMaintain vào ma trận so sánh vì nó trông giống như một đối thủ cạnh tranh ...
Axel Fontaine

Chắc chắn, tôi sẽ. Và cảm ơn vì đã thêm DbMaintain vào so sánh, thật tuyệt khi có một ma trận như vậy.
Pascal Thivent,

3
Cảm ơn vì đã đăng bài này. Tôi mới bắt đầu sử dụng Flyway hôm nay. Trước đây tôi đã sử dụng liquibase và trong một dự án, họ đã đưa ra giải pháp của riêng mình. Flyway là những gì tôi đã mong đợi liquibase. Đơn giản, không có xml và tôi có thể viết các di chuyển phức tạp hơn trong java. Hoàn hảo. Mong ae ủng hộ.
nogridbag

1
Phiên bản hiện tại của trang web dường như chỉ so sánh Flyway, Liquibase và MyBatis. Bản so sánh đầy đủ vẫn còn ở nơi khác chứ?
Zero3


10

Grails có một tiện ích dbmigrate được tạo mẫu sau tiện ích từ Rails. Vì nó được triển khai trong Groovy, bạn sẽ có thể sử dụng nó từ bất kỳ dự án Java nào của mình.


6

Tôi đã xem qua bài đăng này trong khi nghiên cứu câu hỏi tương tự. Tôi vẫn chưa đưa ra kết luận nào về công cụ hoặc cách tiếp cận tốt nhất, nhưng một công cụ mà tôi đã gặp mà chưa được đề cập trong các câu trả lời khác cho đến nay là dbdeploy . Tôi muốn đọc bất kỳ so sánh nào của các công cụ này.

Một số tài nguyên liên quan khác: bài đăng có phần cũ kỹ của Martin Fowler và Pramod Sadalage về Thiết kế cơ sở dữ liệu tiến hóa , và cuốn sách Tái cấu trúc cơ sở dữ liệu: Thiết kế cơ sở dữ liệu tiến hóa của Sadalage và Scot Ambler.


6

Ngoài ra còn có hai triển khai độc lập của di chuyển giống như đường ray cho Java:

1) Di cư dựa trên Maven từ Carbon Five

2) Nhiệm vụ dựa trên kiến ​​từ Hashrocket (yêu thích cá nhân của tôi)

Mặc dù các gói này được viết riêng cho Maven và Ant, nhưng với một số công việc, bạn có thể điều chỉnh chúng thành bất cứ thứ gì.


5
Hashrocket đã không được đề cập từ năm 2007. Sản phẩm c5-db-moving của Carbon Five đã không được cập nhật kể từ năm 2010.
Green

4

Migrate4j có vẻ là một ứng cử viên, nhưng dự án có vẻ không đủ trưởng thành để sử dụng trong sản xuất.


2

Ngoài ra còn có DbMaintain đã được phát triển ban đầu bên trong Unitils nhưng bây giờ là một dự án chuyên dụng. Chúng tôi hiện đang sử dụng nó và rất hài lòng (không có nghĩa là không có bất kỳ lựa chọn thay thế nào tốt). Tôi liệt kê thêm chúng trong cơ sở dữ liệu + dấu trang di chuyển của mình (tập trung vào các công cụ hỗ trợ Maven).


1
Các công cụ như rằng sẽ giúp chúng ta phát triển nhanh hơn và an toàn
Arthur Ronald

@Arthur Vâng, rất tốt khi chúng tôi cũng có một số công cụ như vậy. Cascading cập nhật giản đồ từ một môi trường để người kia bây giờ là một niềm vui đối với chúng tôi :)
Pascal Thivent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.