Database
10 posts
[Elastic] Elastic Stack + 공공데이터 api 활용

1. 공공데이터 api 준비 일단 먼저 원하는 공공데이터 api를 공공데이터 포털에서 확인할 수 있다. 여기서 자신이 원하는 다양한 공공데이터를 찾을 수 있고, csv 형태의 파일 데이터나 api 형식으로 제공받을 수 있는데 이 포스트에서는 실제 프로젝트 진행 중에 사용했던 공공데이터 api를 기준으로 설명할 것이다. 국토교통부_공동주택 에너지 사용 정보 api로 api를 호출하면 xml 형태의 데이터를 반환해준다. 2. 데이터 전처리 Filebeat가 파일을 읽어서 logstash로 보낼 때, 보통 csv 파일을 읽도록 하는 것이 편하기 때문에 Spring 환경에서 api를 호출하면서 xml 형태의 호출 결과를 csv 파일 형식으로 저장하도록 설정했다. (Xml filter plugin을 사용해서 Logstash에서 filter 설정을 하는 방법도 있다.) 공공데이터 api 호출 방법은 국토교통부_공동주택 에너지 사용 정보 하단에 샘플 코드를 제공하고 있어서 이를 활용해서 api…

April 09, 2022
Database
[Elastic] Elastic Stack(ELK Stack) - Mac OS 설치 방법

1. Homebrew 설치 Homebrew 설치가 되어있지 않으면 터미널에서 위 명령어를 입력하여 설치할 수 있다. 2. elastic tap 저장소 추가 터미널에서 위 명령어를 통해 elastic 패키지 저장소를 추가할 수 있다. 3. Elasticsearch 설치 및 실행 위 명령어로 Elasticsearch를 설치할 수 있고 설치 완료 후에는 명령어를 통해 Elasticsearch를 실행할 수 있다. 백그라운드에서 실행하고 싶으면 명령어 대신 다음과 같은 명령어로 실행할 수도 있다. (중단할 경우에는 대신에 사용) 실행 후에는 http://localhost:9200 에 접속하여 제대로 실행되었는지 확인할 수 있다. 다음과 같은 화면이 보이면 제대로 실행중인 경우 4. Kibana 설치 및 실행 kibana 또한 위 명령어로 kibana를 설치할 수 있고 설치 완료 후에는 명령어를 통해 실행할 수 있고, 다음과 같은 명령어로 백그라운드에서 실행할 수도 있다. 실행 후…

April 06, 2022
Database
[Elastic] Elastic Stack(ELK Stack) 소개

Elastic 공식 페이지 문서를 참고하여 작성하였습니다. Elastic Stack ?? 모든 유형의 데이터를 실시간으로 검색, 분석 및 시각화할 수 있는 Elastic의 오픈소스 프로젝트들을 하나로 묶어서 Elastic Stack이라고 한다. 원래는 검색 및 분석 엔진인 Elasticsearch, 수집 파이프라인인 Logstash, 시각화 도구인 Kibana의 앞글자만 따서 ELK Stack이라고 불렀으나 파일 추적을 위한 Beats를 추가하면서 Elastic Stack으로 이름이 바뀌었다. https://www.elastic.co/kr/what-is/elk-stack Elastic Stack 구조 elk-stack-elkb-diagram.svg SQL Elastic 설명 column field row document table index schema X SQL의 schema와 비슷한 기능을 따로 제공하지 X 1. Beats [경량 데이터 수집기] Beats는 단일 목적의 …

April 06, 2022
Database
[Database] Basic SQL Queries

