db4o과 같은 객체 데이터베이스를 사용하는 것에 대해 계속 혼란스러워하는 한 가지 방법은 일반적으로 SQL/PL-SQL에 의해 처리되는 복잡한 마이그레이션을 처리하는 방법입니다.db4o와 같은 객체 데이터베이스의 데이터 유지 관리
예를 들어 my_users라는 관계형 데이터베이스에 테이블이 있다고 가정합니다. 처음에는 "full_name"이라는 열이 있었으므로 소프트웨어가이 열을 제거하고 빈 공간에 전체 이름을 나눠서 첫 번째 부분을 "first_name"이라는 열에 넣고 두 번째 열을 열에 넣으려고했습니다 이름은 last_name입니다. SQL에서는 "first_name"및 "second_name"열을 채우고 "full_name"이라는 원래 열을 제거합니다.
db4o와 같은 방법으로 어떻게 처리 할 수 있습니까? first_name과 last_name을 설정하면서 full_name을 null로 설정하고 User.class의 모든 객체를 검색하는 스크립트를 작성하는 Java 프로그램을 작성합니까? 내가 다음 svn 커밋을 할 때 full_name에 해당하는 필드/bean 속성이 없을 것입니다. 이것이 문제가됩니까? "스키마"가 변경되는 프로덕션 응용 프로그램에서 사용하는 것처럼 보입니다. 버전 x에서 버전 x + 1로 데이터를 마이그레이션하는 스크립트를 작성한 다음 버전 x + 2에서 실제로 시도하려는 속성을 제거합니다. 더 이상 내 유형의 일부인 속성을 수정하기 위해 Java 스크립트를 작성할 수 없으므로 버전 x + 1을 제거하십시오.
문제의 일부는 Java 유형 지정과 같은 언어에서 간단한 대소 문자를 구분하지 않는 문자열 기반 이름을 기반으로 참조하는 객체를 RDBMS가 해결한다는 것입니다. 이보다 더 복잡한 것은 getter/setter/field가 런타임에로드 된 클래스의 멤버가 아니므로 동일한 스크립트에 2 가지 버전의 코드가 있어야합니다 (사용자 정의 클래스 로더가 통증처럼 들릴 수 있음). 새 버전의 저장된 클래스가 다른 패키지에 속해 있거나 지저분한 소리가 들리거나 언급 한 x + 1 x + 2 전략을 사용하십시오 (더 많은 계획이 필요합니다). 아마도 db4o 문서에서 수집하지 않은 확실한 해결책이있을 것입니다.
아이디어가 있으십니까? 희망적으로 이것은 약간 이해된다.