2018년 7월 19일 목요일

4주/3강: 데이터베이스 만들기

[커세라 강좌 소개] 자료기반 천문학(Data-Driven Astronomy)

-----------------------------------------------------------------
Week 4: Managing your data
제4주차: 획득 자료 관리
- How to set up databases to manage your data
  수집한 자료의 관리를 위한 데이터 베이스 구축하기
- Exploring the life cycle of stars in our Galaxy
  우리 은하내 별의 일생 탐구
-----------------------------------------------------------------
1강:  대용량 자료관리(입문)
Lesson 1. Managing your Big Data / 한글자막
-----------------------------------------------------------------
2강: 별의 탄생과 죽음의 과정
Lesson 2: The Lifecycle of Stars / 한글자막
-----------------------------------------------------------------
3강: 데이터베이스 만들기
Lesson 3: Setting up your own database / 한글자막 / 영문자막

[강의대본]

* 이번 강의는 데이터베이스(Database)에 관련된 여러 컴퓨터 기술 개념이 등장 한다. 짧은 시간 내에 충분한 설명이 곤란하므로 제시된 해당 링크를 참조한다. 상당 내용이 사용자(과학자) 입장에서 자세히 알 필요는 없다 개념만 이해하자. 게다가 최근 과학기술 개념이 전통적인 영어 단어에 없으므로 개념을 차용하거나 해당 기술자의 취향에 맞춰 장난스럽게 지어진 경우, 심지어 오해에서 비롯되었다가 굳어진 용어도 있다. 우리처럼 비영어권 언어 사용자에겐 이해하기 곤란한 경우도 있음을 유의하자.



[00:06] 현대의 과학은 이전에 수세대에 걸친 과학자들의 성취를 기반으로 구축되었다. 우리는 때로 다양한 자료원에서 자료를 수집하고 그 자료들을 조합하면 흥미롭고 새로은 사실을 드러나기도 한다. 이번 강의에서 천문관측 목록에서 자료를 취하여 우리만의 데이터베이스를 구축하는 방법을 살펴보기로 한다.



[00:24] 실제로 모든 과학자들은 자기가 수집한 자료를 평범한 파일에 저장한다. 그 자료파일은 평이한 텍스트 혹은 CSV(Comma Separated Value)형식으로 상당한 장점이 있다. 단순 파일은 용량 면에서 매우 효과적이고 (평범한 문자 파일이므로) 기계 뿐만 아니라 인간이 읽기에도 용이하다. 하지만 대용량 이면서 복잡한 과제를 수행하려고 하면 몇가지 어려움에 닥치게 된다.



[00:45] 첫째로, 자료의 중복으로 인한 낭비(redundancy)와 모순(inconsistency, 충돌)으로 관리의 어려움이다. 예를 들어 별의 밝기가 십여개의 파일에 기록된 경우 나중에 측정 기술의 발달로 밝기를 갱신해야 하는 경우가 발생했다고 하자. 문제가 발생할 소지가 있다. 실수로 중복 기록된 파일중 하나에서 갱신을 놓쳤을 경우 자료의 모순(충돌)을 잃으킨다. 이런 식으로 일일이 찾아 갱신하려면 매우 시간 소모적 작업이 된다.

[01:10] 두번째, 파일 형식(File Format)에 관련하여 사적인 형식을 취하고 있으므로 자료에 접근하려면 전용의 소프트웨어를 사용해야 한다. 말하자면 자료를 찾아보고 분류해 내기 위한 모든 경우를 감안하여 미리 작성해 두어야 한다. 다른 과학자가 임의의 자료조회를 원할 경우 그에 맞는 코드를 작성하지 않으면 곤란하다.



[01:28] 셋째, 대규모 연구과제에서 협업중인 다른 연구자의 자료에 접근하는 것을 제한할 필요도 있는데 바로 보안(security)의 문제를 잃으킬 수 있다. (아직 검증되지 않은 임시자료가 다른 연구자에게 전파될 수도 있다!) 단순 자료파일로는 접근을 제한하며 관리하기 어렵다.



[01:42] 단순 파일은 과학연구의 중요성이 떨어 진다는 단점이 있을 뿐만 아니라 다른 영역에서 치명적일 수 있다. 예를 들어 은행 데이터베이스(banking databases)에서 만일 송금 오류가 발생한다면 아주 치명적이므로 오류 이전의 상태로 복구되어야 한다. 데이터 베이스 시스템은 전송이 발생하건 아니건 원자성(atomicity)이 담보되어야 한다.

* 데이터베이스에서 트랜잭션(Transaction)이 완전하게 수행되는 것을 보장하기 위한 요건으로 ACID(원자성, 일관성, 고립성, 지속성),  https://ko.wikipedia.org/wiki/ACID 가 있다. 그중 원자성(atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력을 말한다.



