데이터베이스에 어떤 형식의 데이터를 넣을지 정보를 가리키는 것

데이터 생성과 변형(Creating and Modifying Data)

목표

  • 테이블을 생성하는 쿼리를 작성한다.
  • 레코드를 삽입, 변형, 삭제하는 쿼리를 작성한다.

지금까지 어떻게 데이터베이스에서 정보를 추출하는지만 살펴봤다. 왜냐하면, 정보를 추가하는 것보다 정보를 조회하는 것이 더 자주 있는 일이기도 하고, 다른 연산자는 쿼리가 이해되어야만 의미가 통하기 때문이다. 만약 데이터를 생성하고 변형하고자 한다면, 다른 두짝의 명령어를 공부할 필요가 있다.

첫번째 짝은 create tabledrop table이다. 두 단어로 작성되지만, 사실 하나의 단일 명령어다. 첫번째 명령어는 새로운 테이블을 생성한다. 인자는 테이블 칼럼의 이름과 형식이다. 예를 들어, 다음 문장은 survey 데이터베이스에 테이블 4개를 생성한다.

create table Person(ident text, personal text, family text);
create table Site(name text, lat real, long real);
create table Visited(ident integer, site text, dated text);
create table Survey(taken integer, person text, quant real, reading real);

다음 명령어를 사용하여 테이블 중의 하나를 제거할 수도 있다.

drop table Survey;

데이블을 제거할 때 매우 주의하라. 대부분의 데이터베이이스는 변경사항을 되돌리는 기능을 제공하지만, 이러한 기능에 의존하지 않는 것이 더 낫다.

다른 데이터베이스 시스템은 테이블 칼럼의 다른 데이터 형식도 지원하지만, 대부분은 다음을 다음을 제공한다.

integer 부호있는 정수형
real 부동 소수점 실수
text 문자열
blob 이미지 같은 “이진 대형 개체”

대부분의 데이터베이스는 불(boolean)과 날짜/시간 값도 지원한다. SQLite는 불값을 정수 0 과 1 을 사용하고 날짜/시간은 앞선(earlier) 학습방식으로 표현한다. 점점 더 많은 데이터베이스가 위도와 경도 같은 지리정보 데이터 형식도 지원한다. 특정 시스템이 무슨 기능을 제공하고 제공하지 않는지 그리고 어떤 이름을 다른 데이터 형식에 부여하는지를 계속 파악하는 것은 끝없는 시스템 이식성에 대한 골치거리다.

테이블을 생성할 때, 칼럼에 몇가지 제약사항을 지정할 수 있다. 예를 들어, Survey 테이블에 대한 좀더 좋은 정의는 다음과 같이 될 것이다.

create table Survey(
    taken   integer not null, -- where reading taken
    person  text,             -- may not know who took it
    quant   real not null,    -- the quantity measured
    reading real not null,    -- the actual reading
    primary key(taken, quant),
    foreign key(taken) references Visited(ident),
    foreign key(person) references Person(ident)
);

다시 한번, 정확하게 무슨 제약사항이 이용가능하고 어떻게 호출되는지는 어떤 데이터베이스 관리자를 사용하는야에 달려있다.

테이블이 생성되자마자, 다른 명령어 짝 insertdelete를 사용하여 레코드를 추가하고 제거할 수 있다. insert 문의 가장 간단한 형식은 순서대로 값을 목록으로 나열하는 것이다.

insert into Site values('DR-1', -49.85, -128.57);
insert into Site values('DR-3', -47.15, -126.72);
insert into Site values('MSK-4', -48.87, -123.40);

또한, 다른 테이블에서 직접 값을 테이블에 삽입할 수도 있다.

create table JustLatLong(lat text, long text);
insert into JustLatLong select lat, long from site;

레코드를 삭제하는 것은 약간 난이도가 있다. 왜냐하면, 데이터베이스가 내부적으로 일관성을 보장할 필요가 있기 때문이다. 만약 하나의 단독 테이블만 관심을 둔다면, 삭제하고자 하는 레코드와 매칭되는 where절과 delete문을 함께 사용한다. 예를 들어, Frank Danforth가 어떤 측정도 하지 않았다는 것을 인지하자마자, 다음과 같이 Person 테이블에서 Frank Danforth를 제거할 수 있다.

delete from Person where ident = "danforth";

