2011-04-29 10 views
6

저는 사람들에 대한 정보 (직원 프로필 및 관련 정보)가 포함 된 Access 데이터베이스를 보유하고 있습니다. 프런트 엔드에는 한 번에 한 가지 유형의 데이터 (한 양식의 학술 학위, 다른 양식의 연락처 정보)를 수정하는 단일 콘솔과 같은 인터페이스가 있습니다. 현재 여러 개의 백엔드 (각 데이터 유형별 및 기본 프로파일 정보 용)에 링크되어 있습니다. 모든 파일은 네트워크 공유에 있으며 많은 백엔드가 암호화됩니다.저속 네트워크의 MS Access 데이터베이스 : 백엔드를 분리하는 것이 더 빠릅니까?

내가 한 이유는 MS Access가 쿼리 나 업데이트를 만들기 위해 전체 데이터베이스 파일을 로컬 컴퓨터로 가져와 네트워크 공유에 변경된 데이터를 다시 저장해야한다는 것을 이해하기 때문입니다. 내 이론은 사람이 전화 번호 나 주소 (연락처 정보)를 변경하는 경우 연락처 정보, 프로젝트, 학위, 수상 경력이있는 단일 대형 데이터베이스를 가져 오기보다는 연락처 정보 데이터베이스를 가져 오거나 수정하거나 대체해야한다는 것입니다. , 등등. 하나의 전화 번호 만 변경하면 여러 사용자가 데이터에 액세스 할 때 잠긴 데이터베이스 및 네트워크 트래픽의 가능성이 줄어 듭니다.

이것은 정상적인 결론입니까? 나는 많은 것을 오해 하는가? 나는 다른 것을 놓치고 있니?

각 파일마다 오버 헤드를 고려해야한다는 것을 알았지 만 그 영향이 얼마나 큰지는 알지 못합니다. 백 엔드를 통합하려면 Access에서 해당 항목을 코딩하기보다는 계단식 삭제 등에 대한 참조 무결성을 처리 할 수 ​​있다는 잠재적 이점이 있습니다. ...

나는 모든 생각이나 의견을 고맙게 생각합니다. (합리적으로 유효한) 비판.

+0

아마도별로 도움이되지는 않지만 MySql으로 전환했습니다. 함께 일하기가 훨씬 쉽다. –

답변

8

이것은 일반적인 오해 :

SELECT first_name, last_name 
FROM Employees 
WHERE EmpID = 27; 
:

MS 액세스

이 쿼리를 고려해 어떤 쿼리 나 업데이트를 만들기 위해 로컬 컴퓨터에 전체 데이터베이스 파일을 끌어합니다

EmpID가 인덱싱되면 데이터베이스 엔진은 일치하는 테이블 행을 찾기 위해 색인을 읽은 다음 일치하는 행을 읽습니다. 색인에 고유 제한 조건 (예 : EmpID가 기본 키)이 포함되어 있으면 읽기가 더 빠릅니다. 데이터베이스 엔진은 전체 테이블 또는 전체 인덱스를 읽지 않습니다.

EmpID에 대한 색인이 없으면 엔진은 Employees 테이블의 전체 테이블 검색을 수행합니다. 즉, EmpID 값과 일치하는 항목을 확인하기 위해 테이블의 모든 행을 읽어야합니다.

그러나 어느 방법이든 엔진은 전체 데이터베이스 ... 클라이언트, 재고, 판매 등 테이블을 읽을 필요가 없습니다. 모든 데이터를 읽을 이유가 없습니다.

백 엔드 데이터베이스 파일에 대한 연결에 오버 헤드가 있다는 것이 맞습니다. 엔진은 각 데이터베이스에 대한 잠금 파일을 관리해야합니다. 나는 그 충격의 크기를 모른다. 그것이 저라면, 새로운 백엔드 데이터베이스를 만들고 다른 테이블에서 테이블을 가져올 것입니다. 그런 다음 프런트 엔드 사본을 만들어 백엔드 테이블에 다시 연결하십시오. 그러면 성능 영향을 직접 검토 할 수 있습니다.

관계형 무결성은 테이블을 단일 백엔드로 통합하기위한 강력한 인수 여야합니다.

잠금과 관련하여 일상적인 DML (INSERT, UPDATE, DELETE) 작업을 위해 전체 백 엔드 데이터베이스를 잠글 필요가 없습니다.데이터베이스 기본 엔진은보다 세부적인 잠금을 지원합니다. 또한 비관적 또는 기회주의 잠금 - 행을 편집하기 시작하면 잠금이 발생하는지 또는 변경된 행을 저장할 때까지 지연됩니다.

천천히 무선 네트워크를 의미하는 경우 실제로 "느린 네트워크"가 가장 큰 관심사가 될 수 있습니다. 유선 LAN에서만 액세스가 안전합니다.

편집 : 액세스가 WAN 네트워크 환경에 적합하지 않습니다. Albert D. Kallal의 this page을 참조하십시오.

+0

필자는 필요 이상으로 불필요한 열이나 행보다 색인에 더 이상 읽지 않는 것에 대해 이해합니다 ('처리'와 '검토 중'사이에서 해석되는 경우). 그러나 구체적으로 말하고 싶습니다. 즉, 언급 한 파일의 일부 (색인 및 일치하는 ID가있는 행) 만 네트워크를 통해 전송되며 다른 데이터는 전혀 전송되지 않습니다. ----- 저속 네트워크는 매우 크고 (다국적), 정체 상태이며 여러 수준의 보안 검사가 이루어 지지만 유선 연결됩니다. 잠금 - 적극적으로 데이터베이스를 잠그지 않습니다. 잠금은 암호화 된 데이터베이스로 인한 것입니다. –

+0

또한 SharePoint/SQL Server 환경에서이 기능을 구현하는 것을 선호합니다. 나는 그것이 옳거나 그름에 조금 더 편하다고 느낍니다. Access Front and Back End의 사용은 Office와 네트워크 공유가있는 워크 스테이션 (서류가 너무 오래 걸릴 것이기 때문에 웹, 데이터베이스 서버 등을 사용하지 않아야 함)로 제한되어 있기 때문에 필자 만의 유일한 선택이라고 생각합니다. 나는 군대의 소규모 사무실이라고 언급 했습니까?) 아마도 "느린"은 "뒤죽박죽"보다 덜 정확합니다. –

+1

액세스 및 WAN에 대한 링크로 답변을 업데이트했습니다. 이미 데이터베이스를 손상시키지 않았다면 결국 데이터베이스 손상이 발생합니다. 얼마나 많은 파일이 전송되는지에 관해서는, 시스템 테이블의 위치를 ​​(파일에서) 결정하기 위해 파일을 읽은 다음 쿼리/업데이트/등의 데이터 테이블에 대한 오프셋을 찾아야합니다. 또한 Windows 및/또는 Access 응용 프로그램 인스턴스에서 계속 캐싱이 이루어지기 때문에 많은 양의 데이터를 새로 읽어 들일 필요가 있지만 그 세부 정보는 내 급여 수준 이상입니다. 계속 ... – HansUp