기본 콘텐츠로 건너뛰기

데이터베이스 서버 학습하기


데이터베이스 서버 학습하기

원문 http://yhy868700.tistory.com/manage/posts

데이터베이스 서버

데이터베이스(영어: database, DB)는 체계화된 데이터의 모임이다. 즉, 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이다.


데이터베이스(database)는 '작성된  목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음'저렇게 위키에 정의가 되어있다. 쉽게 말하면 데이터베이스는 정보를 수집하고 보관하기 위한 시스템으로 우리가 흔히 프로그래밍의 언어를 배울때 항상 배우는 파일 입출력 (File I/O)보다 향상되게 데이터를 접근하고 관리할 수 있다. 

데이터베이스의 종류는 다양하다 1) 계층형 데이터베이스2) 네트워크형 데이터베이스3) 관계형 데이터 베이스, 그리고 4) NoSQL 데이터베이스가 있다. 

  • 1) 계층형 데이터 베이스는 데이터의 관계를 트리 구조로 정의하고, 부모, 자식 형태를 갖는 구조이다. 풀어서 말하면 상위에 레코드가 복수의 하위 레코드를 갖는 구조이다. 하지만 데이터의 중복이 문제가 생긴다. 

  • 2) 네트워크형 데이터베이스는 계층형 데이터의 데이터 중복 문제를 해했고, 레코드간의 다양한 관계를 그물처럼 갖는 구조이다. 하지만 복잡한 구조 때문에 추후에 구조를 변경한다면 많은 어려움이 따른다. 

  • 3) 관계형 데이터베이스는 우리가 흔히 표현하는 행(Column), 열(Record)로 구성된Table간의 관계를 나타낼때 사용한다. 우리는 이렇게 표현된 데이터를  SQL(Structured Query Language)을 사용하여 데이터 관리 및 접근을 한다.

  • 4) NoSQL 데이터베이스는 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 이용한다. 키(key)와 값(value)형태로 저장되고, 키를 사용해 데이터 관리 및 접근을 한다.

우리가 흔히 사용하는 관계형 데이터베이스 (SQL)과 NoSQL 데이터베이스에 대해서 자세하게 알아보기  

  • 관계형 데이터베이스 (SQL)

    • 장점
      • 다양한 용도로 사용이 가능하고, 일반적으로 높은 성능을 보여주고 있다 (범용적 / 고성능)
      • 데이터의 일관성을 보증한다.
      • 정규화에 따른 갱신 비용 최소화

    • 단점
    • 대량의 데이터 입력 처리
      • 갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경
      • 컬럼의 확장의 어려움
      • 단순히 빠른 결과
    • 주요 제품 종류
      • Oracle / Oracle
      • MS-SQL Server / Microsoft
      • MySQL / Oracle (SunMicroSystems)
      • DB2 / IBM
      • Infomix / IBM
      • Sybase / Sybase
      • Derby / APache
      • SQLite / Opensource
  • NoSQL 데이터베이스

    • SQL을 사용하지 않는다는 의미로, Not Only SQL (SQL이 필요 없다는 의미가 아니고, 개선/ 보안의 의미)
    • Non-Relational Operational Database SQL (관계형 데이터베이스가 아니다.) 
      • NoSQL의 장점
        • 대용량 데이터
        • 데이터 분산 처리
        • Cloud Computing
        • 빠른 읽기/쓰기 속도
        • 유연한 데이터 모델링
      • NoSQL의 종류
        • key / value
          • 휘발성/영속성
          • Memcached, Tokyo Tyrant, Flare, Roma, Redis
        • Document
          • 스키마 정의 없음
          • MongoDB, CouchDB
        • Big Table(Column 형) DB
          • 뛰어난 확장성, 검색에 유리
          • HBase, Cassandra, Hypertable

  우리가 흔히 사용하는 SQL 데이터베이스와 NoSQL의 데이터베이스는 언제 어떻게 사용하느냐가 굉장한 성능에 영향을 준다. 데이터 사이에 관계가 존재하면 SQL 데이터베이스를 사용하고, 데이터 사이에 관계가 필요 없으면 NoSQL 데이터베이스를 사용하면 된다.

  개인적인 의견 - SNS를 개발할때 User, Feed, Comment 등 다양한 데이터가 존재하고, 데이터 사이에 관계가 존재하기 때문에 SQL을 사용하면 보다 빠르게 데이터를 접근 할 수 있다. 만약 이 내용을 NoSQL로 구현을 했다면 모든 내용을 하나의 Document로 저장하면 되겠지만, 그렇게되면 데이터의 중복이 엄청나기 때문에 올바르지 못하다. 데이터 중복을 피하기 위해 만약 User, Feed, Comment 등의 값들을 각각 key-value로 저장하고 있다면, 데이터 접근 후 하나의 객체로 만드는 과정의 비용이 상당할 것이다. 생각만해도 클라이언트가 답답해 하는 소리가 들린다. 

  하지만 인터넷에 있는 기사를 긁어오는 스크랩 코드를 구현했다면 url + @로 key, 하나의 페이지를 value로 저장한다면 빠르고 쉽게 저장/접근이 가능하다. 이럴때는 NoSQL이 적절할 것이다.


