Pracuję nad projektem dla firmy, w której muszę przenieść poprzednie dane do nowego systemu. Oczywiście obie struktury są zupełnie inne i używam hibernacji do manipulacji w bazie danych i jestem zdezorientowany co do najlepszego sposobu migracji danych. Czy powinienem używać hibernacji, czy powinienem zapisać zapisane procedury, czy jest jeszcze inna opcja? Wszelkie jasne pomysły są mile widziane.Migracja danych za pomocą Hibernate
Odpowiedz
Chociaż nie jestem pewien co do "najlepszego", wolałbym użyć Hibernate lub podobnego ORM, gdybym był na twojej pozycji. Powodem jest to, że masz hierarchię obiektów do użycia między dwiema bazami danych. Jeśli schematy są bardzo podobne, prosty skrypt SQL może być łatwiejszy. To naprawdę zależy od twojej sytuacji i jej specyfiki.
edit: I naprawdę potrzebują rano kofeiny ...
Co ja próbuje zwrócić uwagę, zostało dostrzeżone przez dwóch ludzi, którzy napisanych po mnie. Jeśli schematy są zdefiniowane, masz już obiekty lub są dobre z narzędziami inżynierii odwrotnej, to hibernacja jest łatwym sposobem. Jeśli jednak jest to jednorazowa rzecz, to zdecydowanie lepiej jest pisać scenariusze.
Po wypróbowaniu obu podejść w przeszłości, mogę z całą pewnością stwierdzić, że nie jest to scenariusz, dla którego zaprojektowano ORM, ani też tam, gdzie się rozwija. Koniec z koniecznością budowania dwóch różnych zestawów obiektów i trudno jest uzyskać wydajność wymaganą do masowej migracji. Jedynym powodem, dla którego mogę myśleć o używaniu czegoś w rodzaju hibernacji, byłoby zbudowanie systemu, który miałby trwale osadzić się pomiędzy dwoma systemami, aby je zintegrować, ale wydaje się, że jest to stosunkowo krótkoterminowe.
Byłem niezmiernie zadowolony z wyników skryptu Pythona, garści SQL i niektórych obiektów Pythona w celu transformacji danych.
Hibernacja nie działa bardzo dobrze z procedurami przechowywanymi - nie jest to "naturalne dopasowanie". Jeśli twoja ORM jest już zmapowana, a twoje obiekty są ustawione "tak jak jest" i "w toku", użyj standardowych metod hibernacji, aby zapisać dane do nowego układu.
Jeśli jesteś zmuszony do przejścia w tryb StoredProcedure, możesz zdecydować, czy chcesz przełknąć ból i zakodować transformacje w procedurach przechowywanych - w ten sposób wszystkie skrypty migracji pozostaną razem.
Tak jak napisano na drugim plakacie, język skryptowy, taki jak Python, może ci dobrze służyć - dobrze mi też działał.
Osobiście prawdopodobnie używałbym narzędzia ETL, takiego jak SSIS (jeśli przechodzisz z lub do SQL Server) do tego, ruch dużych ilości danych jest to, co narzędzia ETl są zaprojektowane i zoptymalizowane do zrobienia.
Próbowałem zarządzać migracją danych, ponieważ zmienię swój kod i reprezentację danych w różnych wersjach. Za każdym razem kończyłem pisanie określonego sql, aby wyszukiwać obiekty w starym stanie i zapełniać nowe kolumny. Jeśli istnieje prosty sposób zarządzania migracją danych podczas przeglądania wszystkiego jako obiektu, nie pomyślałem o tym i jak dotąd nowe kolumny zawsze mają proste interpretacje, które mogłem obliczyć w sql.
Niektóre z nich były na tyle proste, że kod znalazł się w java, a inne zmiany były na tyle złożone, że chciałem wielu instrukcji sql, więc w efekcie osadziłem je w powłoce i pythonie (oba, dla przenośności) skrypty. Skrypty to here i the java code z nazwami metod, takimi jak updateDB2008_4().
- 1. Migracja danych rdzenia za pomocą Magical Record
- 2. Kod Pierwsza migracja za pomocą ciągów połączenia
- 3. Niestandardowa migracja danych podstawowych
- 4. jednostka Map za pomocą kwerendy w Hibernate
- 5. Mapowanie tablicy PostgreSQL za pomocą Hibernate
- 6. Migracja z Hibernate 3 do 4 spowolnienie uruchamiania
- 7. laravel 5.1: Migracja istniejącej bazy danych
- 8. Przechowywanie obiektów w kolumnach za pomocą Hibernate JPA
- 9. Migracja w dół za pomocą tylko jednej migracji
- 10. Zapisz nowy obiekt przy użyciu Hibernate za pomocą dostarczonego identyfikatora
- 11. Utwórz bazę danych za pomocą WZP?
- 12. Masowa migracja danych przez Spark SQL
- 13. Railsowanie 3.2.6 i tworzenie widoków bazy danych za pomocą migracji
- 14. Migracja danych podstawowych w wielu wersjach aktualizacji
- 15. Hibernate - Jak ustawić typ sql za pomocą adnotacji?
- 16. Pisz mniej DAO ze Spring Hibernate za pomocą adnotacji
- 17. Inspekcja za pomocą Envers i Hibernate Spatial 4
- 18. Jak ręcznie ustawić pola @Version za pomocą Hibernate 4?
- 19. Jak wykonać kwerendę Hibernate za pomocą jak i%?
- 20. Jak dynamicznie rozwiązywać parametry wiadomości za pomocą walidatora Hibernate?
- 21. Ukrywanie danych za pomocą JOptionPane
- 22. Przekazywanie danych za pomocą zdarzeń
- 23. Podsumowanie danych za pomocą .countBy
- 24. Wstawianie danych za pomocą Node.js
- 25. Publikowanie danych za pomocą libcurl
- 26. Sortowanie danych za pomocą Eloquent
- 27. Migracja wbudowanych modeli do baz danych
- 28. Migracja baz danych dla Entity Framework 4
- 29. EF migracja do zmiany typu danych kolumny
- 30. Szyfrowanie danych za pomocą odszyfrowania ruby za pomocą węzła
To pytanie wymaga więcej szczegółów, aby dać rozsądną odpowiedź. – Nathan
Pytanie i odpowiedzi są stare. Pytanie zostało utworzone na rok 2009. A teraz jest 2014.W ciągu 5 lat Hibernate zmienia się tak bardzo. Proponuję więc zamknąć to pytanie i odpowiedzi. – AechoLiu
@AechoLiu to nieokreślone pytanie do wersji, więc proponuję zaktualizować go do aktualnych specyfikacji. –