2012-12-28 2 views
3

나는 중간 규모의 의료 사무실에 대한 의학 연구를 추적하는 것으로 구성된 첫 번째 실제 응용 프로그램에서 일하고 있습니다. 시스템은 의사, 사용자, 환자, 학습 템플릿 및 연구 보고서를 추적해야합니다. 이 프로그램의 목적은 모든 가능한 연구를 위해 미리 포맷 된 연구 템플릿을 적용하고 각 환자의 연구를 추적하며 파일 시스템을 찾기 쉽도록 유지하는 것입니다. 각 연구 보고서는 Windows에서 직접 사용하거나 인쇄 할 수있는 html 파일로 특정 폴더에 저장됩니다.직렬화 된 파일 대신 데이터베이스를 사용해야합니까?

나는 주어진 시간에 약 20 명의 활동중인 의사, 30 개의 다른 학습 템플릿, 12 명의 사용자가 될 것이라고 예상한다. 환자 및 연구 보고서는 누적 될 것이며 무기한으로 활성화 될 것입니다. 나는 우리가 2000 명의 새로운 환자와 6000 개의 새로운 연구 보고서를 일 년에 말하고 있다고 추정한다.

나는 거의 작업을 마쳤지 만, 처음에는 데이터를 직렬화 된 파일에 저장하기로 선택했는데 대신 데이터베이스를 사용하지 않았습니다. 이제는 데이터의 크기가 급격하게 증가 할 것이라는 점을 감안할 때 데이터베이스 대신 작업해야한다고 생각합니다. 여러 가지 이유로, 특히 어떤 클래스에서 내가 할 수있는 변경 사항이 직렬화 된 파일과 충돌 할 수 있으며이를 다시 열지 못하게됨을 알았 기 때문에 직렬화 된 파일 선택에 대해 우려하고 있습니다. 나는 어떤 파일이 얼마나 커져서 작업 할 수 있는지에 대한 의견을 보내 주시면 감사하겠습니다. 이 경우 허용되는 파일을 직렬화합니다. 아이디어 나 의견을 나에게 알려주십시오. 도움을 주셔서 감사합니다

+0