하지만 대신에 Anderson Lake를 실수로 제거했다면 어떨까요? Survey 테이블은 Anderson Lake이 수행한 7개의 측정 레코드를 담고 있지만, 이것은 결코 일어나지 말아야 된다. Survey.personPerson 테이블에 외래키이고, 모든 쿼리는 전자의 모든 값을 매칭하는 후자의 행이 있을 거라고 가정한다.

이러한 문제를 참조 무결성(referential integrity)이라고 부른다. 테이블 사이의 모든 참조는 항상 제대로 해결될 수 있도록 확인할 필요가 있다. 참조 무결성을 보증하는 한 방법은 기본키로 사용하는 레코드를 삭제하기 전에 외래키로 'lake'를 사용하는 모든 레코드를 삭제하는 것이다. 만약 데이터베이스 관리자가 이 기능을 지원한다면, 연쇄적인 삭제(cascading delete)를 사용해서 자동화할 수 있다. 하지만, 이 기법은 여기서 다루는 학습 영역밖이다.

모든 것을 데이터베이스에 저장하는 대신 많은 응용프로그램은 하이브리드 저장 모델을 사용한다. 천체 이미지 같은 실제 데이터는 파일에 저장되는 반면에, 파일 이름, 변경된 날짜, 커버하는 하늘의 영역, 스펙트럼 특성, 등등 정보는 데이터베이스에 저장한다. 대부분의 음악 재생기(MP3 플레이어) 소프트웨어가 작성되는 방식이기도 하다. 응용프로그램 내부 데이터베이스는 MP3 파일을 기억하고 있지만, MP3 파일 자체는 디스크에 있다.

도전 과제

  1. Survey.personnull인 모든 사용자를 문자열 'unknown'으로 대체하는 SQL문을 작성하세요.

  2. 동료중의 한명이 Robert Olmstead가 측정한 온도 측정치를 포함하는 다음과 같은 형식의 CSV 파일을 보내왔다.

    Taken,Temp
    619,-21.5
    622,-15.5

    survey 데이터베이스에 레코드로 추가하려고 CSV 파일을 읽고 SQL insert문을 출력하는 작은 파이썬 프로그램을 작성하세요. Person 테이블에 Olmstead 항목을 추가할 필요가 있을 것이다. 반복적으로 프로그램을 테스트하려면, SQL insert or replace 문을 자세히 살펴볼 필요도 있다.

  3. SQLite는 SQL 표준이 아닌 몇개 관리 명령어가 있다. 그중의 하나가 .dump로 데이터베이스를 다시 생성하는데 필요한 SQL 명령문을 출력한다. 또다른 것은 .load.dump에서 생성된 파일을 읽어서 데이터베이스를 복원한다. 여러분의 동료중의 한명이 텍스트인 dump 파일을 버젼 제어 시스템에 저장하는 것이 데이터베이스 변경사항을 추적하고 관리하는 좋은 방법이라고 생각한다. 이러한 접근법의 장점과 단점은 무엇일까요? (힌트: 레코드는 어느 특정한 순서로 저장되지 않는다.)

주요점

  • 데이터베이스 테이블은 테이블 이름과 필드의 이름과 특성을 명시하는 쿼리를 사용해서 생성된다.
  • 쿼리를 사용해서 레코드는 삽입, 갱신, 삭제될 수 있다.
  • 모든 레코드가 유일한 기본키를 가질 때 데이터를 변경하는 것이 더 간단하고 안전하다.

데이터의 종류는 크게 정형 데이터, 비정형 데이터, 반정형 데이터로 나뉩니다. 이것이 왜 이렇게 나뉘는 지는 데이터의 정의와 개념을 이해해야 합니다. 본 글에서는 데이터의 개념과 데이터의 종류들을 알아봅니다.

정형 비정형 데이터의 종류를 비교 분석을 통해 알아봅시다!

안녕하세요~ 🙂 이번 글에서는 데이터의 종류에 대해서 알아보겠습니다!

하지만 종류를 알기 전에 저희는 먼저 데이터가 무엇인지 그 개념을 먼저 이해하고, 어떻게 저장되는지 알아야 되겠습니다 

그렇다면 데이터의 개념을 먼저 이해를 하고 따라가봅시다. Let’s go!!

데이터란?

위키피디아

자료(資料, data, 데이터, 문화어: 데타)는 수, 영상, 단어 등의 형태로 된 의미 단위이다. 보통 연구나 조사 등의 바탕이 되는 재료를 말하며, 자료를 의미있게 정리하면 정보가 된다.