🔍 기본 검색 Query SELECT 문 데이터베이스에서 정보 검색을 하는데 가장 기본이 되는 구문으로, 형태가 기본적인 형태다. relational algebra에서 selection과는 다름 ex) Aliasing / Renaming 두 개 이상의 attribute들이 서로 이름이 같은 경우에는 다음과 같이 이름을 바꾸거나 명시해 표현할 수 있다. SQL 질의는 데이터를 검색할 때, “어떻게” 가 아닌 “어떤” 데이터를 검색하기 원하는지 기술하기 때문에 비절차적(non-procedural) 이고, 선언적(declarative) 이다. 📦 SQL 집합 연산자 SQL은 중복된 튜플을 제거하지 않는다. 중복 제거는 비용이 많이 든다. 사용자가 쿼리 결과에서 중복 튜플을 보기 원할 수도 있다. 집계 함수(sum, avg, max, distinct, …)를 사용할 때 대부분 중복 제거를 원하지 않는다. 중복 제거를 원한다면 다음과 같이 를 사용할 수 있다. Set 연산자 UNION (…

March 16, 2022
Database
[Database] SQL 기초

📃 SQL Schema & Catalog SQL Schema 데이터베이스라고도 불리며, 같은 데이터베이스에 속해 있는 테이블과 다른 구조들을 그룹짓는 개념이다. Schema name으로 구별된다. 스키마를 소유하는 사용자를 나타내는 authorization identifier와 스키마에 있는 각각 element의 descriptor를 포함한다. Schema element는 table, constraints, views, domains 등을 포함한다. Catalog 스키마의 모임으로, 라고 불리는 특별한 스키마를 항상 가지고 있다. Integrity constraints는 같은 catalog의 스키마들 사이에서만 정의될 수 있다. 같은 catalog에 있는 스키마들은 type/domain과 같은 특정 element를 공유할 수 있다. 📚 CREATE TABLE 새로운 relation R을 정의한다. R에 이름을 주고나서, R의 attributes와 types(domains), 초기…

December 08, 2021
Database
[Database] ER-to-Relational Mapping

🗺 ER-to-Relational Mapping Goals 모든 정보를 보존 최대한 가능한 만큼 제약조건들을 유지 NULL 값들을 최소화 Step 1. Regular Entity Types 기존 엔터티의 attribute를 전부 포함하고, key attributes 중에서 하나를 골라 Primary key로 정한다. 만약, 고른 key가 composite이면 해당하는 attribute들 모두 Primary key로 정한다. Step 2. Weak Entity Types weak 엔터티의 attribute를 전부 포함 owner 엔터티의 Primary key를 Foreign key로 가지고, owner 엔터티의 Primary key와 weak 엔터티의 Partial key를 Primary key로 가진다. Step 3. Binary 1:1 Relation Types 상황에 따라 3가지 방법으로 가능하다. 1. Foreign key approach (2 relations) 주로 한쪽이…

December 07, 2021
Database
[Database] Relational Model

🔗 Relational Model Concepts Relation 집합을 베이스로 한 수학적인 개념으로, table과 같은 역할을 한다. table처럼 여러 row와 column을 가지고 있는데 이때, row를 tuple, column을 attribute라고 부른다. relation은 튜플을 유일하게 식별할 수 있는 key를 가지고, 적합한 key가 없는 경우에는 임의의 key를 추가할 수 있는데 이것을 surrogate key(or artificial key) 라고 부른다. Schema R : relation 이름 A_1, A_2, … , A_n : attribute 리스트 degree of relation R : R의 attribute 수 Tuple 값들이 정렬된 집합으로 <…> 내부에 표현된다. 튜플의 값들은 알맞은 domain으로부터 나와야 한다. attribute의 순서는 무조건 지켜져야 하지만, tuple의 순서는 중요하지 않다. tuple의 모든 값들은 atomic …

December 07, 2021
Database
[Database] Entity-Relationship(ER) Model

🎞 Database Design Process 1. 요구사항 수집 및 분석 2. Conceptual Design 3. Logical Design(or Data model mapping 4. Physical Design 💁‍♀️ Entity-Relationship(ER) model 데이터를 Entity, Relationship, Attribute 로 표현 Entity ER model의 기본 컨셉으로, 구체적인 객체를 의미한다. Entity Type : 비슷한 속성을 가진 entity의 타입 (schema 같은 느낌) ex) EMPLOYEE, COMPANY Weak Entity Type 자기 자신을 위한 key attribute를 갖지 않는 entity type으로 항상 total participation을 맺음 ( ER diagram에서 네모 두 개로 표현 ) partial key : weak entity를 식별할 수 있는 attribute로, owner entity type의 key와 …

December 07, 2021
Database
[Database] Data Model & Schema

Data Model 데이터 추상화를 달성하기 위해 필요한 수단 제공 데이터베이스의 구조(data types, relationships), 이런 구조를 조작하기 위한 연산, 데이터베이스가 가져야 할 제약조건의 집합으로 구성 📚 Data Model 종류 Conceptual data models 다수의 사용자가 데이터를 인식하는 방법과 비슷하게 개념(entity, attribute, relationship 등)을 제공 entity-based or object-based data model이라고도 불림 (ER model) high-level, semantic Physical data models 데이터가 컴퓨터 저장매체에 어떻게 저장되는지에 관한 자세한 정보들을 제공 low-level, internal Implementation data models 개념적 모델을 컴퓨터가 처리할 수 있도록 변환 관계형데이터모델, 네트워크/계층 모델 등이 있음 representational, logical…

December 06, 2021
Database
[Database] DB? DBMS??

DB(database) : 서로 관계있는 데이터들의 집합 DBMS : Database Management System으로 데이터베이스를 만들고 관리할 수 있도록 하는 소프트웨어 / 시스템 💡 DB를 사용하는 이유? 1. Queries (질의) 파일 기반 시스템에서는 자신이 원하는 데이터를 조회하기에 한계가 있다. 하지만 DBMS에서는 DML(Data Manipulation Language) 을 이용해 쉽게 데이터를 조회할 수 있고, Schema를 이용해 데이터 구조(Schema)와 데이터를 분리할 수 있다. DML 종류 High-level or non-procedural languages (ex. SQL) 어떻게 검색할지(how)가 아닌 어떤 데이터를 검색할지(what)을 명시함 -> declarative 레코드 집합으로 검색하고 나서, 이를 하나하나씩 처리 set-at-a-time or set-oriented DML이라고도 불림 Low-level or procedural Lang…

December 06, 2021
Database