NHibernate 스키마 생성에 대한 경험을 공유해 주시겠습니까? 데이터 모델의 복잡성과 크기 측면에서 얼마나 확장 성이 있습니까? 수작업으로 만들어진 데이터 모델과 비교하여 성능에 중요한 영향을 미칩니 까?NHibernate 스키마 생성
답변
테스트 데이터베이스를 자유롭게 다시 작성하고 다시 작성하기 위해 코드를 사용하여 개발할 때 매우 유용하다는 것을 알았습니다. 마이 그 레이션에 대한 Michael의 관점은 우리의 경험과 일치합니다. 초기 릴리스를 만들었 으면 프로덕션 데이터베이스를 변경하기위한 또 다른 방법을 결정해야합니다.
FWIW, 우리는 일반적인 종류의 약 30 개 모델 (하위 클래스 배열 당 테이블 포함)을 사용하여 NH 스키마 생성을 사용했으며 생성 된 정의가 정확하므로 스키마 크기에 대한 명확한 제한이 없습니다 그것을 처리 할 수 있습니다.
이제는 자동으로 생성 된 스키마가 거의 항상 손으로 만들어진 스키마보다 더 좋은 출발점이라고 생각하는 경향이 있습니다. 왜냐하면 소프트웨어가 여러분에게 완전히 일치하고 정확히 지정한 것을 제공하기 때문입니다. 숙련 된 DBA가 수행 할 수있는 최적화의 종류는 커다란 특정 작업 부하가있을 때까지 필요하거나 유용하지 않을 수 있습니다.
당신은 사과와 배를 비교하고 있습니다. 수작업 모델은 항상 ORM 기술을 수행합니다 (잘 이어야합니다).
나는 개인적으로 NHibernate가 잘 수행하고 모든 OO 모델을 관계형 모델에 맵핑 할 것이라고 생각한다. 그것은 그것의 아름다움이다. 응용 프로그램 시작 시간을 인식하고 세션 관리를 올바르게 사용하고 있는지 확인하는 것과 같은 몇 가지 문제가 있습니다.
나는 NHibernate를 권하고 있으며 약 80 개 정도의 테이블을 보유하고 아직 큰 문제를 보지 못한 스키마에서 18 개월 동안 사용 해왔다.
80 개의 테이블과 18 개월 동안 잘 작동하고 있다는 사실을 알아두면 좋습니다. 나는 손으로 만들어진 DB 모델이 더 나아질 것이라는 것을 안다. 왜 '중요한 성능 영향'이 있는지 언급했다. – patelsan
성능에 미치는 영향은 없습니다. 실제로 매핑 파일에 맞게 테이블을 만드는 방법은 많지 않습니다. 스키마를 생성 할 때 임의의 sql을 실행할 수있을뿐만 아니라 데이터베이스 데이터 유형을 지정하고 제약 조건 및 색인을 작성할 수있는 가능성과 같은 스키마 작성을위한 몇 가지 추가 기능이 있습니다.
성능 조정은 일반적으로 스키마를 자동으로 생성 한 후에 수행 할 수 있습니다. 예를 들어 NH가 테이블을 만들고 일부 성능 관련 설정을 설정하기 위해 Alter Table
문을 실행하도록 할 수 있습니다. 나중에 인덱스를 작성 (또는 대체)하는 것도 매우 쉽습니다. 이 모든 것은 매핑 파일에 기록 될 수도 있습니다. 모든 정보를 바탕으로 모든 테이블과 컬럼을 생성하는 NH : 매핑 파일에 대한 열심히 노력한다.
스키마를 내보내고 데이터베이스를 채워야하는 경우 Fluent NHibernate Schema Tool을보고 싶습니다. 어셈블리, hibernate.cfg.xml, * .hbm.xml 및 Fluent Mappings을 읽을 수 있습니다. 데이터베이스의 DDL (생성/업데이트/삭제 테이블)을 생성/실행할 수 있으며 작성/업데이트 된 데이터베이스를 채우는 데 사용할 CSV와 유사한 입력 파일을 사용할 수 있습니다 (데이터 세트 파일은 HQL에서 수행 할 작은 쿼리를 허용 함) . 이 도구는 NHibernate를 사용하는 단위 테스트 및 웹 응용 프로그램에 매우 유용합니다.
- 1. Fluent Nhibernate 스키마 생성
- 2. Nhibernate - forign key없이 스키마 생성
- 3. NHibernate 속성 주석이있는 유형에서 스키마 자동 생성
- 4. SharpArchitecture - FluentNHibernate 스키마 생성?
- 5. C# 클래스에서 db 스키마 생성
- 6. nHibernate 스키마 업데이트 실패
- 7. Nhibernate 스키마 clasue
- 8. Fluent Nhibernate 내보내기 스키마 및 테이블 변경
- 9. Fluent NHibernate - 자동 스키마 구축
- 10. 아음속 DB 스키마 생성
- 11. hsql에서 스키마 생성
- 12. MySQL의 스키마 생성 NHibernate에
- 13. 코드에서 자동 스키마 생성
- 14. 수식에서 사용되지 않는 nHibernate 기본 스키마
- 15. Nhibernate - SQLQuery 생성 - IndexOutOfRangeException
- 16. XML에서 자동으로 SQL 스키마 생성
- 17. Yii 모델에서 DB 스키마 생성
- 18. 자동 데이터베이스 스키마 생성 시스템?
- 19. XML에서 스키마 사용자가 생성 되었습니까?
- 20. Doctrine 엔티티에서 스키마 생성/업데이트
- 21. Java 소스에서 xsd 스키마 생성
- 22. NHibernate 쿼리에서 스키마 이름 사용 - 버전 1.2.0
- 23. NHibernate "database"스키마 혼동 [. \ hibernate-mapping \ @schema]
- 24. NHibernate 다중 데이터베이스 스키마 참조를 App_Data
- 25. NHibernate ID 생성 재 매핑
- 26. 데이터베이스 생성 날짜 (NHibernate 포함)
- 27. NHibernate 생성 된 값과 테스트
- 28. 엔트리 파일을 NHibernate를위한 LLBLGenPro와 함께 스키마 당 폴더로 생성
- 29. Ant의 JAXB 클래스 파일에서 XML 스키마 생성
- 30. Visual Studio 데이터 생성 계획 스키마 업데이트
구체적으로 클래스 정의에서 데이터베이스 스키마를 생성하는 것에 대해 이야기하고 있습니까? 클래스 정의와 일치하도록 수동으로 데이터베이스 스키마를 작성하는 대? 그렇다면 아마도 80 %의 해결책 일 것이고 첫 번째 릴리스에 필요한 것과 아주 가깝습니다. 첫 번째 프로덕션 릴리스 후에는 스키마 생성이 실제로 수행하지 않는 마이그레이션에 대해 생각해야합니다. –
예 Michale, 클래스 정의에서 db 스키마를 생성하는 것에 대해 언급하고 있습니다. 버전 1 요구 사항에 매우 가깝다는 것을 알았 기 때문에 많은 시간을 절약 할 수 있다고 생각합니다. 고맙습니다. – patelsan