네이버

데이터의 사전적 정의는 “이론을 세우는 데 기초가 되는 사실. 또는 바탕이 되는 자료”

  1. 이론을 세우는 데 기초가 되는 사실. 또는 바탕이 되는 자료.
  2. 관찰이나 실험, 조사로 얻은 사실이나 자료.
  3. 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림 따위의 형태로 된 자료

관점에 따라서 정의가 조금씩 다르긴 하지만 여기서 공통적으로 알 수 있는 건, 데이터는 관찰이든, 실험이든, 분석이든 어떤 작업에 대한 원천이 되는 것라는 점입니다.

그렇기 때문에 데이터는 4차 산업의 새로운 원유라고도 합니다!!

데이터는 새로운 오일입니다!

출처 : https://www.linkedin.com/pulse/data-new-oil-llew-adamson

SVP Gartner, 2011년 Peter Sondergaard: “정보는 21세기의 석유이며, 분석은 연소 엔진입니다.”

IBM CEO인 Ginni Rometty는 2013년 Council on Foreign Relations에서 한 연설에서 다음과 같이 말했습니다. “데이터를 차세대 천연자원으로 생각하시기 바랍니다.”

인지 과학자이자 실리콘 밸리의 역사 저자인 피에로 스카루피(Piero Scaruffi)는 “석유와 데이터의 차이는 (불행히도) 더 많은 석유를 생산하지 않는 반면, 데이터 제품(자율주행 자동차, 드론, 웨어러블 등)은 더 많은 데이터를 생산한다(평소 어디에서 운전하는지, 얼마나 빠르게/잘 운전하는지, 누가 누구인가). “당신과 함께 등)”

많은 잘나가는? 사람들은 이미 데이터를 원유라고도 많이 비유합니다!

원유라는 단어에 초점을 맞춰봅시다!

원유(原油)는 땅속에서 뽑아낸, 정제하지 아니한 그대로의 기름을 말합니다!

원천, 원유, 정제하지 아니한.. 원천.. 이러한 부분이 우리가 이 글에서 정의 하는 데이터에서 가장 중요한 부분입니다.

이러한 정제되지 않은 데이터는 지난 10년 동안 인터넷의 급진적인 발전과 스마트폰 의 성장은 디지털 데이터 생성의 급증으로 이어졌습니다!


그럼 Oil ( Data) 은 어디에다 저장될까?

데이터베이스에 어떤 형식의 데이터를 넣을지 정보를 가리키는 것

차세대 빅데이터 기대감 ‘상승’…“모든 것이 클라우드에서 이뤄질 것” < 기술 < 기사본문 – AI타임스

데이터가 어디에서도 생성 될 수 있다 했지만, 결국 데이터의 의미를 잘 생각해보면 어떠한 값이 나와 저장이 되어야 한다는 겁니다!

마치 원유가 땅속에서 저장되듯이 데이터는 저장이 되어야만, 데이터가 되는 것입니다.

그러한 저장소를 저희가 흔히 이야기하는 데이터 베이스(Data base) 입니다!

이 글에서 이야기하는 데이터는 바로 데이터 베이스에 저장되는 데이터를 의미합니다.

데이터가 어떻게 저장되는지에 따라 데이터의 종류가 나눠진다고 생각을 하시면 좋습니다.

데이터들은 비 정형 데이터와 정형 데이터 반 정형 데이터 크게 나누어집니다.

저희가 마냥  데이터의 종류를 생각하면, 음성 데이터, 텍스트 데이터, 이미지 데이터, 등으로 나눠질 것 같지만, 그것 보다 더 크게 데이터 종류가 나눠지고, 그 이유를 위의 데이터의 개념을 통해서 느끼셨으면 좋겠습니다.

데이터 종류는?

  • 이제 데이터의 정의에 대해서 알아보았으니, 종류에 대해서 알아봅시다!
  • 위와 같이 데이터 베이스에 저장 되는 원초적 데이터(raw data)의 종류는 정형 데이터, 비정형 데이터, 반정형 데이터로 나뉘게 됩니다!

정형 데이터

정형 데이터 영어로는 Structed data라고 합니다.. 구조화 된 데이터란 뜻이죠!

