2011-01-21 4 views
1

NHibernate 스키마 생성에 대한 경험을 공유해 주시겠습니까? 데이터 모델의 복잡성과 크기 측면에서 얼마나 확장 성이 있습니까? 수작업으로 만들어진 데이터 모델과 비교하여 성능에 중요한 영향을 미칩니 까?NHibernate 스키마 생성

+1

구체적으로 클래스 정의에서 데이터베이스 스키마를 생성하는 것에 대해 이야기하고 있습니까? 클래스 정의와 일치하도록 수동으로 데이터베이스 스키마를 작성하는 대? 그렇다면 아마도 80 %의 해결책 일 것이고 첫 번째 릴리스에 필요한 것과 아주 가깝습니다. 첫 번째 프로덕션 릴리스 후에는 스키마 생성이 실제로 수행하지 않는 마이그레이션에 대해 생각해야합니다. –

+0

예 Michale, 클래스 정의에서 db 스키마를 생성하는 것에 대해 언급하고 있습니다. 버전 1 요구 사항에 매우 가깝다는 것을 알았 기 때문에 많은 시간을 절약 할 수 있다고 생각합니다. 고맙습니다. – patelsan

답변

2

테스트 데이터베이스를 자유롭게 다시 작성하고 다시 작성하기 위해 코드를 사용하여 개발할 때 매우 유용하다는 것을 알았습니다. 마이 그 레이션에 대한 Michael의 관점은 우리의 경험과 일치합니다. 초기 릴리스를 만들었 으면 프로덕션 데이터베이스를 변경하기위한 또 다른 방법을 결정해야합니다.

FWIW, 우리는 일반적인 종류의 약 30 개 모델 (하위 클래스 배열 당 테이블 포함)을 사용하여 NH 스키마 생성을 사용했으며 생성 된 정의가 정확하므로 스키마 크기에 대한 명확한 제한이 없습니다 그것을 처리 할 수 ​​있습니다.

이제는 자동으로 생성 된 스키마가 거의 항상 손으로 만들어진 스키마보다 더 좋은 출발점이라고 생각하는 경향이 있습니다. 왜냐하면 소프트웨어가 여러분에게 완전히 일치하고 정확히 지정한 것을 제공하기 때문입니다. 숙련 된 DBA가 수행 할 수있는 최적화의 종류는 커다란 특정 작업 부하가있을 때까지 필요하거나 유용하지 않을 수 있습니다.

0

당신은 사과와 배를 비교하고 있습니다. 수작업 모델은 항상 ORM 기술을 수행합니다 (잘 이어야합니다).

나는 개인적으로 NHibernate가 잘 수행하고 모든 OO 모델을 관계형 모델에 맵핑 할 것이라고 생각한다. 그것은 그것의 아름다움이다. 응용 프로그램 시작 시간을 인식하고 세션 관리를 올바르게 사용하고 있는지 확인하는 것과 같은 몇 가지 문제가 있습니다.

나는 NHibernate를 권하고 있으며 약 80 개 정도의 테이블을 보유하고 아직 큰 문제를 보지 못한 스키마에서 18 개월 동안 사용 해왔다.

+0

80 개의 테이블과 18 개월 동안 잘 작동하고 있다는 사실을 알아두면 좋습니다. 나는 손으로 만들어진 DB 모델이 더 나아질 것이라는 것을 안다. 왜 '중요한 성능 영향'이 있는지 언급했다. – patelsan

0

성능에 미치는 영향은 없습니다. 실제로 매핑 파일에 맞게 테이블을 만드는 방법은 많지 않습니다. 스키마를 생성 할 때 임의의 sql을 실행할 수있을뿐만 아니라 데이터베이스 데이터 유형을 지정하고 제약 조건 및 색인을 작성할 수있는 가능성과 같은 스키마 작성을위한 몇 가지 추가 기능이 있습니다.

성능 조정은 일반적으로 스키마를 자동으로 생성 한 후에 수행 할 수 있습니다. 예를 들어 NH가 테이블을 만들고 일부 성능 관련 설정을 설정하기 위해 Alter Table 문을 실행하도록 할 수 있습니다. 나중에 인덱스를 작성 (또는 대체)하는 것도 매우 쉽습니다. 이 모든 것은 매핑 파일에 기록 될 수도 있습니다. 모든 정보를 바탕으로 모든 테이블과 컬럼을 생성하는 NH : 매핑 파일에 대한 열심히 노력한다.

1

스키마를 내보내고 데이터베이스를 채워야하는 경우 Fluent NHibernate Schema Tool을보고 싶습니다. 어셈블리, hibernate.cfg.xml, * .hbm.xml 및 Fluent Mappings을 읽을 수 있습니다. 데이터베이스의 DDL (생성/업데이트/삭제 테이블)을 생성/실행할 수 있으며 작성/업데이트 된 데이터베이스를 채우는 데 사용할 CSV와 유사한 입력 파일을 사용할 수 있습니다 (데이터 세트 파일은 HQL에서 수행 할 작은 쿼리를 허용 함) . 이 도구는 NHibernate를 사용하는 단위 테스트 및 웹 응용 프로그램에 매우 유용합니다.

자세히보기 : https://bitbucket.org/guibv/fnst/wiki/Home.

관련 문제