이 도움말에서는 SQL의 의미, 정의, 다양한 데이터베이스 기술에 대한 적용 등 SQL의 핵심을 간략하게 소개합니다. 데이터베이스에서 이벤트 스트림 처리에 이르기까지 SQL을 사용하는 다양한 유형의 시스템을 소개합니다.

SQL이란 무엇인가요? 

정의: SQL [대명사. "속편"] - 약자 구조화된 쿼리 언어(SQL)데이터베이스에서 표 형식/관계형 데이터 집합을 모델링하고 관리하는 데 사용되는 표준화된 데이터 정의 언어(DDL) 함수 집합, 테이블, 보기를 생성하고 관계형 스키마 모델을 정의하는 데 사용되는 데이터 정의 언어(DDL), 테이블의 데이터를 쿼리, 삽입 및 수정하는 데이터 조작 언어(DML) 등이 있습니다.

*읽기 전용 선택 쿼리는 엄밀히 말하면 데이터 쿼리 언어(DQL) 그룹에 속합니다. 하지만 운영상으로는 읽기 전용 쿼리보다 더 많은 작업을 수행할 수 있기 때문에 DML이라고 부르는 경우가 많습니다.

SQL의 매우 간략한 역사

IBM 연구원 도널드 체임벌린과 레이몬드 보이스 SQL 를 개발하여 1970년대에 에드가 코드의 관계형 데이터 모델 개념을 현실화했습니다. 관계형 데이터베이스를 위한 이 새로운 언어 덕분에 시스템이 물리적으로 데이터를 저장하는 방법이나 위치를 이해하지 않고도 데이터에 액세스할 수 있게 되었습니다.

회원들은 SQL 사양을 캡슐화하기 위해 수년 동안 ISO 표준을 개발하고 제안해 왔습니다. 예를 들어, 1987년에 국제 표준화 기구에서 ISO 9075:1987 사양을 만들었습니다. 또 다른 인기 있는 구현은 1992년의 ISO 표준을 참조하는 SQL 92였습니다. 추가 및 수정은 최근까지도 계속되었습니다. 2016.

다른 스핀오프에는 챔벌린의 진행 중인 작업 와 함께 SQL++ 최신 데이터 애플리케이션 및 분석을 위한 추가 기능을 제공합니다.

누가 SQL을 사용하나요?

모든 주요 데이터베이스 플랫폼은 관계형 데이터베이스 시스템을 위한 표준 명령 인터페이스로 SQL을 채택했습니다. 하지만 트랜잭션 데이터베이스만이 SQL에 관심을 갖는 것은 아닙니다. 스트리밍 플랫폼과 애플리케이션도 개발자를 위한 다양한 종류의 백엔드 서비스를 추상화하기 위해 SQL을 사용해 왔습니다.

또한 분석 및 NoSQL 플랫폼은 최종 사용자가 쿼리를 더 쉽게 할 수 있도록 SQL을 사용하여 사용자 지정 코딩의 필요성을 줄였습니다. 또한 모든 프로그래밍 언어에는 개발자가 사용할 수 있는 SQL 인터페이스가 있습니다.

SQL 데이터베이스는 무엇을 할 수 있나요?

SQL 데이터베이스는 스키마라고 하는 행 및 열 정의 집합 내에 정보 테이블을 저장합니다. 테이블은 공통된 특성을 공유하는 행 값을 그룹화합니다(예: 상점 테이블, 판매 거래 테이블 등). 

SQL 데이터베이스를 사용하면 이러한 테이블에 새 데이터를 삽입한 다음 나중에 간단한 쿼리를 사용하여 데이터를 추출할 수 있습니다. 테이블을 조인하고, 그룹화하고, 요약하여 해당 값을 사용하여 즉석에서 계산할 수 있습니다.

SQL 데이터베이스는 장기간 액세스를 위해 데이터를 디스크에 저장하고 유지하는 데 중점을 둡니다. 따라서 테이블, 스토리지 및 관련 서비스를 관리하기 위한 다양한 기능이 존재합니다.

표준화에 대한 이러한 집중은 오늘날 데이터베이스가 비즈니스의 중요한 일부가 되는 데 도움이 되었습니다.

SQL 쿼리란 무엇인가요?

SQL 쿼리는 데이터베이스에 데이터 테이블을 검색하거나 관리하는 방법을 알려줍니다. 행 선택, 테이블 생성, 행 삽입 또는 삭제를 위한 다양한 쿼리가 존재합니다.