[02:07] 데이터베이스 관리 체계(DBMS, Database management systems)는 이와 관련된 온전한 해법을 제공해야 하고 대용량 관측 자료의 공유를 위해 증가하는 사용 요구에 대응 해야한다.  이는 다수의 사용자로부터 대량의 동시접근을 뜻한다. 예를 들어 슬로언 디지털 서베이(SDSS)에서 사용되는 스카이서버(Skyserver) 데이터베이스는 2016년에 2억 4천만 건에 이르는 접근을 처리했다. 데이터베이스가 이런 요구를 모두 처리하기 위해 효율적으로 자료 인출이 가능하게 했다. 이를 위해 복합적인 자료구조를 필요로 하지만 중요한 점은 데이터 베이스가 사용자의 요구에 부응한다는 것이다.



[02:37] 사용자는 이를 위한 기술적 세부 사항을 모두 알 필요는 없이 연구에 집중 할 수 있다. 따라서 우리가 데이터베이스를 (직접 만들 것을) 염두에 둔다면 추상화(abstraction, 관리체계의 계층화)의 개념을 떠올린다. 실제로 자료가 컴퓨터에서 저장되고 색인(파일관리)을 하는 방법을 다루는 물리계층(Physical Layer)이 있다. 과학자의 입장에서 일반적으로 이 계층에 대해 신경 쓸일은 없다. 그리고 논리계층(Logical Layer)이 있는데 데이터베이스에서 자료를 보유하고 그 자료를 조직화 하며 색인을 만든다. 이 계층은 우리만의 데이터베이스를 구축할 때 중요하게 다뤄야 한다. 하지만 다른 사람이 구축해 놓은 데이터베이스를 활용하는 경우라면 문서화된 개요도(schema, 스키마)를 통해 활용에 필요한 정보를 얻을 수 있다.



* 데이터베이스 스키마(database schema): 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조

[03:11] 끝으로 시현계층(View Layer)으로 특정 용도에 맞게 데이터베이스를 시각화한다. 예를 들어 공동 연구 참여자는 어떤 자료가 공표되었는지 볼 필요가 있다.

[03:23] 데이터베이스가 참여하고 있는 과제에 유용하게 구축되었다고 하려면 실제로 어떻게 준비해야 할까?

[03:31] 첫째, 자료를 수집한다. 이 과정에서 현재 진행중인 과제에서 나온 자료를 활용할 것이지만 여러분이 보유한 자료묶음에 대해서도 같은 과정을 따를 수 있다. 히파르코스(HIPPARCOS) 목록에서 가져온 자료를 가지고 시작하자.

* 히파르코스(Hipparcos, "High precision parallax collecting satellite")는 유럽우주국(ESA)의 고정밀 시차 수집 위성이다.



[03:45] 히파르코스는 과학위성으로 별까지 거리를 측정할 목적으로 시차를 두고 별빛의 강도를 측정했다. 또한 밝기뿐만 아니라 색깔도 측정했다. 우리는 히파르코스의 자료와  비지어(VizieR)의 성단 소속 목록을 연계시켜 볼 것이다. 이 목록은 어떤 별이 성단에 속할 확률을 보여준다.

* VizieR, 온라인 상에 올려진 모든 천체모록은 모아놓았다. 현재 1만 7천여개의 목록을 검색할 수 있다. http://vizier.u-strasbg.fr/

[04:07] 두번째로 할 일은 사용하고자 하는 데이터베이스 관리 시스템, DBMS 를 결정해야 한다. 일반적으로 사용되는 플랫폼으로 SQL 서버, MySQL 그리고 PostgresSQL 또는 Postgres가 있다. 이 강좌에서는 포스트그레스를 사용한다. 현재 널리 사용되고 있기 때문이다. 무료 공개형 DBMS다.

* PostgresSQL, https://www.postgresql.org/

[04:30] 다음으로 가장 중요한 사항인데 자료를 표현할 스키마(자료구조)를 설계해야 한다. 스키마는 우리가 가진 데이터베이스에서 각 표의 속성을 부여하는 것이다. 표가 서로 어떤 연관성을 갖는지 각 표에서 속성에 어떤 제한을 두고 어떤 형식을 줄지 나열한다. 그리고 기본 키(Primary key)를 확정한다. 각 표의 각 행에 유일한 키(Unique key)를 갖도록 한다. 또한 이 키는 표 사이에 관계를 설명한다. 예를 들어 일대일 혹은 다대일 대응관계가 있는지 없는지 따위를 기술한다.



간단한 자료묶음의 경우 우리만의 스키마 설계는 매우 쉽다. 복잡한 자료묶음의 경우 스키마 설계는 매우 난해하다. 하지만 이 과정을 수행하면서 좀더 과학자료를 조직화하는 방법을 깊게 생각하기에 도움을 줄 수 있다.



SDSS SkyServer Schema DR14


[05:13] 이제 우리가 스키마를 설계 했으면 마지막 단계로 데이터 베이스 표를 어떻게 구축하고 다음에 활용하려는 자료를 들여올지 결정한다. 그런 후에야 비로서 연구를 수행할 준비가 될 것이다.

댓글 없음:

댓글 쓰기