정형(구조화된) 데이터란 무엇일까요?

  • 구조화된 데이터 는 일반적으로 데이터베이스의 열과 행으로 표시되는 테이블 형식 데이터입니다.
  • 이 형식의 테이블을 보유하는 데이터베이스를  관계형 데이터베이스 라고 합니다 .
  • 수학적 용어 ” 관계” 는 테이블로 유지되는 형성된 데이터 세트를 지정합니다.
  • 구조화된 데이터에서 테이블의 모든 행에는 동일한 열 집합이 있습니다.
  • 구조화된 데이터에 사용되는 SQL(Structured Query Language) 프로그래밍 언어입니다.

데이터베이스에 어떤 형식의 데이터를 넣을지 정보를 가리키는 것

정형 데이터(structed data)는 데이터베이스의 정해진 규칙(Rule)에 맞게 데이터를 들어간 데이터 중에 수치 만으로 의미 파악이 쉬운 데이터들을 보통 말합니다!

예를 들어 위의 그림과 같이 User Table에 “User ID” 와 “Address’, ‘User’ 등의 컬럼이 있습니다. 이것이 이 테이블의 Rule 즉 규칙에 맞게 들어가도록 한 것이죠! 그래서 컬럼들을 통해 수치만으로 의미파악이 쉽다는 겁니다.

또한 이 컬럼들이 다른 Table( Order, Product)와도 연관이 있어 정형 데이터가 저장되는 데이터베이스를 관계형 데이터 베이스라고도 하는 겁니다!!

그래서 어떤 곳은 정형 데이터를 데이터베이스에 들어간 데이터라고 말하는 오류를 범하게 되는데 데이터베이스에는 모든 데이터가 들어갈 수 있는 것(음성이든, 비디오도 객체 방식으로 넣을 수 있다)이기에 이런 정의는 틀렸다고 볼 수 있습니다!

정형 데이터는 그 값이 의미를 파악하기 쉽고, 규칙적인 값으로 데이터가 들어갈 경우 정형 데이터라고 생각을 하시면 좋습니다.

비정형 데이터(Unstructured data)

비정형 데이터란 무슨 뜻일까요?

  • 비정형 데이터 는 사전 정의된 방식으로 구성되지 않거나 사전 정의된 데이터 모델이 없는 정보입니다.
  • 구조화되지 않은 정보는 텍스트가 많은 집합이지만 숫자, 날짜 및 사실과 같은 데이터도 포함할 수 있습니다.
  • 비디오, 오디오 및 바이너리(byte) 데이터 파일, 문서 파일은 특정 구조를 갖지 않을 수 있습니다. 비정형  데이터로 할당됩니다 .

데이터베이스에 어떤 형식의 데이터를 넣을지 정보를 가리키는 것

예를 들자면 위와 같은 데이터 입니다!

저 문서는 우리가 인간의 눈으로 봤을때는 저 자동차에 대한 소개를 하는 것을 알 수 있지만 ,구조화 되지 않아(규칙이 없어서) 데이터를 처리하는 컴퓨터 입장에서는 굉장히 처리가 힘든 데이터입니다.

결국 비정형 데이터란 정해진 규칙(rule)이 없어서 값의 의미를 쉽게 파악하기 힘든 데이터를 의미하게 되겠죠!

텍스트, 음성, 영상과 같은 데이터가 비정형 데이터 범위에 속해있습니다.

이러한 비정형 데이터를 저장하기 위한 데이터 베이스는 비관계형 데이터 베이스라고도 하고, No SQL 데이터 베이스라고도 합니다. 위에서 봤던 정형데이터의 규칙(스키마)도, 관계도 비정형데이터에는 없기 때문에 이런식으로 부른다고 알 수 있겠죠

비관계형 데이터 저장소는 관계형 데이터 저장소와 같은 행 및 열의 테이블 형식 스키마가 없는 데이터베이스입니다

비관계형 데이터 저장소는 NoSQL 데이터 저장소라고도 합니다.

비정형 데이터는 빅데이터의 탄생에 비정형 데이터의 역할이 크게 한몫을 합니다.

그동안 의미를 분석하기 힘들었던 대용량에 속한 비정형 데이터를 분석함으로써 새로운 인사이트를 얻게 되기 때문이죠!

혹시나 착각을 하면 안되는 부분은 빅데이터가 비정형 데이터만 분석한다는 것은 당연히 아닙니다! . 3V에 Velocity(속도), Volume(양), Variety(다양)가 있는 것처럼 비정형 데이터는 Variety에 속하며 대용량의 정형 데이터도 얼마든지 많기 때문입니다!

