2010-05-07 2 views
2

이 큰 .mdb 파일과 관련된 문제에 대한 현실적인 해결책 :.MDB 파일을 세그먼트로 분할하면 안정성에 도움이됩니까?

  • 이 작은 .mdb 파일로 큰 .mdb 파일을 분할
  • .mdb가 작은의 테이블에 링크를 포함하는 하나의 중앙 ' 그것이 .mdb backe이 변경을하는 것이 얼마나 쉬운 .mdb 파일

VB 응용 프로그램?

프런트 엔드 응용 프로그램을 변경하지 않아도 데이터베이스를 변경할 수 있습니까?

+0

무엇이 문제입니까? 안정성이란 무엇을 의미합니까? –

+0

이 질문에 어떻게 현상금을 넣을 수 있는지 이해할 수 없습니다. 그것은 꽤 명확한 아니오입니다,하지만 당신은 그 대답을 받아 들일 수 없습니다. 당신이 듣기를 원하는 대답만을 받아 들일 것 같고, 가장 좋은 대답은 받아 들일 수 없습니다. –

+0

현상금은 어떤 질문에도 적용될 수 있습니다. 이 질문에 현상금을 넣어서 stackoverflow 규칙이 깨졌습니까? – CJ7

답변

0

음 데이터가이 중앙 DB를 통한다면 병목이 될 것입니다. 왜 당신이 이것을 할 것이라고 생각할 수있는 유일한 이유는 액세스 mdb 파일의 크기 한계를 극복하는 것입니다.

비즈니스 기능을 별도의 응용 프로그램에서 분리 할 수있는 경우보고 목적으로 연결된 모든 테이블을 포함하는 중앙 DB에서 좋은 옵션이 될 수 있습니다. 좋은 효과를 내기 전에 이것을 사용했습니다.

2

단일 MDB에 맞는 것보다 많은 데이터가 있다면 다른 데이터베이스 엔진을 얻어야합니다.

고려해야 할 주요 문제점 중 하나는 다른 MDB에 저장된 테이블간에 참조 무결성을 적용 할 수 없다는 것입니다. 이는 실제 데이터베이스를 보여주는 막판 일 것입니다.

그렇지 않은 경우 적절한 스키마가 처음부터 설계되지 않았을 수 있습니다.

+0

참조 무결성이란 외래 키를 의미합니까? 그렇다면 어떻게 mdb에 외래 키가 포함되어 있는지 빠르게 확인할 수 있습니까? – CJ7

+0

Access에서 직접 실행 창에 "? currentdb.Relations.Count"를 입력하고 Enter 키를 누릅니다. 0보다 큰 임의의 숫자는 정의 된 관계가 있음을 의미합니다. 또는 Access 내에서 데이터베이스 창을 볼 때 도구 메뉴를 놓고 관계를 선택하십시오. A2007과 A2010에서는 리본이 메뉴와 같은 구조로되어 있지 않으므로 어딘가에있을 것입니다. 그리고 당신의 데이터베이스가 아니라는 관계가 있다는 것을 당신이 알지 못한다는 사실을 가정합니다. 그렇지 않으면, 음, 음, 아시다시피 ... –

4

편집 시작
짧은 대답은 "아니오, 큰 데이터베이스의 문제를 해결할 수 없습니다."입니다.

이 트릭을 사용하여 DB 크기 제한 (~ 2GB)을 극복 할 수는 있지만 테스트 해 본 적이 없습니다.

일반적으로 대규모 MS Access 데이터베이스의 경우 속도와 데이터 손상 문제가 발생합니다.

속도
속도가 빠른가요? 쿼리하고 검색 할 데이터의 양과 알고리즘이 동일합니다. 따라서 쿼리 당 여러 파일을 열어야하는 오버 헤드가 추가됩니다. 그래서 저는 그것이 더 느릴 것이라고 기대합니다.

