다음을 통해 공유


데이터 저장소를 선택하는 기준

이 문서에서는 데이터 저장소를 평가할 때 사용할 비교 조건에 대해 설명합니다. 목표는 솔루션의 요구 사항을 충족할 수 있는 데이터 스토리지 유형을 결정하는 데 도움이 되는 것입니다.

일반적인 고려 사항

선택할 때는 다음 사항을 고려해야 합니다.

기능적인 요구 사항

  • 데이터 형식: 저장하려는 데이터 형식은 무엇인가요? 일반적인 형식에는 트랜잭션 데이터, JSON 개체, 원격 분석, 검색 인덱스 또는 플랫 파일이 포함됩니다.
  • 데이터 크기: 저장해야 하는 엔터티의 크기는 얼마나 큽니까? 이러한 엔터티를 단일 문서로 유지 관리해야 하나요, 아니면 여러 문서, 테이블 및 컬렉션 간에 분할할 수 있나요?
  • 크기 조정 및 구조: 필요한 스토리지 용량의 전체 크기는 어떻게 됩니까? 데이터 분할을 예상합니까?
  • 데이터 관계: 데이터가 일대다 또는 다 대 다 관계를 지원해야 하나요? 관계 자체가 데이터의 중요한 부분인가요? 동일한 데이터 세트 내에서 또는 외부 데이터 세트의 데이터를 조인하거나 결합해야 합니까?
  • 일관성 모델: 추가 변경 내용을 적용하기 전에 한 노드의 업데이트가 다른 노드에 표시되는 것이 얼마나 중요합니까? 최종 일관성을 허용할 수 있나요? 트랜잭션에 대한 ACID 보증이 필요한가요?
  • 스키마 유연성: 데이터에 어떤 종류의 스키마를 적용하시겠습니까? 고정 스키마, 쓰기 방식의 스키마 또는 읽기 전용 스키마 접근 방식을 사용하시겠습니까?
  • 동시성: 데이터를 업데이트하고 동기화할 때 어떤 종류의 동시성 메커니즘을 사용하시겠습니까? 애플리케이션이 충돌할 수 있는 많은 업데이트를 수행합니까? 그렇다면 레코드 잠금 및 비관적 동시성 제어가 필요할 수 있습니다. 또는 낙관적 동시성 제어를 지원할 수 있나요? 그렇다면 간단한 타임스탬프 기반 동시성 제어가 충분합니까, 아니면 다중 변환 동시성 제어의 추가 기능이 필요한가요?
  • 데이터 이동: 솔루션이 ETL 작업을 수행하여 데이터를 다른 저장소 또는 데이터 웨어하우스로 이동해야 합니까?
  • 데이터 수명 주기: 데이터가 한 번 기록되고 여러 번 읽힐 수 있나요? 쿨 또는 콜드 스토리지로 이동할 수 있나요?
  • 기타 지원되는 기능: 스키마 유효성 검사, 집계, 인덱싱, 전체 텍스트 검색, MapReduce 또는 기타 쿼리 기능과 같은 다른 특정 기능이 필요한가요?

비기능적 요구 사항

  • 성능 및 확장성: 데이터 성능 요구 사항은 무엇인가요? 데이터 수집 속도 및 데이터 처리 속도에 대한 특정 요구 사항이 있나요? 데이터를 수집한 후 데이터를 쿼리하고 집계하는 데 허용되는 응답 시간은 어떻게 됩니까? 스케일 업하려면 데이터 저장소가 얼마나 커야 합니까? 워크로드가 읽기가 더 많거나 쓰기가 많은가요?
  • 안정성: 지원해야 하는 전반적인 서비스 수준 계약은 무엇인가요? 데이터 소비자에게 어떤 수준의 내결함성을 제공해야 합니까? 어떤 종류의 백업 및 복원 기능이 필요한가요?
  • 복제: 여러 복제본 또는 지역에 데이터를 배포해야 하나요? 어떤 종류의 데이터 복제 기능이 필요합니까?
  • 제한: 특정 데이터 저장소의 제한은 규모, 연결 수 및 처리량에 대한 요구 사항을 지원합니까?

관리 및 비용

  • 관리 서비스: 가능한 경우 IaaS(Infrastructure as a Service) 호스팅 데이터 저장소에서만 찾을 수 있는 특정 기능이 필요하지 않은 경우 관리되는 데이터 서비스를 사용합니다.
  • 지역 가용성: 관리되는 서비스의 경우 모든 Azure 지역에서 서비스를 사용할 수 있나요? 특정 Azure 지역에서 솔루션을 호스트해야 합니까?
  • 이식성: 온-프레미스, 외부 데이터 센터 또는 기타 클라우드 호스팅 환경으로 데이터를 마이그레이션해야 합니까?
  • 라이선싱: 독점 라이선스 유형과 OSS 라이선스 유형을 선호합니까? 사용할 수 있는 라이선스 유형에 대한 다른 외부 제한 사항이 있나요?
  • 전체 비용: 솔루션 내에서 서비스를 사용하는 데 드는 전체 비용은 어떻게 됩니까? 가동 시간 및 처리량 요구 사항을 지원하기 위해 실행해야 하는 인스턴스는 몇 개입니까? 이 계산에서 작업 비용을 고려합니다. 관리되는 서비스를 선호하는 한 가지 이유는 운영 비용이 감소하기 때문입니다.
  • 비용 효율성: 데이터를 분할하여 더 비용 효율적으로 저장할 수 있나요? 예를 들어 비용이 많이 드는 관계형 데이터베이스에서 개체 저장소로 큰 개체를 이동할 수 있나요?

안전

  • 보안: 어떤 유형의 암호화가 필요한가요? 저장된 데이터 암호화가 필요한가요? 데이터에 연결하는 데 어떤 인증 메커니즘을 사용하시겠습니까?
  • 감사: 어떤 종류의 감사 로그를 생성해야 하나요?
  • 네트워킹 요구 사항: 다른 네트워크 리소스의 데이터에 대한 액세스를 제한하거나 관리해야 합니까? Azure 환경 내에서만 데이터에 액세스할 수 있어야 합니까? 특정 IP 주소 또는 서브넷에서 데이터에 액세스할 수 있어야 합니까? 온-프레미스 또는 다른 외부 데이터 센터에서 호스트되는 애플리케이션 또는 서비스에서 액세스할 수 있어야 합니까?

DevOps (디브옵스)

  • 기술 세트: 팀이 사용하는 데 능숙한 프로그래밍 언어, 운영 체제 또는 기타 기술이 있나요? 팀에서 작업하기 어려운 다른 항목이 있나요?
  • 클라이언트: 개발 언어에 대한 좋은 클라이언트 지원이 있나요?

다음 단계