관련 이야기는 빅데이터(Big Data) – 빅데이터, 정의, 특징, 활용 사례 에서 더 보시면 좋을 것 같습니다 🙂

반정형 데이터(Semi-structured data)

반정형 데이터란?

  • 반정형 데이터는 구조화된 데이터(관계형 데이터베이스)로 구성되지 않지만 여전히 어느 정도 구조를 가지고 있는 정보입니다.
  • 반정형 데이터는  JSON( JavaScript Object Notation  ) 형식으로 보관된 문서로 구성됩니다 . 여기에는 키-값  저장소와  그래프 데이터베이스도 포함됩니다.
  • 반정형 데이터는 관계형 데이터베이스나 다른 형태의 데이터 테이블과 연결된 정형 구조의 데이터 모델을 준수하지 않는 정형 데이터의 한 형태입니다.

데이터베이스에 어떤 형식의 데이터를 넣을지 정보를 가리키는 것

반정형 데이터의 ‘반’은 반대할 반이 아닌, 정형과 비정형의 Semi, 절반을 의미합니다.

즉 정형이 아니지만, 그렇다고도 비정형도 아닌 굉장히 애매모호한 놈입니다!

반정형 데이터는 데이터의 구조 정보를 데이터와 함께 제공하는 파일 형식의 데이터로, 데이터의 형식과 구조가 변경될 수 있는 데이터입니다.

정형 데이터와 같이 테이블의 행과 열로 구조화되어 있지는 않으나 스키마 및 메타데이터 특성을 가지고 있으며, 주로 XML, HTML, JSON 등의 파일 형태로 저장됩니다.

결국 다른것은 일반적인 데이터 베이스는 데이터를 저장하는 장소와 스키마가 분리되어 있어서 테이블을 생성하고 데이터를 저장합니다.

하지만 반정형 데이터는 구조정보와 값이 같이 있는 데이터라는 것이라, 스키마는 있지만 구조화되지는 않았다는 겁니다.

결론!

  • 데이터는 크게 정형, 비정형 ,반정형 데이터로 나뉩니다!
  • 이러한 분류의 기준을 알기 위해선 데이터의 정의와 데이터가 어떻게 저장되는지에 대한 이해도 필요합니다
  • 이해가 안되시면 참고자료를 더욱 살펴 보아도 좋을 것 같습니다 🙂

데이터 분석과 인공지능에 대해 본격적으로 학습해보고 싶다는 관심이 생기신 분은
다양한 실무형 프로젝트로 함께 토론하고 학습하는 모두의 AI 학교 아이펠 (www.aiffel.io) 을 참고하세요!

참고자료

What is structured data? – Definition from WhatIs.com

By Structured data is data that has been organized into a formatted repository, typically a database, so that its elements can be made addressable for more effective processing and analysis. A data structure is a kind of repository that organizes information for that purpose.

정형, 비정형, 반정형 데이터란?

데이터를 공부하거나 컴퓨터 자격증을 공부하면서 나오는 단어 중에 정형/비정형/반정형 데이터라는 것이 자주 등장하게 된다. 정형 데이터와 비정형 데이터의 차이점은 알겠지만 반정형이라는 말이 들어가면서 헷갈릴 수 있는데 반정형을 反으로 해석해버려서 반정형 = 비정형으로 인식하는 경우가 종종 있다. 정형 데이터는 데이터베이스의 정해진 규칙(Rule)에 맞게 데이터를 들어간 데이터 중에 수치 만으로 의미 파악이 쉬운 데이터들을 보통 말한다.

Is Data the New Oil?

Clive Humby, UK Mathematician and architect of Tesco’s Clubcard, 2006 (widely credited as the first to coin the phrase): “Data is the new oil. It’s valuable, but if unrefined it cannot really be used.

Semi-structured data – Wikipedia

Semi-structured data is a form of structured data that does not obey the tabular structure of data models associated with relational databases or other forms of data tables, but nonetheless contains tags or other markers to separate semantic elements and enforce hierarchies of records and fields within the data.

What is Semi-structured data? – GeeksforGeeks

Semi-structured data is data that does not conform to a data model but has some structure. It lacks a fixed or rigid schema. It is the data that does not reside in a rational database but that have some organizational properties that make it easier to analyze.

What is structured, semi structured and unstructured data?

Reading time: ~10min Level of technicality: low, no previous knowldge required Data can be distinguished along many dimensions.