Data [ Engineer & Analytics &science ]/DB & SQL(RDBMS, NoSQL)

[ DB & SQL(RDBMS, NoSQL) ] SQL vs NoSQL

안다미로 : APP & Web3 & D.S 2024. 12. 22. 22:42

 

 

 

 

[ DB & SQL(RDBMS, NoSQL) ] SQL vs NoSQL

 


 

 

∇ DB & SQL_데이터 베이스 공부 : SQL vs NoSQL

목  차

1. 데이터베이스란?
2. SQL(Structrued Query Language)란
3. NoSQL이란?

 

 


 

 

Ⅰ. 데이터베이스란?


 

🩻 데이터 베이스란.

        - 데이터베이스는 데이터를 저장하는 곳으로

             "데이터를 여러 사람이 공유하여 사용할 목적으로 체계화해 통합*관리하는 데이터의 집합" 입니다.

 

             == 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음.

 

             √ '데이터베이스'는 중복된 데이터를 없애고, 자료를 구조화하여 효율적인 처리를 할 수 있도록 관리해주기 때문에

                   여러 업무에 여러 사용자가 데이터베이스를 사용할 수 있습니다.

 

             √ "데이터베이스 관리 시스템(DBMS)" 

                  : 데이터베이스는 응용 프르갬과는 다른 별도의 미들웨어에 의해 관리됩니다.

                       -> 데이터베이스를 관리하는 이러한 미들웨어를  '데이터베이스 관리 시스템(DBMS)이라고 합니다.

 

 

 

🩻 데이터 베이스의 특징.

 

     ▶ 사용자의 질의에 대하여 '즉각적인 처리와 응답'이 이루어집니다.

     ▶ 생성 * 수정 * 삭제를 통하여 항상 최신의 데이터를 유지합니다.

     ▶ 사용자들이 원하는 데이터를 동시에 공유할 수 있습니다.

     ▶ 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조 할 수 있습니다.

     ▶ 응용프로그램과 데이터베이스는 독립되어 있으므로,

              데이터의 논리적 구조와 응용프로그램은 별개로 동작됩니다.

 

 

🩻 관계형 데이터베이스란?

         ◇ "관계형 데이터베이스"는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류로서 

                 '테이블(Table)'로 이루어져 있고, 이 테이블은 키(key)와 값(value)의 관계를 나타냅니다.

               ==>> 데이터의 종속성을 관계(realtionship)로 표현한 것이 관계형 데이터베이스의 특징입니다.

 

 

                ▷ 테이블은 이름을 가지고 있으며, 행(row)과 열(column) ,  그리고 거기에 대응하는 값을 가집니다. 

 

                ▷ 관계형 데이터베이스는 위와 같이 "구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체  ! "

 

 

             √  관계형 데이터베이스의 특징.

                      

                       ▶ 데이터의 분류, 정렬, 탐색 속도가 빠릅니다.

                       ▶ 신뢰성이 높고 어떤 상황에서도 데이터의 무결성을 보장해줍니다.

                       ▶ 기존에 작성된 스키마를 수정하기가 어렵습니다.

                       ▶ 데이터베이스의 부하정도를 분석하는 것이 어렵습니다.

 

 

🩻 대표적인 데이터베이스 서비스.

         ◆ SQL : MYSQL, SQLite,  PostgreSQL,  등등.

         ◆ NoSQL :  mongoDB, DynamoDB, CouchDB 등등.

 

 

 


 

Ⅱ. SQL ( Structured Query Language ) 이란?


 

🩻 SQL 이란?

        ∇ '데이터베이스'와 소통하기 위해 특별히 디자인된 언어입니다.

        ∇ '데이터베이스'에서 데이터를 { 정의 * 조작 * 제어 } 하기 위해 사용되며,

                 SQL 구문도 위의 목적에 맞게 크게 3가지고 구분됩니다.

 

 

       ▷ SQL은 많은 정부기관과 기업들이 사용.

       ▷ SQL의 데이터 구조는 엄격

       ▷ SQL의 커맨드는 영어와 비슷

       ▷ SQL은 엑셀과도 비슷.

 

