수백만 명의 사용자가 동시에 등록하고 있으므로 등록을 직렬화 할 수 없습니다. 병렬 등록이 필요합니다.
데이터베이스에 사용자 이름 'user1'이 포함되지 않았다고 가정 해 봅시다. 두 명의 사용자가 동시에 'user1'로 등록을 시도하면 승인됩니다. 그러나 나중에 문제가 발생합니다. 이런 일은 일어나지 않아야합니다.
논리적 인 해결책을 찾고 있습니다. 구체적이지 않습니다. 이것을 해결하는 아이디어.
수백만 명의 사용자가 동시에 등록하고 있으므로 등록을 직렬화 할 수 없습니다. 병렬 등록이 필요합니다.
데이터베이스에 사용자 이름 'user1'이 포함되지 않았다고 가정 해 봅시다. 두 명의 사용자가 동시에 'user1'로 등록을 시도하면 승인됩니다. 그러나 나중에 문제가 발생합니다. 이런 일은 일어나지 않아야합니다.
논리적 인 해결책을 찾고 있습니다. 구체적이지 않습니다. 이것을 해결하는 아이디어.
답변:
데이터베이스에 사용자 이름 'user1'이 포함되지 않았다고 가정 해 봅시다. 두 명의 사용자가 동시에 'user1'로 등록을 시도하면 승인됩니다.
왜 받아들일까요? 고유 제한 조건을 적용하거나, 사용자 이름을 기본 키로 사용하거나, 트랜잭션 내에서 애플리케이션 코드 체크인을 실행하는 것은 간단합니다.
데이터베이스 트랜잭션을 사용하여 데이터베이스가 발생하지 않도록 데이터베이스를 사용할 수 있어야합니다. 그렇지 않으면 데이터베이스 데이터에서 변이를 유지할 수있는 응용 프로그램이 없습니다.
스케일링 측면에서 데이터베이스는 필요한 일관성의 종류에 따른 다양한 잠금 모드, 여러 데이터베이스 서버에 대한 분산 데이터베이스 등과 같이 필요한 기술을 이미 발명했습니다.
이게 문제가 되나요 ?
로그인에 사용자 이름이 아닌 사용자 이름을 사용하는 경우 두 명의 사용자가 고유하지 않은 사용자 이름으로 등록을 마치도록 허용 할 수 없습니다.
사용자 이름이 인증에 사용되지 않는 경우 일부 백그라운드 프로세스를 사용하여 복식 (예 : 타임 스탬프 기반)을 식별하고 플래그를 지정하고 다음 로그온시 사용자 이름을 강제로 변경하도록 할 수 있습니다.
네 문제입니다
당신이 묻는대로, 나는 사용자 이름이 고유 ID라고 가정합니다. 다음과 같은 접근법이 사용될 수 있습니다.
수백만 명의 사용자가 동일한 등록을하면 26x26 등록 서버를 사용합니다. 하나는 aa로 시작하는 사용자 용이고 다른 하나는 ab로 시작하는 사용자 용입니다. 결과적으로 동시에 각 서버에 수천 명의 사용자 만 등록합니다. 여전히 처리 할 수 없으면 26 x 26 x 26 서버를 사용하십시오.