본문 바로가기
Programming

[Database] SQL이란?

by 개발자 염상진 2022. 5. 30.

 

SQL이란?

 

SQL(Structured Query Language)는 구조화된 Query언어다. Query언어란 직연하자면 질의문을 의미한다. 구글이나 네이버에서 검색을 치는 행위가 query문이다. 구글이나 네이버 데이터베이스에 저장되어 있는 정보를 필터링하기 위한 도구가 query문이다.

 

SQL이란 In-Memory가 아닌 데이터베이스용 프로그래밍 언어로 DB내 저장되어 있는 필요한 정보만 출력할 수 있도록 도와주는 도구다. 주로 관계형 데이터베이스(RDBMS)가 사용됨. SQL문을 데이터베이스에서 사용하기 위해서는 데이터의 구조가 고정되어 있어야 한다. 

 

데이터베이스는 크게 두가지 종류로 구분된다. 먼저 SQL을 사용할 수 있는 데이터베이스와 데이터의 구조가 고정되어 있지 않은 NoSQL 데이터베이스로 구분된다. 관계형 데이터베이스와는 다르게 테이블을 사용하지 않고 다른 형태로 데이터를 저장한다. NoSQL의 대표적인 예시가 MongoDB 등의 문서지향 데이터베이스다. 

 

 

데이터베이스가 왜 필요한가?

 

프로그램에서 가장 중요한 요소 중 하나가 데이터다. 만약 데이터베이스가 없다면 서버 컴퓨터의 In-Memory 형식으로 데이터를 저장한다. 대표적인 In-Memory 공간이 File이다. 

 

① In-Memory의 문제

문제는 In-Memory의 경우 서버 프로그램이 종료되면 데이터가 삭제되어 버린다. 변수에 저장했던 데이터는 프로그램이 종료되는 즉시 휘발되어 버린다. 데이터가 보호되지도 않고, 원하는 데이터를 뿌려줄 수도 없게 된다. 데이터의 수명이 프로그램 수명에 의존하는 최악의 시나리오가 전개된다.

 

② File I/O의 문제

In-Memory 방식에서 진화한 데이터 저장 및 활용 방법이다. notepad나 excel을 사용해서 데이터를 관리할 수 있다. 휘발성 문제를 해결하고, 데이터의 수명을 연장할 수 있다. 

 

하지만 File I/O를 사용하는 경우 필요한 데이터 양이 적은 량이라고 하더라도 파일 전체를 읽어와서 필요한 데이터를 파싱해야 하는 작업이 반복된다. 즉 불필요한 작업이 반복된다는 것이다.

 

또한 읽어들여야 할 파일이 손상되었거나 여러개의 파일을 동시에 다뤄야 하는 경우 데이터를 읽고 쓰는 작업에 엄청난 양의 메모리가 소모되어 버린다. 

 

데이터베이스는 위 두가지 문제를 모두 해결함과 동시에 File이나 In-Memory에서 제공하지 못하는 추가적인 기능을 제공하고 있다. 여러 프로그램에서 동시에 SQL을 이용해서 데이터에 접근하기 때문에 훨씬 유연한 프로그램 운영이 가능해진다.

 

 

3-tier Architecture

 

 

① 클라이언트는 서버에 특정 정보를 요청한다.

 

② 서버는 클라이언트의 요청을 SQL문으로 변경하여 DB에 접속하게 된다.

 

③ DB는 SQL문을 토대로 데이터를 필터링한 후 서버에 해당 데이터를 전송하게 된다. 서버입장에서는 이미 필터링 된 정보를 받았기 때문에 추가적인 필터링 작업을 필요로 하지 않는다. 

 

이렇게 클라이언트 >> Server >> Database 3 tier로 구성된 Architecture가 가장 흔히 사용되는 웹 애플리케이션의 구조다. 심지어 Server Framework에서는 ORM(Object Relational Mapping)를 지원하기 때문에 SQL이 아닌 서버 프로그램 언어로 DB에 접근도 가능하다.

 

 

 

 

[Programming] CORS란? (preflight, OPTIONS 메소드?)

CORS가 도입된 배경 CORS가 도입되기 전 클라이언트들은 서버에서 제공하는 리소스를 가지고만 서버와 통신을 진행했다. 이 경우 서버와 클라이언트의 origin은 동일했기 때문에 굳이 CORS를 도입하

about-tech.tistory.com

 

 

[Web Server] fetch API 사용하는 방법

fetch API 사용하는 방법 fetch는 프론트에서 서버로 리소스를 요청하기 위해서 Javascript에 내장된 Promise 함수다. 기본적으로 비동기 태생을 지닌 녀석이기 때문에 Javascript가 아닌 Node.js나 웹 브라우

about-tech.tistory.com

 

댓글