2009-07-24 29 views
5

Tôi đang làm việc trên một dự án cho một công ty, nơi tôi cần di chuyển dữ liệu trước đó của nó vào một hệ thống mới. Rõ ràng cả hai cấu trúc là hoàn toàn khác nhau và tôi đang sử dụng chế độ ngủ đông cho thao tác cơ sở dữ liệu và nhầm lẫn với những gì sẽ là cách tiếp cận tốt nhất để di chuyển dữ liệu. Tôi có nên sử dụng chế độ ngủ đông, tôi có nên viết các thủ tục lưu sẵn hoặc có tùy chọn khác không? Bất kỳ ý tưởng sáng đều được chào đón.Di chuyển dữ liệu bằng Hibernate

+1

Câu hỏi này cần thêm chi tiết để đưa ra câu trả lời hợp lý. – Nathan

+0

Câu hỏi và câu trả lời là cũ. Câu hỏi được tạo ra vào năm 2009. Và bây giờ là năm 2014.Hơn 5 năm, Hibernate thay đổi rất nhiều. Vì vậy, tôi đề nghị đóng câu hỏi và câu trả lời này. – AechoLiu

+0

@AechoLiu đó là một câu hỏi không xác định cho các phiên bản, vì vậy tôi khuyên bạn nên cập nhật nó cho thông số kỹ thuật hiện tại. –

Trả lời

0

Mặc dù tôi không chắc chắn về "tốt nhất", tôi muốn sử dụng Hibernate hoặc ORM tương tự nếu tôi ở vị trí của bạn. Lý do là sau đó bạn có một hệ thống phân cấp đối tượng để sử dụng giữa hai cơ sở dữ liệu. Nếu các lược đồ rất giống nhau, thì một kịch bản lệnh SQL đơn giản có thể dễ dàng hơn. Nó thực sự phụ thuộc vào tình hình của bạn, và các chi tiết cụ thể của nó.

chỉnh sửa: Tôi thực sự cần một số sáng caffeine ...

Những gì tôi đã cố gắng để lưu ý, đã được ghi nhận bởi hai người đã đăng sóc tôi. Nếu các lược đồ được định nghĩa, bạn đã có các đối tượng hoặc tốt với các công cụ kỹ thuật đảo ngược, thì hibernate là một cách dễ dàng để đi. Tuy nhiên, nếu nó là một điều một lần, kịch bản chắc chắn là cách tốt hơn để đi.

7

Đã thử cả hai cách tiếp cận trong quá khứ, tôi chắc chắn có thể nói rằng đây không phải là một kịch bản mà ORM được thiết kế, cũng không phải là nơi mà nó phát triển. Bạn sẽ phải xây dựng hai bộ đối tượng khác nhau và rất khó để đạt được hiệu quả cần thiết cho việc di chuyển hàng loạt. Lý do duy nhất tôi có thể nghĩ đến khi sử dụng thứ gì đó như ngủ đông sẽ là nếu bạn đang xây dựng một hệ thống sẽ ngồi vĩnh viễn ở giữa hai hệ thống để tích hợp chúng, nhưng có vẻ như điều này tương đối ngắn hạn.

Tôi đã vô cùng hài lòng với kết quả của một tập lệnh python, một loạt các SQL và một số đối tượng python để chuyển đổi dữ liệu.

2

Hibernate không hoạt động tốt với các thủ tục được lưu trữ - nó không phải là 'phù hợp tự nhiên'. Nếu ORM của bạn đã được vạch ra, và bạn có thiết lập đối tượng 'as-is' và 'to-be', hãy sử dụng các phương thức ngủ đông bình thường để ghi dữ liệu vào bố cục mới của bạn.

Nếu bạn bị buộc phải đi theo cách StoredProcedure, bạn có thể quyết định xem bạn có muốn nuốt cơn đau và mã hóa các biến đổi của bạn trong các thủ tục được lưu trữ hay không.

Giống như các poster khác nói, một ngôn ngữ kịch bản như Python có thể phục vụ bạn tốt ở đây - nó đã làm việc tốt cho tôi quá.

0

Cá nhân tôi có thể sử dụng công cụ ETL như SSIS (nếu bạn đang đi từ hoặc đến SQL Server), chuyển động của một lượng lớn dữ liệu là công cụ ETL được thiết kế và tối ưu hóa để làm.

2

Tôi đã cố gắng quản lý di chuyển dữ liệu khi tôi thay đổi mã và biểu diễn dữ liệu của mình thông qua các bản phát hành khác nhau. Mỗi lần, tôi đã kết thúc viết sql cụ thể để truy vấn cho các đối tượng trong trạng thái cũ và để điền các cột mới. Nếu có một cách đơn giản để quản lý việc di chuyển dữ liệu trong khi xem mọi thứ dưới dạng đối tượng, tôi chưa từng nghĩ đến nó, và cho đến nay, các cột mới luôn có cách diễn giải đơn giản mà tôi có thể tính bằng sql.

Một số người trong số họ đã đủ đơn giản rằng mã đã kết thúc bằng java và các thay đổi khác đã phức tạp đến nỗi tôi muốn nhiều câu lệnh sql và vì vậy tôi đã nhúng chúng vào shell và python (cả hai, cho tính di động)) tập lệnh. Các tập lệnh là herethe java code với tên phương thức như updateDB2008_4().

Các vấn đề liên quan