나는 다음 상황에 대한 또 다른 접근법을 선택했다.
Excel 데이터베이스가 있습니다. DataBase.xls와 Excel 템플릿 Programs.xlt은 공유되지 않으며 네트워크 서버 / 디스크의 디렉터리에 상주합니다. 각 사용자는 프로그램 템플릿의 복사본을 사용하므로 첫 번째 사용자는 Programs1.xls이고 n 번째 사용자는 Programs.xls입니다.
규칙은 다음과 같습니다.
. 동시에 많은 동시 읽기가 가능합니다.
. 동시 읽기가 없으면 단 하나의 쓰기 만 가능합니다 (업데이트 된 레코드의 "절반"읽기 방지)
. 읽기 및 쓰기 동작은 표준화되어 가능한 한 짧게 유지됩니다.
내가 선택한 해결책은 심판 / 심판 / 조정관 / 중재인입니다. 심판관 xls이라고합니다.
그것은 공유 엑셀 파일이며 위에서 언급 한 동일한 디렉토리에 있으며 매우 작습니다 : 읽기 카운터 nRead와 쓰기 카운터 nWrite의 두 필드로만 구성됩니다.
데이터베이스에 대한 액세스를 원하는 모든 사용자는 심판에게 읽기 또는 쓰기 요청을 보냅니다.
읽기 요청의 경우, 심판은 쓰기 작업이 없으면 (nWrite = 0) 점검하고 기다린 다음 nRead 카운터를 1 씩 증가시켜 해당 사용자에 대한 읽기를 허용합니다. 읽기 작업이 완료되면 nRead 카운터가 1 씩 감소합니다.
쓰기 요구의 경우, 주심은 더 이상의 쓰기 동작이 없을 때까지 (nWrite = 0), 모든 읽기 동작이 완료 될 때까지 (nRead = 0) 레퍼리가 검사 / 대기 한 후 쓰기 요청을 허용 할 때까지 기다린다 nWrite 카운터를 1로 설정합니다. 쓰기 작업이 완료되면 쓰기 카운터 nWrite가 0으로 설정됩니다. 그런 다음 주심은 새로운 읽기 및 / 또는 쓰기 요청을 부여 할 수 있습니다. 대기는 1 초 (1000 밀리 초)의 단계로 "Kernel32"Lib의 "Sleep"기능으로 구현됩니다. 단계도 계산되며 6 단계 / 초 후에 읽기 요청 시간이 초과되고 10 초 / 초 후에 쓰기 요청이 시간 초과됩니다. 그러나 이것은 많은 요소에 크게 의존하므로 실제로 찾아야합니다.
이 모든 기능은 최대 동시 사용자가 14 명인 Excel 2003, Windows XP 환경에서 매우 효과적입니다. 이 사용자는 5000 평방 킬로미터의 지역에 분산되어있는 여러 곳에서 일하는 관리자로, 직원을 위해 Medical Competence Information, Personal Information, Appointments 등을 업데이트하기 위해 매일 도구를 사용합니다 (관리자 당 평균 15 명)