x

    전체 글 보기 (204)

    프로그래밍

    - 알고리즘 & 자료구조 (16)

    - 알고리즘 문제풀이 (8)

    - C++ (4)

    - JavaScript (14)

    - HTML & CSS (6)

    - Python (38)

    - Git (6)

    CS

    - 컴퓨터 구조 (1)

    - OS & 리눅스 (16)

    - 네트워크 (16)

    - DB (20)

    - 수학 (21)

    - ML (24)

    - OOP (3)

    - 기타 (11)

 
 
 
 
    DB (20)
  • SQL 테이블 간 연산(JOIN, UNION, ...)

    . JOIN- inner join 또는 left outer join을 왼쪽 테이블에서 특정 조건에 부합하는 레코드를 추출/필터링하는 연산으로 활용할 수 있다. left outer join의 경우, join 연산 수행 후 나타나는 결과 테이블 안에 오른쪽 테이블에서 유래한 컬럼의 값이 null로 돼있는 레코드만 가져오도록 where 조건절을 작성하는 식으로 필터링을 할 수 있다.- 큰 규모의 테이블 여럿을 J...
  • SQL 날짜 관련 함수들

    DATE_FORMAT(field, '%Y-%m-%d %H:%i:%s') 리턴형: 문자열 현재 날짜 및 시간 구하기 CURDATE() 현재 날짜을 리턴한다. 리턴형: DATE형 ...
  • SQL 그룹함수, GROUP BY, OVER

    . 그룹함수SELECT count(field) AS cnt FROM table WHERE field >= - 테이블의 특정 컬럼에 관한 여러 통계 지표 등을 계산하는 함수를 그룹함수(aggregate function)라 하며, 그룹함수를 포함하는 쿼리를 grouping query(또는 aggregate query)라 한다. 함수명(통계 지표를 계산할 컬럼 이름)의 형식을 갖는다.- 그룹함수는 쿼리에서 S...
  • NoSQL

    . 개요- 데이터베이스 분야에서는 데이터를 잘 짜여진 스키마에 적절히 담아 동시에 여러 트랜잭션이 실행되더라도 서로간 간섭이 없고 데이터베이스의 일관성이 적절히 유지되도록 하는 것이 오랫동안 중요한 과제였으며, 이에 따라 적절히 관리된 데이터베이스 체계는 SQL으로 작성된 쿼리로 여러 데이터를 읽고 쓰기 편리한 점이 있었다. 그러나 년대에 접어들어 미리 구조를 알 수 없는 방대한 양의 데이터를 빠른 시간 내에...
  • 시스템 카탈로그

    . 개요- 어떤 DB 시스템 내에 있는 릴레이션, 뷰, 인덱스, 사용자 접근 권한 등 여러 객체에 관한 메타데이터를 그 DB의 시스템 카탈로그(system catalog)라 한다. 다른 이름으로 데이터 사전(data dictionary), 시스템 테이블(system table)이라고도 한다.- 시스템 카탈로그는 DB 시스템 내 여러 정보를 조회할 때 사용되는데, 특히 DBMS에 입력된 쿼리를 최적화해서 레코드...
  • 뷰

    . 개요- RDB에서 뷰(view)는 일종의 가상의 릴레이션으로, 실제 릴레이션(=기본 릴레이션, base relation)을 기초로 그것에 여러 조건문을 추가하거나 다른 릴레이션, 뷰와 join을 해서 만들어낸 derived relation이다. ‘기본 릴레이션/뷰에 대하여 selection/projection 연산을 한 것’으로 정의되며, 따라서 기본 릴레이션의 어느 한 값이 변경될 때 그에 대한 뷰 역시...
  • 트랜잭션

    . 개요- 산업 현장에서 쓰이는 대규모 DB에서는 동시에 수백, 수천 이상의 수많은 사용자가 접근해 DB의 각각 다른 부분뿐 아니라 동일한 한 부분에 동시에 데이터를 읽고 쓰는 일이 빈번하다. 이처럼 수많은 사용자가 동시에 DB의 같은 부분을 두고 읽고 쓰기를 하는 경우에도 각 사용자는 마치 각 사용자들의 DB에 대한 읽고 쓰기가 서로 시간 간격을 두고 차례대로 읽기/쓰기를 수행한 것과 같은 결과를 얻을 수 ...
  • 릴레이션 정규화

    . 개요- ER 스키마를 릴레이션 스키마로 곧바로 매핑한 결과물 안에는 여러 엔티티가 실제 필요한 수보다 적은 릴레이션 안에 중복하여 존재하는 경우가 있을 수 있으며, 이 경우 데이터의 삽입/수정/삭제 때, 예를 들어 한 튜플에서는 적절히 수정되었으나 다른 튜플에서는 제대로 수정사항이 반영되지 않는 것 같은 여러 문제가 발생할 수 있다. 이러한 문제를 갱신 이상(update anomaly)이라 하며, 이러한 ...
  • 물리적 데이터베이스

    . 개요- 다량의 데이터를 담고 있는 DB는 물론 주기억장치(메인 메모리)에만 저장돼있는 게 아니라 평소에는 보조기억장치(디스크 등)에 저장돼 있다가(물리적 데이터베이스) 필요할 때 DBMS에 의해 메모리로 불려져 사용되고 또 그 내용이 삽입/삭제/수정된다. 물론 보조기억장치에 데이터를 읽고 쓰는 시간은 주기억장치에 올라와 있는 데이터를 읽고 쓰는 데 비해 굉장한 시간이 소모되므로, 어떻게 하면 보다 효율적인...
  • 데이터베이스 설계

    . 개요- 어떤 기능을 갖고 어떤 엔티티를 어떤 방식으로 저장하는 데이터베이스를 구축할 것인지(개념적 데이터베이스)부터 schema를 어떻게 정의해 데이터베이스를 구축할 것인지(논리적 데이터베이스), 물리적 장치를 어떠한 방식으로 제어해 데이터베이스를 구축할 것인지(물리적 데이터베이스)를 결정하는 것을 통틀어 데이터베이스 설계라 한다.- 개념적 데이터베이스를 설계할 때 ER 모델 또는 정규화 모델을 사용하여 ...
  • embedded SQL

    . 개요- SQL은 DB에서 값을 변경하고 추출해 오는 데는 기능이 충분하지만 C나 Java 같은 언어처럼 다양한 기능을 가진 것은 아니라 DB 시스템을 구축하고 활용할 때 C나 Java 같은 언어를 활용할 필요가 있을 수 있다. 이처럼 보다 다양한 기능을 통해 DB 시스템을 구축하는 데 사용하는 언어를 host language라 하고, 그 언어 내부에서 DB를 활용하기 위해 사용하는 SQL을 embedded...
  • SQL trigger, assertion

    . triggerCREATE TRIGGER trigger BEFORE INSERT ON table WHEN table.field < BEGIN UPDATE table SET field = field * . END- DB 시스템에 어떤 절차를 규정해 두어서, 절차 내 명시된 이벤트가 발생하여 일정 조건을 충족할 때 그에 따라 특정 동작을 수행하게 할 수 있다. 이처럼 이벤트 발생 ...
  • SQL insert, delete, update

    . INSERTINSERT INTO table(field, field) VALUES (, )- 지정한 relation에 새로운 tuple을 삽입하는 쿼리다.- (그 relation의 foreign key를 통해) 다른 relation을 참조하는 relation에 tuple을 추가할 경우 (foriegn key와 primary key 사이 관계가 항상 유지돼야 한다는) 참조 무결성이 위배될 수 있다. (그러나 ...
  • Spark

    . 설치() PySpark, PyJ!pip install pyspark pyj() Redshift 접속에 필요한 JAR 파일들- JAR 파일 설치를 위해서는 먼저 구글 Colab에 설치된 파이썬의 버전을 확인해야 한다.!python --version- 아래와 같이 경로를 이동해 JAR 파일을 설치한다.!cd /usr/local/lib/python../dist-packages/pyspark/jars &&...
  • 파이썬에서 PostgreSQL 사용하기

    . Google Colab에서 PostgreSQL 쓰기) 외부 URL에서 DB 로드해오기%load_ext sql%sql <URL> #postgresql 프로토콜을 사용하는 URL을 입력하면 그 URL에 접속하여 DB를 로드한다.) 로드해온 DB에서 SQL 쿼리 사용하기%%sqlSELECT * FROM table) 로드해온 DB에서 테이블을 추출하여 pandas의 DataFrame형 변수로 담기res...
  • 분산 컴퓨팅, 데이터 웨어하우스, ETL

    . 빅데이터와 분산 컴퓨팅- IT 산업 현장에는 일반적인 서버 환경에서는 다루기 어려운 정도로 대량의 데이터를 처리해야 하는 경우가 있다. 이처럼 대량의 데이터를 처리하는 방법으로서 먼저 컴퓨터 시스템의 사양을 업그레이드 하는 것(scale up)을 생각할 수 있는데, 첫째로 이는 비용이 많이 소모되고 둘째로 이는 대량의 데이터를 처리하는 문제에서는 효용이 크지 않다. 대량의 데이터를 처리하는 문제에서는 CP...
  • DDL

    . CREATE TABLE 구문의 기본 형태CREATE TABLE table( field INTEGER PRIMARY KEY NOT NULL, field TEXT, FOREIGN KEY(field) REFERENCES table(field) ON UPDATE CASCADE )- 기본적으로 CREATE TABLE 테이블명(속성명 변수형, ..., 제약조건(속성명))의 형식을 갖고 있다. ...
  • 관계형 데이터베이스

    . RDB model- 년대 E. F. Codd가 제안한 데이터 모델로서, ()DB 내에 여러 개의 table이 있어 각 table 내에 존재하는 모든 키값들을 각각 그 table의 이름, 그 table 내에서 각 행을 구별해주는 기본키, 그 table의 각 열의 이름을 통해 접근할 수 있으며 ()table끼리의 연산으로서 데이터를 다룰 수 있게 하는 데이터 모델이다. 이처럼 DB에 저장되는 데이터를 ‘관계’...
  • Db 개요

    . 개요- 데이타베이스란, 상호 관련성 있는 대량의 데이터의 모음으로 컴퓨터에 저장될 수 있는 것을 뜻한다. 그 데이터는 반드시 구조화 되어 있을 필요는 없다. 데이터베이스는 컴퓨터과학의 주요 기초 분야이자 기초 시스템 소프트웨어이고 IT 분야에서 핵심적인 역할을 맡고 있어 실생활 다양한 분야에서 쓰이고 있으며 산업계의 요구도 매우 강력하다.- DBMS(database management system)는 데이...
  • SQL SELECT

    . 쿼리를 대문자로 써야 하는 이유- 오라클의 경우 쿼리 입력 시 그 쿼리가 예전에 수행된 적 있는지를 탐색하는데, 이전에 같은 내용의 쿼리가 입력된 적 있어도 대소문자가 다르면 다른 쿼리가 입력된 것으로 보므로 캐시를 참조하지 않고 매번 새로 탐색을 수행하게 된다. 이는 비효율적이므로, 일반적으로 쿼리를 쓸 때 키워드와 속성명을 대문자 아니면 소문자로 일관적으로 쓰도록 하는 규칙을 정해두고 쿼리를 쓰게 된다...