2011-01-15 5 views
0

나는 24 시간 연중 무휴로 운영되는 웹 서비스를 운영하고 있습니다. 주기적으로 다른 웹 서비스의 데이터로 데이터베이스를 새로 고쳐야합니다. 많은 데이터가 있습니다. 수만 행입니다. (아니오, SQL Server 용 데이터가 많다는 의미는 아니며 다른 웹 서비스에서 파이프를 가져 오는 데 다소 시간이 걸릴 것으로 예상합니다.)SQL Server의 높은 데이터 가용성을위한 최상의 방법

5 분에서 10 분 정도 걸립니다. 실제 데이터 업데이트 부분은 1 분에서 2 분 사이입니다. 즉, 소비자가 이러한 유형의 데이터를 요청할 때 모든 의도와 목적을 위해 서비스가 중단된다는 의미입니다.

데이터를 항상 사용할 수있는 시스템을 구현하고 싶습니다. 마음에 떠오르는 유일한 것은 두 개의 개별 데이터베이스를 유지 관리하는 시스템 유형입니다. 비활성 하나를 채우고 다른 하나를 채우기 전에 활성으로 바꾸십시오.

이 작업을 수행하는 가장 좋은 방법을 잘 모르겠습니다. 나의 현재 아이디어는 하나의 데이터베이스에있는 두 세트의 스키마 (활성 세트에 액세스하기위한 뷰 사용) 또는 각각이 동일한 스키마를 가진 두 개의 데이터베이스를 돌고있다. 응용 프로그램은 두 데이터베이스간에 순환합니다.

이전에 이런 일을 한 사람의 제안이 있습니까?

+1

"많은 데이터가 있습니다. 수만 행입니다." - 그것은 많은 데이터가 아닙니다. 100의 수백만 행은 많은 데이터입니다. ... –

+1

수십만 개의 행을 업데이트하는 데 2 ​​분이 채 걸리지 않습니다 ... 인덱스를 확인해야합니다. –

+0

웹 서비스를 통해 진행되는 경우 병목 현상이 발생할 가능성이 큽니다. 그 자체가 SQL이 아닙니다. 나는 세트 기반이 아니라 RBAR이라는 시간 틀을 기반으로한다고 가정합니다. –

답변

1

동적 SQL! 임의의 테이블 이름을 생성하여 새 테이블에 데이터를 대량으로 만들고 기존 뷰를 새 테이블 이름 /로 대체합니다. 또는 룩업 테이블 파티션을 동적으로 처리 할 수 ​​있습니다! (더 우아함) - 정점에 달하면 유지 관리를 수행하여 임의의 테이블에서 테이블을 통합하십시오.

+0

테이블 분할은 Enterprise 및 Datacenter Edition에서만 사용할 수 있습니다. –

2

데이터를 임시 테이블로 가져옵니다. 그런 다음 임시 테이블에있는 새 데이터로 이전 데이터를 업데이트하면 업데이트하는 데 수 밀리 초가 소요됩니다. 수만 행의 문제는 없습니다. 진지하게.