예를 들어 SELECT 쿼리는 테이블에서 특정 이름의 열을 요청하고 행 집합을 반환받습니다:

열이 특정 값과 일치하는 행을 요청할 수도 있습니다:

한 테이블의 값을 다른 테이블에 매핑하여 일치시킬 때 쿼리에서 가상으로 여러 테이블을 조인합니다:

쿼리는 또한 각 열의 데이터 유형을 정의하여 새 테이블을 만듭니다. 이 예에서는 정수, 가변 길이 문자열 문자 및 부동 소수점 숫자로 구성된 세 개의 열을 만듭니다:

그런 다음 INSERT 문을 사용하여 새 테이블에 새 행을 추가합니다:

SQL 명령은 훨씬 더 고급스럽고 복잡할 수 있지만 모두 위의 기본 예제를 기반으로 합니다.

다양한 SQL 데이터베이스 플랫폼

Overview of the SQL Landscape - table of application types

SQL 데이터베이스에는 Oracle, Microsoft SQL Server*, IBM DB2, MySQL, PostgreSQL 등과 같은 엔터프라이즈 관계형 데이터베이스가 포함됩니다. 많은 기업이 이러한 데이터베이스를 솔루션의 핵심 부분으로 사용하며 높은 안정성, 고성능, 사용자 역할 관리 및 암호화를 포함한 기본 제공 보안을 기대합니다.

*Microsoft 제품명이 'SQL 데이터베이스'라는 일반적인 용어를 검색하는 사람들에게 혼동을 주는 경우가 많기 때문에 두 용어를 혼동하여 잘못 사용하는 경우가 있습니다. 보다 명확하게 참조하기 위해 "MSSQL"을 사용합니다.

이러한 일반적인 데이터베이스에 대해 많은 글이 쓰여졌지만 SQL을 선택한 언어로 사용하는 다른 많은 시스템도 있습니다. 아래에서 이러한 다양한 시스템에 대해 설명합니다.

데스크톱 및 임베디드 SQL 데이터베이스

우리는 엔터프라이즈 데이터베이스에 너무 익숙해져서 다른 데이터베이스 플랫폼이 얼마나 중요한지(또는 얼마나 중요한지) 잊기 쉽습니다. 데스크톱 데이터베이스는 파일 기반이며 중앙 소스로 다시 연결되는 네트워크 계층을 포함하지 않습니다. 사용자는 파일이나 폴더를 압축하여 프로젝트나 문서 파일로 다른 사람들과 공유합니다.

초기에 데스크톱 개발자와 분석가들은 최초의 SQL 호환 데이터베이스로 Microsoft Access와 Dbase를 선택했습니다. 많은 데이터 관리자가 여전히 내부 양식 기반 데이터 입력 도구를 구축하는 데 Access를 사용하고 있습니다.

마찬가지로, 많은 사람들이 낮은 오버헤드가 필요한 임베디드 및 오프라인 시나리오에 SQLite를 선택합니다. 또한 이식 가능한 독립형 애플리케이션을 구동하도록 설계되었습니다. 오늘날까지 SQLite는 모바일 애플리케이션을 구축하는 개발자들에게 널리 사용되고 있습니다.

중앙 집중식 실시간 서비스는 아니지만, 이러한 종류의 기술을 위한 동기화 솔루션이 존재합니다. 동기화 솔루션을 사용하면 필요한 경우 엔터프라이즈 데이터 저장소를 업데이트할 수 있지만, 일반적으로 다른 프로그래밍 계층이 데이터베이스 자체 위에 이를 전달합니다.

클라우드 SQL 데이터베이스

구글 클라우드, 아마존 웹 서비스, 마이크로소프트 애저와 같은 퍼블릭 클라우드 플랫폼 공급업체는 모두 SQL을 사용하는 서비스형 데이터베이스(DBaaS) 제품을 호스팅하고 있습니다. 공급업체는 백엔드 시스템을 제공하는 데 집중하고 사용자는 애플리케이션 코딩에 집중할 수 있습니다.

유사한 제품의 온프레미스 버전과는 다를 수 있지만 관리 콘솔, 모니터링, 최적화, 확장 가능한 분산 컴퓨팅 환경이 내장되어 있습니다.

클라우드 공급업체는 컨테이너 오케스트레이션(예: Kubernetes)을 통해 확장 가능한 제어 기능을 제공할 수도 있고, 수요에 따라 자동으로 확장하거나 축소하는 클라우드 공급업체도 있습니다.