(저장소에 졸지한다)

  • 전체 프로젝트 내에서 새로운 JPA 엔티티로 된 클래스에서 모든 필요한 리팩토링 된 클래스의
  • 제거하고 자신의 수입 객체 당신은 실제로 Hibernate/JPA와 같은 ORM 프레임 워크를 사용하지 않았습니까? 환자를 어떻게 찾았습니까? 전체 데이터베이스를 메모리로 읽어들입니까? 나는 이것이 운동이되기를 바란다. – burna

  • +0

    그게 핵심입니다. Originaly 그 생각 이었지만, 나는 시간이 없어 기억을 sturating 것입니다.구조의 간략한 설명은 다음과 같습니다. –

    +0

    나는 프로그램이라고 불리는 개체를 가지고 있으며, 프로그램에는 의사, 사용자, 환자, 학습 템플릿 및 연구 보고서가 있습니다. 다른 한편으로는 연구 보고서는 의사, 템플렛, 심장 박약 등의 intance를 유지합니다. 내가했던 것은 객체 프로그램과 모든 asociates 클래스를 하나의 파일로 저장하는 것이 었습니다. 나는 데이터베이스를 사용하지 않았기 때문에 항상 모든 정보를 메모리에 저장한다는 것을 깨달았다. –

    답변

    1

    대부분의 사람들은 당신이 관계없이 데이터베이스를 사용해야한다고 말할 것입니다. 이것이 전문적인 응용 프로그램 인 경우 데이터가 손상 될 위험이 없으며 실제 가능성이 있습니다. 코드 및 프로그램을 잘못 사용하는 버그로 인해

    여기는 중요한 데이터의 값이 아니라 크기입니다. 파일이 1 년 동안 사용 중이며 파일을 사용할 수 없게됩니다. 그들은 모든 데이터를 처음부터 다시 입력해야한다고 말합니까?

    방금 ​​운동을한다면, 나는 당신이 뭔가를 배울 때 데이터베이스를 사용할 것을 제안합니다. 인기있는 선택은 최대 절전 모드를 사용하는 것이며 그것은 CV ++입니다. ;)

    +0

    실제 환자와 함께 실제 클리닉을위한 실제 프로젝트입니다. 나는 데이터의 가치가 얼마나 중요한지에 동의하지만, 2 년 후에 15 또는 18k 개의 레코드가있을 수 있기 때문에 크기에도 관심이 있습니다. 내가 지금 설치하는 방법은 응용 프로그램이 메모리에 항상 모든 레코드를로드하는 것입니다. 이 말을 구매 나는 내 자신의 일종의 내 원래 quesiton 대답하지만, 나는 문제가 많은 데이터베이스를 작동하는 방법에 대한 개념을 이해하는 데 문제가 많이 있기 때문에 나는 스택입니다. (나는 많은 자료를 읽었지만 그것을 얻지는 못한다.) –

    +0

    Java (메모리가 없음)의 메모리에 40 억 개의 레코드를로드하고 있기 때문에 문제가되지 않는다. 왜냐하면 나는 그것을 변경하지 않고 그냥 소스 데이터이다. b) 나는 그것을 쉽게 재현 할 수있다. 크기는 중요하지 않으며 단지 가치와 비용을 재창조하는 것입니다. –

    +0

    확인. 나는 감동한다, 나는 당신이 기억에서 얼마나 많은 정보를 다룰 수 있는지 상상할 수 없다. 그것은 저에게 저의 객체에 새로운 인스턴스 변수를 추가 할 필요가있을 때 안정성과 확장 성으로 다시 돌아갑니다. –

    2

    이러한 파일과의 호환성을 파괴하는 것에 대한 우려는 절대적으로 합리적입니다. DB를 서버의

    • 설정 (MySQL의) 새로운 내 프로젝트에 직렬화 가능 클래스의
    • 재 구현을 최대 절전 모드의
    • 통합 : 나는 다음 단계를 복용하여 소규모 재고 프로젝트에서 같은 문제를 해결 JPA 주석을 사용하는 패키지 (DB 스키마가 중단되지 않으면 기존 클래스에 주석 추가)
    • JPA 권한 부여를 사용하여 DB 스키마 생성
    • 기존 객체에 대한 가져 오기 구현 (비 직렬화, 변환 및 참조 무결성을 유지합니다.
    • 가져 오기 및 기존 데이터의 검증은
    +0

    불행히도, 당신은 지금이 순간에 할 수있는 능력을 훨씬 넘어선다고 마지막으로 언급합니다. 즉, 당신이 knoledge의 잠금 때문에 위에 언급 한 것을 이해할 수 없습니다. 다른 사람들과 함께 나는 프로젝트가 무엇을 의미하는지 모릅니다. –

    +1

    Hibernate는 기본적으로 Java 클래스를 DB 테이블 행 (엔티티)에 연결하는 JPA (Java Persistence API) 구현입니다. 이 모든 것을 배우는 것은 분명히 시간이 걸릴 것이지만, 미래의 프로젝트에 따라 그만한 가치가 있습니다. Peter Lawrey는 XMLEncoder에 대해 언급했습니다. 복잡한 쿼리를 실행할 필요가없는 경우 XML 파일 구현 (캐스터 라이브러리를 한 번 사용함)은 코드 변경과 관련하여 Java 클래스와 데이터 파일 간의 바인딩을 크게 느슨하게합니다. – Sam

    +0

    감사 샘. JPA에 대한 자세한 내용을 살펴볼 것입니다. 나는 아직 멀어 (그럴 것 같지만) 바라건대 결국 나는 거기에 도착할 것이다. 당장은 DB 관리를 연구해야한다고 생각합니다. 모든 도움에 감사드립니다. 감사. –

    관련 문제