디스크에서 정보를 가져 오는 데 걸리는 시간을 줄이면 속도를 향상시킬 수 있습니다. 에

  • 가 (RAID-1,0 빠를 수 있습니다 일화)
  • 가 최대 MDB를 분할 (당신이 제안 같은) RAID에 MDB를 넣어

    1. 빠른 드라이브 : 당신은 몇 가지 방법으로이 작업을 수행 할 수 있습니다 여러 MDB를 분리하고 별도의 드라이브 (어쩌면 별도의 컨트롤러)에 둘 수 있습니다.

  • (이 이론 대 실제로 어떻게 작동하는지 잘, 나는 당신을 말할 수 없다 - 내가하고있는 경우 많은 작업이, 난 아직도 DB 엔진을 전환 선택할 거라고)

    데이터 손상을
    MS 액세스는 데이터 손상에 대한 명성이 있습니다. 공정하기 위해서, 나는 약간의 시간을 내 앞에서 내게 일어나지 않았다. 이것은 내가 큰 것을 위해 그것을 사용하지 않는다는 것을 배웠기 때문일 수 있습니다. 또는 MS가 이러한 문제를 해결하기 위해 많은 노력을 기울 였기 때문일 수 있습니다. 또는 둘 모두의 조합 일 가능성이 높습니다. 데이터 손상에

    프라임 범인은 다음과 같습니다

    1. 하드웨어 : 예를 들면, 우주 광선, 전기 간섭, 불확실한 드라이브, 불확실한 메모리와 불확실한 CPU를 - 나는 MS 액세스 수정/좋은 오류 처리가없는 의심 다른 데이터베이스와 마찬가지로
    2. 네트워크 : 포화 된 네트워크에서 많은 충돌이 MS Access를 혼란에 빠뜨릴 수 있으며 중요한 레코드를 스크램블링 할 수 있습니다. 마찬가지로 서브 - 최적으로 구현 된 네트워크 프로토콜 일 수있다. TCP/IP는 훌륭하지만 무적이 아닙니다.
    3. 소프트웨어 : MS가 지난 몇 년 동안 MS Access에서 많은 작업을 해왔습니다. 패치 (MS Office 및 OS)에 대한 최신 정보가 없으면 최신 정보를 얻을 수 있습니다. 문제는 일반적으로 2GB 제한과 같은 극단적 인 상황에 이르면 발생합니다 (일부 버그는 테스트하기가 어렵고 가장자리의 경우를 제외하고는 본인을 나타내지 않음), 동기가 부여 된 사용자가보고하지 않는 한 보거나 수정하지 않을 가능성이 적습니다. MS)에 의해 정제 하였다.

    큰 데이터베이스는 대개 더 많은 사용자와 더 많은 워크 스테이션에 액세스하므로 대용량 데이터베이스에서는이 모든 것이 악화됩니다. 더 큰 데이터베이스와 사용자 수는 커져 부패가 발생할 수있는 기회를 더 많이 제공합니다.

    편집 종료

    가장 좋은 방법은 MS SQL Server와 같은 무언가로 전환하는 것입니다. 데이터를 마이그레이션 한 다음 하나의 MDB를 연결하여 시작할 수 있습니다. SQL 서버의 안정성을 얻게되고 대부분의 코드 (모두)가 여전히 작동해야합니다.

    일단 작업을 완료하면 VB 응용 프로그램을 대신 SQL Server로 마이그레이션 할 수 있습니다.

    +0

    이 연결 프로세스는 어떻게 작동합니까? VB 응용 프로그램의 쿼리를 변경해야합니까? – CJ7

    +0

    기본적으로 다른 MS Access 데이터베이스에 연결하는 것과 같은 방법입니다. 워크 스테이션에서 ODBC 연결을 작성하십시오 (ControlPanel -> AdministrativeTools -> DataSources). 그런 다음 ODBC 연결 (파일 데이터 원본 대신 사용자 컴퓨터 데이터 원본)에 대한 MS Access MDB 내에서 테이블 링크를 만듭니다. – BIBD

    +0

    @CodeSlave : 1GB에서 2GB 사이의 MDB 데이터베이스를 간단하고 단기적으로 관리 할 경우 SQL Server로 마이그레이션하는 것보다 MDB를 더 쉽고 실용적인 솔루션으로 분리 할 수 ​​있습니까? – CJ7

    1

    CodeSlave에서보다 적절하게 설명하는 이유는 No이므로 적절한 관계형 데이터베이스로 전환해야합니다.

    저는 SQL Server 일 필요는 없다고 덧붙이고 싶습니다. 아마도 당신이 이것을 꺼리는 이유는 비용 중 하나입니다. SQL Server는 교육이나 자선 단체에 가입하지 않은 경우 (매우 저렴하고 일반적으로 완전한 생각할 필요가 없을 때) 얻고 배포하는 데 비용이 많이 듭니다.

    저는 최근 MDB에서 MySQL로 Access 시스템을 옮기는 매우 좋은 결과를 얻었습니다. 코드의 95 % 이상이 수정없이 작동했으며 나머지 5 %는 많은 노력이 필요한 몇 가지 제한된 영역에서만 가장 직설적이었습니다. 코드를 잘못 (연결을 닫지 않거나 객체를 해제하지 않은 경우) 수정하려면이 코드를 수정해야하지만 일반적으로이 방법이 얼마나 어려웠는지 놀라 울 정도로 놀랐습니다. 물론 데이터베이스 백엔드로 이동하기를 꺼리는 이유가 비용 중 하나라면 .mdb 파일을 조작하지 말고보다 견고한 데이터베이스 솔루션으로 이동해야합니다.

    +0

    이유는 VB 프런트 엔드를 다시 코딩하고 싶지 않기 때문입니다. – CJ7

    +1

    Jet/ACE *는 적절한 관계형 데이터베이스입니다. 그러나 원래 포스터가 실행되는 용량 제한이 있습니다. 따라서 데이터 저장소에 적합하지 않습니다. Jet/ACE가 "적절한 관계형 데이터베이스"가 아니기 때문에 용량 제한 때문이 아닙니다. –

    +0

    @Fenton : MDB의 '용량 제한'에 대한 해결책 대신 다중 MDB가 있습니까? – CJ7

    관련 문제