하이브리드 클라우드 데이터베이스

많은 기업이 SQL 기반 DBaaS의 유연성과 함께 온프레미스 백업의 보안을 원합니다. 데이터베이스 공급업체는 클라우드 플랫폼을 활용하여 유연한 배포 옵션을 제공합니다. 하이브리드 클라우드 SQL 데이터베이스 배포는 분산된 데이터베이스의 일부를 다른 플랫폼이나 온프레미스에 저장하여 부하와 안정성을 분산시킵니다.

이 주제 영역은 클라우드 데이터베이스 통합이 성숙해짐에 따라 계속 발전하고 있습니다. 기업은 필요에 따라 항상 다양한 수준의 제어를 유지하려고 노력할 것입니다. 이는 조만간 바뀔 것으로 예상하지 마세요.

분석 SQL 데이터베이스

일부 SQL 기반 데이터베이스는 고급, 대용량 또는 고성능 분석을 수행하는 데 중점을 두고 있습니다. 이러한 빅데이터 분석 데이터베이스에는 온프레미스 및 클라우드 기반 제품이 포함됩니다. 예를 들면 Snowflake, Amazon Redshift, Teradata 등이 있습니다.

NoSQL 데이터베이스

NoSQL은 SQL과 어떤 관련이 있나요? 처음에는 JSON 문서 저장소로 웹 개발을 쉽게 하는 데 초점을 맞추었지만, 일부 NoSQL 플랫폼은 데이터를 색인하고 액세스하는 또 다른 방법으로 SQL을 통합했습니다.

Couchbase, MongoDB, Cassandra, Redis와 같은 NoSQL 공급업체는 각각 시스템 쿼리 및 상호 작용에 대한 고유한 접근 방식을 가지고 있습니다. 

일부는 타사 ODBC/JDBC 드라이버를 사용해 SQL 쿼리 시스템 위에 계층을 제공합니다. Couchbase와 같이 시스템에 기능을 구축하여 효율적인 인덱싱과 유연한 쿼리 분석 최적화를 가능하게 하는 경우도 있습니다.

JSON용 SQL

JSON 데이터에 SQL을 사용하려면 표준 SQL 외에 추가 구문이 필요합니다. 예를 들어, 추가 함수는 배열 내의 개체를 쿼리하거나 복잡한 매핑 집합에서 하위 개체를 찾을 수 있습니다. 

예를 들어, Couchbase는 이러한 종류의 상호 작용을 허용하도록 SQL을 확장하기 위해 N1QL을 개발했습니다. 또한 카우치베이스는 분석 서비스에 챔벌린의 SQL++ 언어를 통합했습니다.

다른 엔터프라이즈 데이터베이스에는 JSON을 조작하기 위한 몇 가지 기능이 있지만 NoSQL 데이터베이스처럼 데이터베이스에 직접 JSON을 저장하고 상호 작용하지 않을 수 있습니다.

애플리케이션 개발자

데이터베이스 관리자(DBA)와 개발자를 구분하는 것이 중요한데, 둘 다 SQL에 대한 고유한 요구 사항이 있기 때문입니다. DBA는 많은 유지 관리 기능에 SQL이 필요하기 때문에 항상 SQL에 능숙해야 합니다. 그러나 개발자는 데이터를 가져오거나 내보내는 데 필요한 정도만 알면 됩니다.

이를 위해 개발자는 객체 관계형 매핑(ORM) 또는 객체 데이터 모델러(ODM) 라이브러리를 사용하여 기본 데이터베이스와 해당 SQL 쿼리 언어에서 프로그래밍을 추상화할 수 있습니다. 상위 수준의 방법을 사용하면 개발자는 익숙한 코드를 작성하는 데 집중할 수 있고, ORM/ODM 라이브러리는 SQL을 생성하고 표 형식의 데이터를 관리합니다. 또한 코드 변경이 필요할 때 데이터 모델을 관리하고 '마이그레이션'하는 데 도움이 됩니다.

예를 들어 Laravel의 Eloquent ORM, .NET 엔티티 프레임워크, SQLx, 주로 테이블 마이그레이션을 처리하는 전용 패키지(예: golang-migrate) 등이 있습니다. 오스만 는 NoSQL에 대한 JSON 스키마 및 유효성 검사를 제공하는 Couchbase의 Node.js SDK용 객체 데이터 모델러(ODM)입니다(오스만 포스트 소개).

