SQL의 룩업 테이블은 무엇이며 용도는 무엇입니까?


최상의 답변

참조 테이블은 사용되는만큼 “SQL 대상”이 아닙니다. 데이터베이스 디자인에서. 일반적으로 국가, 주, 도시 등의 이름이 포함 된 테이블과 같이 상대적으로 정적 인 데이터의 데이터베이스 정규화 를 지원하는 데 사용됩니다.

데이터베이스 디자인 맥락에서 “조회 테이블”에 대한 공식적인 학술적 정의가 있는지 확실하지 않지만, 생각할 때 일반적으로 다음 속성을 가진 테이블을 생각합니다.

  • 개별 애플리케이션 이벤트와 관련된 데이터가 아닌 구성 또는 설명 데이터가 있습니다.
  • 이벤트 관련 테이블에 비해 작습니다.
  • 삽입 및 테이블을 읽고 업데이트가 발생하더라도 드물게 발생합니다.
  • 대부분의 경우 조인이 시작되거나 끝납니다.
  • 나는 종종 테이블과 유사하다고 생각합니다. 사전 압축 알고리즘 의 “dictionary”.

조회 테이블의 몇 가지 예 :

  • 애플리케이션 구성 테이블
  • 지리적 (위에서 언급 한대로) 또는 기타 설명 테이블 공급 업체 및 공급 업체 목록, 웹 스토어 용 제품 카탈로그 테이블 등
  • 데이터 센터를 관리하는 애플리케이션의 컴퓨터 이름 및 컴퓨터 하드웨어 속성 목록
  • 웹 사이트에 대한 사용자 목록 및 사용자 프로필 데이터 (이미지, 사용자 설명 등). 가장 최근에 방문한 페이지와 같은 항목은 조회 테이블에 포함되지 \_ 않습니다 \_.

답변

속도는 실제로 NoSQL 데이터베이스로 전환하는 원동력이 아닙니다. SQL과 NoSQL 데이터베이스를 나란히 놓고 간단한 업데이트와 테이블의 읽기를 비교하면 둘 다 이러한 쿼리에 매우 빠르게 응답해야합니다.

주요 차이점은 NoSQL 데이터베이스는 단순하게 처리하도록 특별히 설계되었다는 것입니다. 낮은 수준의 쿼리를 사용하면 범위 또는 정렬과 같은 몇 가지 다른 간단한 작업을 가져오고 설정할 수 있습니다. 큰 단점은 거기에 넣은 데이터를 사용할 방법을 결정하고 필요한 형식으로 데이터에 액세스 할 수있는 적절한 스키마를 미리 설계해야한다는 것입니다.

반면에 입력 한 데이터가 올바르게 비정규 화 된 경우 SQL은 엄청나게 복잡한 쿼리를 처리 할 수 ​​있습니다. 특정 사용 사례를 중심으로 스키마를 설계 할 필요가 없으며 기본 스키마를 수정하지 않고도 모든 형식의 데이터를 반환 할 수있는 쿼리 언어의 엄청난 유연성이 있습니다.

그 이유는 SQL은 느린 것으로 유명합니다. 대규모 데이터 세트에서 복잡한 쿼리를 처리하는 데는 시간이 걸리지 만 NoSQL은 처음에 느리고 복잡한 쿼리를 실행할 수있는 기능을 제공하지 않습니다.

NoSQL 데이터베이스와 똑같은 방식으로 SQL 데이터베이스를 사용할 수없는 이유입니다. 모든 데이터를 큰 테이블에 넣고 가장 기본적인 쿼리 만 사용하십시오. 그러면 동등한 NoSQL 데이터베이스와 함께 매우 잘 수행되지만 가장 유용한 기능의 대부분을 낭비하게됩니다. 이것은 실제로 많은 대형 SQL 데이터베이스의 경우입니다. 비정규 화가 깨지고 특정 쿼리에 대해 “최적화”하기 위해 유연성이 희생됩니다.

그러나 SQL에는 특정 단점이 있으며 일부 상황에서는 이러한 단점이 문제가되어 우리가 제공하는 유연성을 기꺼이 희생 할 수 있습니다. 극복해야합니다.

첫째, 수평으로 잘 확장되지 않습니다. 데이터를 여러 소형 시스템으로 분할하려는 시도는 불가능하지는 않지만 성능에 큰 영향을 미칠 수 있습니다. 대규모 SQL 데이터베이스는 적절한 성능을 유지하기 위해 고전력 고가의 하드웨어에서 실행되는 경향이있는 반면, NoSQL 데이터베이스는 클러스터에 추가 상용 하드웨어를 추가하기 만하면 모든 크기로 쉽고 저렴하게 확장하는 경향이 있습니다.

두 번째 그리고 가장 중요한 것은 SQL이 내결함성이 없다는 것입니다. 예, 두 번째 백업 시스템에 데이터를 복제 할 수는 있지만 고성능 특수 하드웨어의 비용을 두 배로 늘리고 동기화 상태를 유지하는 추가 부하를 처리하려면 하드웨어가 훨씬 더 강력해야합니다. 예를 들어이를 Cassandra 클러스터와 비교하면 원하는 경우 여러 데이터 센터에 분산되어있는 데이터 복제 기능을 사용하여 12 개의 더 작은 머신을 실행할 수 있습니다. 부하가 자동으로 분산되고 업데이트가 클러스터 전체에 푸시되며 최종 사용자가 한 시스템의 손실을 알아 차리지 못합니다.

이 두 가지가 두 기술 중에서 선택해야하는 실제 이유입니다. 데이터베이스가 단일 시스템에 맞을만큼 작고 백업에서 복원하는 동안 가끔 다운 타임이 발생하는 경우 SQL을 사용하십시오. SQL을 사용하면 개발이 크게 단순화되고 요구 사항이 변경 될 때 유연하게 적응할 수 있습니다. 데이터 세트가 엄청나거나 SLA가 빠듯한 경우 NoSQL로 이동합니다. 그 사이 어디에서든 판단을 내려야하지만, NoSQL 기술은 현재 수요가 많다는 점을 명심하십시오.경험을 얻기 위해 그렇게하는 것이 가치가있을 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다