댓글

이 블로그의 인기 게시물

3D프린팅 내부채움 큐라 기본 설정값 알아보기

http://yhy868700.tistory.com/admin/entry/post/?id=139 Infill( 내부 채움 ), Layer height( 레이어높이 ), Shell Thickness( 외벽두께 ) 에 대한 이해 http://actlab.hmandoo.co.kr/bbs/study/8114 URL COPY Infill( 내부 채움 ), Layer height( 레이어높이 ), Shell Thickness( 외벽두께 ) 에 대한 이해 오늘은 데스크톱  3D 프린팅의 출력 조건 중 가장 기본이면서 ,  가장 중요한 패러미터 값들인  Infill, Layer Height, Shell Thickness 가 무슨 의미인지 ,  어떻게 값을 조정하는 것이 좋은지 살펴보도록 하겠습니다 . 대부분의 슬라이싱 프로그램에서는 용어는 약간씩 다르지만 ,  위 세 가지의 값들에 대해 지정할 수 있도록 되어있습니다 . 그럼 , 몇가지  장비의 소프트웨어를 보겠습니다 . 먼저 얼티메이커 (Ultimaker) 가 만든 오픈소스 슬라이싱 소프트웨어인 큐라 (CURA) 입니다 . 위 그림에서 보시는 것처럼 큐라에서는  Quality( 품질 ) 의 세부항목으로  Layer Height ( 레이어높이 ), Shell Thickness( 외벽두께 ) 의 값을 사용자가 설정하도록 되어있습니다 .  그리고  Fill density ( 채움 밀도 ) 라는 이름으로 내부 채움 값을 지정할 수 있도록 되어있습니다 . 다음으로 ,  조트랙스 (Zortrax) 의 전용 프로그램인  Z-Suite 입니다 . 조트랙스는 대표적인  Plug & Play  타입  3D 프린터입니다 . 몇 가지 값들만 선택해서 바로 프린트할 수 있도록 만들어져있어 유저가 마음대로 조정할 수 있는 조...

안드로이드 스튜디오란 무엇인가요?

1. 안드로이드 스튜디오란 무엇인가요? Android Studio는 Android의 공식 IDE입니다. Android용으로 제작되어 개발을 가속화하고 모든 Android 기기용으로 최고급 앱을 빌드하도록 도와줍니다. 또한 풍부한 코드 편집, 디버깅, 테스트 및 프로파일링 도구를 비롯한 맞춤형 도구를 Android 개발자에게 제공합니다.  https://developer.android.com/studio/features.html 안드로이드  플랫폼 • 1.0(Apple Pie) : API-1 • 1.1(Banana Bread) : API-2 • 1.5( CupCake ) : API-3 • 1.6(Donut) : API-4 • 2.0(Eclair) : API-5 • 2.1(Eclair) : API-6,7 • 2.2( Froyo ) : API-8 • 2.3(Ginger Bread) : API-9,10 3.0( HoneyComb ) : API-11 3.x( HoneyComb ) : API-12,13 4.0( Icecream  Sandwich) : API-14,15 4.1(Jelly Bean) : API-16 4.x(Jelly Bean) : API-17,18 4.4( Kitkat ) : API-19,20 5.0(Lollipop) :  API-21, 22 6.0(Marshmallow) : API-23 1) 개발환경 구축   •  JDK  설치:  Java Developer Kit    > JDK를 설치하는 이유 링크 참조     https://docs.google.com/document/d/15HcEdbc8eXr4YPGvp3h87uZNsWZ4H5j_rxuNeKm35zU/edit?usp=sharing ...