애플리케이션이 프로덕션 시스템으로 성장하면 SQL 쿼리 효율성도 더욱 중요해집니다. SQL 중심의 파워 유저 또는 개발자는 SQL을 최대한 활용하고 코드의 병목 현상을 파악하며 쿼리를 최적화하는 방법을 찾습니다. 또한 ORM이나 기타 자동화된 시스템을 사용하는 대신 SQL 코드 생성을 수동으로 처리해야 할 수도 있습니다.

GraphQL은 객체 관계형 매핑의 고유한 문제점을 해결하는 ORM의 대안입니다. 데이터 소스 유형에 관계없이 일관된 데이터 상호 작용 언어를 제공합니다. Prisma와 같은 추가 패키지는 데이터베이스 연결 계층을 제공합니다.

빅 데이터용 SQL

분석 데이터베이스 외에도 많은 다른 플랫폼에서 데이터 과학 애플리케이션, 보고, 스트림 처리 및 대시보드에 SQL을 사용합니다.

Spark

데이터 과학자들이 자주 사용하는 Apache Spark의 분산 분석 환경은 분산 파일 데이터 세트에 데이터 프레임으로 액세스하기 위해 Spark SQL을 비롯한 다양한 언어를 사용합니다. 이 경우 SQL을 사용하여 백그라운드 작업을 수행하는 복잡한 에이전트 집합을 추상화할 수 있습니다.

Spark 환경은 Jupyter, Zeppelin, Databricks와 같은 웹 기반 플랫폼을 통해 사용할 수 있습니다.

비즈니스 인텔리전스 대시보드

데이터베이스에 그래픽 사용자 인터페이스를 사용하는 데이터 및 비즈니스 분석가는 다음과 같은 연결에 익숙합니다. 백엔드 데이터베이스. SQL을 직접 사용할 필요가 없습니다. 대신 비즈니스 분석가는 마법사를 사용하여 관련 값을 선택하고 분석합니다.

출력은 사용자가 보고서에 넣을 수 있는 차트, 맵 또는 표 요약입니다. 애플리케이션 자체에서 테이블을 메모리로 읽고 기본 SQL을 노출하지 않고 사용자의 목적에 맞게 변환하는 경우가 많습니다.

이러한 플랫폼은 데이터 세트가 커지면 문제가 발생합니다. 이때 시스템은 데이터를 클라이언트로 보내기 전에 집계 또는 계산을 처리하기 위해 SQL 쿼리를 데이터베이스로 전달(통과 쿼리라고도 함)할 수 있습니다. 이 범주에 속하는 BI 제품에는 Tableau, QlikView, SAP 등이 있습니다.

이벤트 스트리밍 SQL

아파치 카프카의 성공으로 여러 소스의 데이터를 분산된 '변경 로그' 메시징 시스템으로 옮길 수 있게 되었습니다. 그러나 이벤트가 지나갈 때 실시간 분석을 수행하는 애플리케이션을 Kafka 위에 구축하는 것은 쉽지 않습니다. 이벤트 스트림에는 실시간 데이터에서 가치를 추출하기 위한 SQL 기반 옵션이 있습니다.

ksqlDB는 SQL을 사용해 기본 스트림을 생성하고 관리함으로써 이 문제를 해결합니다. 그런 다음 사용자는 저장된 데이터와 실시간 스트림이 수신될 때 모두에 대해 표준 쿼리를 생성할 수 있습니다.

추가 읽기

위의 다양한 용도에서 볼 수 있듯이, 오늘날의 데이터베이스 솔루션은 SQL을 광범위하게 사용합니다. 기본 패턴을 빠르게 익힌 다음 다양한 분석 및 운영 시나리오에 적용할 수 있습니다. 다음은 Couchbase 기술이 SQL의 유연성과 친숙함을 어떻게 활용하는지에 대해 자세히 알아볼 수 있는 몇 가지 링크입니다.

작성자

게시자 타일러 미첼 - 선임 제품 마케팅 매니저

카우치베이스에서 선임 제품 마케팅 매니저로 일하면서 제품에 대한 지식을 대중에게 알리는 동시에 가치 있는 콘텐츠로 현장 팀을 지원하고 있습니다. 경력 절반을 GIS 분야에서 일한 그는 지리공간에 대한 개인적인 열정을 가지고 있습니다. 지금은 AI와 벡터 검색을 가장 중요하게 생각합니다.

댓글 남기기