★ ORM 이란??

        ==  파이썬/자바 등의 코드를 가져와서 SQL문으로 변환해 주는 것.

                  시간을 아껴주는 장점이 있지만 ORM에 대한 의존도가 너무 커지기 때문에 

                    ORM에 문제가 생겼을 때를 대비해, SQL에 대해서도 알아두는 것이 좋음.

 

🩻 대표적인 SQL. [ My SQL ]

        "My SQL" 은 가장 널리 사용되고 있는 "관계형 데이터베이스 관리 시스템(RDBMS : Relational DBMS)"  입니다.

 

               -> My SQL은 오픈 소스이며,  다중 사용자와  다중 스레드를 지원합니다.

                      ++ C/C++/JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하고 있습니다.

 

            ◇ My SQL의 장점.

                    1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있습니다.

                    2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원합니다.

                    3. 크기가 큰 데이터 집합도 빠르고 효과적으로 처리할 수 있습니다.

                    4. 표준 SQL 형식을 사용합니다.

                    5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정 가능.

 

 

 


 

 

Ⅲ. NoSQL  이란?


🩻 NoSQL이란?

        - Not Only SQL 혹은 Not SQL으로 뜻이 딱 한가지의 DB만을 뜻하지는 않습니다.

            { NoSQL은 거대한 DB의 그룹입니다 }

 

 

 

🩻 NoSQL의 3가지 카테고리.

 

        1.  Document DB

 

                √ 몽고 DB ( Mongo DB )

 

    - > Document DB의 가장 대표적인 예.

    - > Mongo DB는 데이터를 JSON Document 형태로 저장해서 보통의 SQL처럼 행과 열이 존재하는 것이 아니라,                   원하는 어떤 종류의 데이터든, 어떤 모양의 데이터든 저장이 가능합니다.

 

 

 

        2.  Key Value DB

                 -Key Value DB는 어떤 종류의 DB를 얻을 수 있는지가 제한적입니다.

 

                 저장하기전에 DB에서 무엇을 얻을 지 미리 생각해놔야 합니다.

                 반대로 NOSQL Key Value DB에서는 SQL에서 하던것처럼 쿼리를 적용 할 수 없습니다.

 

                     √ 카산드라 DB ( Cassandra DB )

                          : Column Wide Database의 유형이기도 한 카산드라 DB는 읽고 쓰기가 매우 빠릅니다.

                            검색엔진처럼 많은 양의 데이터를 빠르게 읽어야 할 때 카산드라DB를 쓰면 좋습니다.

 

                     √ Amazon Dynamo DB

                          : DynamoDB는 서버리스하고 분산된 Key Value DB로

                           빠르게 많이 쓰고(Write), 많이 읽어야할 때(read) 사용하면 매우 편리합니다.

 

 

        3.  Graph DB

                 -Graph DB는 각 노드 사이 관계를 알아야 하고, Column이나 Document가 필요없을 때 사용합니다.

 

                     ex) SNS를 만들 때 Graph DB가 필요합니다.

                             - 각각의 entity를 저장하고 이를 관계망으로 연결 하는 것이 필요하기 때문.

->> 유저 1이 사진 1을 저장하고, 유저1은 유저 2의 친구고, 유저 1이 유저 2의 사진에 좋아요를 누르는 등의

       데이터베이스 작업은 그래프 데이터베이스에 저장하는 것이 훨씬 수월합니다.

 

 

                     √ TAO : 페이스북에서 만든 Graph DB

                     √ Neo4J : 소셜 네트워크를 만들 때 사용하기 좋은 Graph DB

 

 

 


 

Ⅳ. SQL vs NoSQL 


 

    평범한 프로젝트, 간단한 프로젝트는 SQL을 사용하는 것이 좋습니다.

 

     -  SQL로 대부분의 코드 구현이 가능하기 때문.

     -  NoSQL은 특별한 경우나 특별한 이슈들에 대응하기 좋은 데이터베이스입니다.