하루 2시간
본문 바로가기
728x90
트랜잭션 트랜잭션 DBMS에서 데이터를 다루는 논리적인 작업의 단위(데이터를 읽거나 쓰는 프로세스) 트랜잭션 특징 ( ACID 성질) 트랜잭션은 데이터베이스의 무결성을 유지하기 위해 원자성, 일관성, 고립성, 지속성을 갖는다. Atomicity 원자성 all or nothing 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야 한다. 트랜잭션이 원자처럼 더는 쪼개지지 않는 하나의 단위처럼 동작해야 한다. Cinsistency 일관성 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상채를 유지해야 한다. Isolation 고립성 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경중인 데이터 값을 훼손하는 일이 없어야 한다. 다른 트랜잭션의 방해를 받지 않고 독립적으로 수행 Du.. 2022. 1. 14.
함수 종속성 함수 종속성(normalization) userId(pk) -> user_Address 와 같이 왼쪽 속성의 모든 값에 대하여 오른쪽 속성의 값이 유일하게 결정될 때 함수적으로 종속된다고 한다. 즉, 릴레이션 속성간의 함수적으로 종속하는 성질을 뜻한다. 릴레이션 속성간의 종속성을 파악해 릴레이션을 분리해 이상현상이 발생하지 않게 하는것이 중요하다. 함수 종속성 결정자(릴레이션의 기본키) 릴레이션의 기본키가 함수 종속성의 결정자가 된다. 기본키를 알아야 정규화 과정을 하기 수월하다. 함수 종속의 성질 R{X, Y, Z} augmentation: 만약 X→YX→Y이면, XZ→YZXZ→YZ이다. transitivity: 만약 X→YX→Y이고 Y→ZY→Z이면, X→ZX→Z이다. reflexivity: 만약 YY.. 2022. 1. 7.
DB 정규화 정규화 이상현상이 발생하는 테이블을 수정하여 이상현상을 최소화로 만드는 과정 정규화를 하기 위해 테이블의 기본키와 함수 종속성을 파악해야 한다. 이상현상의 개념 잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하면 이상현상이 일어난다. 테이블을 독립적으로 나누지 않고 하나의 큰 테이블로 작성시 일어나는 이상현상이다. 삭제이상(Delectoin anomaly) 투플 삭제 시 같이 저장된 다른 정보가지 연쇄적으로 삭제되는 현상 -> 연쇄삭제 문제발생 삽입이상(insertion anomaly) 투플 사입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 션상 -> NULL 값 문제 발생 수정이상(update anomaly) 투플 수정시 중복으로 저장된 뎅터 일부만 수정되어 데이터의 .. 2021. 12. 31.
ER다이어그램 데이터 모델링에서 개념적 모델링 단계에서 사용되는 다이어그램으로 개체(Entity)와 속성(Attribute)의 관계를 표현한다. ER -> ERD(IE) ER 모델을 관계 데이터 모델로 개체 타입 약한 개체 타입에 강한 개체 타입의 기본키를 외래키로 관계 타입 1:1관계 개체가 가진 유형에 따라 다른 개체의 기본키를 외래키로 1:N관계 N위치 개체에 1위치 개체의 기본키를 외래키로 N:M관계 별도의 릴레이션으로 생성해 N위치 개체, M위치 개체의 각각의 기본키를 외래키로 모델의 차수가 3개 이상인 관계 별도의 릴레이션으로 생성해 각각의 기본키를 외래키로 가져와 복합키로 사용 다중값 속성 user 의 hobby 처럼 여러개의 속성을 가지면 그 속성을 따로 독립적인 릴레이션을 만들어 저장 2021. 12. 24.
데이터 모델링 데이터모델링이란 소프트웨어를 개발하기위해 데이터 모델링이 먼저 되어야한다. 데이터 모델링은 소프트웨어에 필요한 복잡한 데이터를 단순화하고 추상화시켜 데이터베이스화 하는 과정 데이터베이스 생명주기 데이터베이스의 생명주기와 소프트웨어 개발의 생명주기는 거의 유사하다. 큰 차이는 테스트 후 운영 및 유지보수 인 것이다. 데이터베이스 생명주기 (database life cycle) 요구사항 수집 및 분석, 설계, 구현, 운영, 감시 및 개선 소프트웨어 개발 생명주기(software life cycle) 요구사항 수집 및 분석, 설계, 구현, 테스트, 유지보수 요구사항 수집 및 분석 사용자, 개발자, 의뢰인의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하며, 정확하게 요구사항을 정리 설계 설계는 3가지.. 2021. 12. 17.
신호 데이터 통신을 할 경우 통신을 위해 정보를 전자기 신호 혹은 광신호로 변환해 전송매체를 통하여 전송한다. 이러한 신호에는 아날로그 신호와 디지털 신호로 크게 나뉜다. 아날로그 신호 : 음성, 진동 등 연속적으로 변하는 전자기파 디질털 신호 : 컴퓨터 등 데이터를 일련의 이산 값들로 표현하기 위해 사용되는 신호, 즉 무한한 단계들의 비연속적인 파형, 아날로그 신호보다 저렴하고 잡음에 둔하지만 감쇄현상으로 의미가 왜곡되어 피해를 입을 수 있다. 아날로그 데이터 : 연속적인 값 디지털 데이터 : 불연속적인 값 (이산적(discrete)) 위와 같은 신호들은 주기적 신호와 비주기적 신호로 나뉜다. 아날로그 신호의 구성요소 진폭 : 신호의 높낮이 (볼트(V전압), 암페어(A전류), 와트(W전력) 등) 위상 : 0.. 2021. 12. 10.
mapstruct/Lombok차이 및 충돌 오류, cannot find symbol 차이 ModelMapper 은 modelMapper.map 매핑이 일어날 때 리플렉션이 발생하고 MaStruct 는 컴파일 시점에서 구현체를 만들어 리플렉션이 발생하지 않는다 *리플렉션은 구체적인 클래스 타입을 알지 못해도, 컴파일한 클래스 정보를 활용해 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해 동적으로 프로그래밍이 가능하도록 지원하는 API *동적으로 프로그래밍 -> 런타임 시점에 타입을 결정 즉, ModelMapper은 런타임에 매핑이 일어나고 MaStruct은 컴파일 시점에 구현체를 만든다. 문제 mapstruct가 정상적으로 작동하지 않았으며, "cannot find symbol"오류 발생 충돌 원인 mapstruct를 호출하는 방식이 조금 달라서 Lombok과 충돌이 발생 해결.. 2021. 12. 3.
네트워크 및 데이터 통신 개념 정리 네트워크란 지역적으로 분산된 다수의 기기들을 결합시켜 상호 간의 정보전달을 가능케 하는 전달매체로 노드와 링크의 집합이다. 처리량과 지연 시간 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말한다. 처리량(throughput) 초당 전송 또는 수신되는 비트 수라는 의미 처리량은 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 하드웨어 스펙에 영향을 받는다. *대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 지연시간(latency) 요청이 처리되는 시간을 말하며 어떤 메시지가 두 노드 사이를 왕복하는 데 걸리는 시간 지연 시간은 메체 타입, 패킷 크기, 라우터의 패킷 처리 시간에 영향을 .. 2021. 11. 26.
OSI 참조모델 정리 OSI 참조모델 국제표준기구 ISO에서 1980년 말경에 정보교환을 위해 필효한 최소한의 네트워크 구조를 제공하는 OSI 기본 참조모델을 제안, 1983년에 국제표준(ISO 7498)으로 제정되었다. 네트워크를 이해하기 위해서 공부해야한다... ISO에서는 OSI(Open System Interconnection:개방형 시스템 간 상호접속)을 위해 이기종 간 상호접속을 위한 가이드라인을 제시하고자 했다. OSI 참조모델의 목표 시스템 간의 통신을 위한 표준 제공과 통신을 방해하는 기술적인 문제들이 제거 단일 시스템 간의 정보교환을 하기 위한 상호접속점을 정의 제품 간의 번거로운 변환 없이 통신할 수 있는 능력을 향상시키기 위해 선택사앙을 축소 OSI 참조모델 표준이 모든 요구를 만족하지 못할시, 다른 방.. 2021. 11. 19.
ORACLE SQL 정리 - 2 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) NULL 값 처리 NULL값은 아직 지정되지 않은 값으로 0, ' ' 등과 다른 특별한 값 그래서 비교 연산자로 비교가 불가능. 집계 함수 사용시 주의점 NULL + 숫자 = NULL 집계 함수 계산시 NULL이 포함된 행을 예외 NULL 값을 확인하는 방법 - IS NULL, IS NOT NULL where IS NULL; NVL(속성,값) : NULL 을 다른 값으로 대치 혹은 연산 후 다른 '값'으로 출력 (AS와 비슷) ROWNUM 오라클 내부적으로 생성되는 가상 컬럼으로 SQL 조회 결과의 순번을 나타낸다. 부속질의.. 2021. 11. 12.
ORACLE SQL 정리 - 1 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) SQL 기능에 따른 분류 DDL (데이터 정의어) CREATE, ALTER, DROP 테이블이나 관계의 구조를 생성, 변경, 제거 DML(데이터 조작어) SELECT, INSERT, DELETE, UPDATE 테이블에 데이터를 검색, 삽입, 삭제, 수정 DCL(데이터 제어어) GRANT, REVOKE 데이터의 사용 권한을 관리 DDL CREATE TABLE 테이블을 구성하고, 속성과 속성에 관한 제약을 정의하며, 기본키 및 외래키를 정의하는 명령 PRIMARY KEY는 기본키, FOREIGN KEY 는 외래키 기본 문법 CR.. 2021. 11. 5.
관계대수 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) 관계대수 관계대수 relational algebra 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어 관계대수와 관계해석 관계대수 : 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며, DBMS 내부의 처리 언어로 사용된다 관계해석 : 어떤 데이터를 찾는지 명시하는 선언적인 언어로 관계대수와 함께 관계 DBMS 의 표준 언어인 SQL 의 이론적인 기반을 제공한다 -> 관계대수와 관계해석은 모두 관계 데이터 모델의 중요한 언어이며 실제 동일한 표현 .. 2021. 10. 29.
무결성 제약조건 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) 키 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합 릴레이션은 중복된 투플을 허용하지 않기 때문에 각각의 투플에 포함된 속성들 중 어느 것은 값이 달라야 한다. 즉 키가 되는 속성, 집합은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 한다. 키는 릴레이션 간의 관계를 맺는 데도 사용된다. 슈퍼키 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합 (식별할 수 있는 값은 모두 슈퍼키가 될 수 있다.) 후보키 투플을 유일하게 식별할 수 있는 속성의 최소 집합 (2개 이상의 속성으로 이루어진 키는 복합키라.. 2021. 10. 22.
데이터베이스 시스템 구성 및 구조 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) DB 기본 지식 데이터:관찰의 결과로 나타난 실제 값 정보:데이터에 의미를 부여한 것 지식:사물이나 현상에 대한 이해 데이터베이스:필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것 데이터베이스 시스템 DBMS 사용자와 데이터베이스를 연결시켜 주는 소프트웨어 데이터베이스 데이터를 모아 둔 토대 데이터 모델 데이터가 저장되는 기법에 관한 내용 DBMS가 설치되어 데이터를 가진 쪽을서버, 외부에서 데이터 요청하는 쪽을 클라이언트 데이터베이스 언어 SQL DDL ( Data Definition La.. 2021. 10. 15.
Oracle, MySQL, PostgreSQL 차이점 이름 Oracle Mysql PostgreSql 비용 유료(비싸다) 무료(상업은 유로) 무료 종류 관계형 DBMS(RDBMS) 관계형 DBMS(RDBMS) 객체 관계형 DBMS(ODBMS) 장점 최고의 성능, 고성능 트랜잭션 처리를 제공, SQL문을 실행하는 가장 효율적인 방법을 선택한다.(데이블과 인덱스를 분석) 무료로 사용이 가능하고, top n개의 레코드를 가지고 오는 케이스에 특화 무료로 사용이 가능하고, 다양한 join 방법을 제공 처리 속도를 빠르게 하기 위해 여러 CPU를 활용하여 쿼리를 실행 데이터베이스 *클러스터 백업 기능을 제공 고도로 확장 가능, 임시 테이블과 구체화 된 뷰를 제공 단점 비싸다 Nested Loop Join만 지원, 복잡한 알고리즘은 가급적 지원하지 않는다 문자열 비교.. 2021. 10. 8.
macOS) Oracle DB 권한 설정 및 부여 실행중인 도커 확인 $ docker ps -a 도커 start $ docker start oracle12c 오라클 쉘 접속 (sqlplus) $ docker exec -it oracle12c bash -c "source /home/oracle/.bashrc; sqlplus /nolog1 로그인 SQL> conn SYS / as SYSDBA Enter password : Oracle_db1 계정 생성 및 권한 부여 계정 규칙 제한 풀기 $ alter session set "_ORACLE_SCRIPT"=true; 계정생성 (test1 / 1234) SQL> create user test1 identified by 1234; 권한 추가 SQL> grant connect, resource, dba to test.. 2021. 10. 1.
macOS) github blog with jekyll -(1) 로컬에 jekyll 설치 중에 마주하는 오류 로컬에 jekyll 설치하기 github 를 이용한 블로그를 운영하기 위한 설정 github는 시차가 있어서 즉각적으로 확인할 수 없어 불편하다. 그래서 블로그에 새로운 테마 혹은 플러그인이 적용했을 때 어떻게 변화하는지 바로 확인하기 위해 jekyll를 사용 Install Command Line Tool 사전에 Native 확장 기능을 컴파일할 수 있게 Command Line Tools 설치를 해야 한다. $xcode-select --install Install Ruby Jekyll 는 Ruby 2.4.0 버전 이상을 필요. Homebrew 사용 $brew install ruby 최신 버전 설치 Ruby의 경로를 쉘 환경 설정에 추가 bash 사용시 $echo 'export PATH="/usr/loca.. 2021. 9. 24.
macOS) Docker, Oracle DB설치, 설정 (ORA-12547 오류 해결) 및 user 생성, user 권한 부여 oracle12c 를 임시로 사용하고 추후에 18c로 변경할 예정. terminal 에서 도커 로그인 $ docker login docker hub oracle database 위 링크에서 docker pull $ docker pull store/oracle/database-enterprise:12.2.0.1-slim run docker image $ docker run --name oracle12c -d -p 5050:22 -p 5051:1521 store/oracle/database-enterprise:12.2.0.1-slim docker start $ docker start oracle12c start sql developer DBeaver The default password to connect .. 2021. 9. 17.
Spring Security Spring Security는 Spring 기반 애플리케이션에 인증과 권한 부여를 모두 제공하는 데 중점을 둔 프레임워크. 사실상 Spring 기반 애플리케이션 보안의 표본이다. Spring Security는 "인증"과 "권한(인가)"에 대한 부분을 Filter의 흐름에 따라 처리합니다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안 관련 로직을 작성하지 않아도 된다는 장점이 있다. Spring Security는 기본적으로 인증 절차를 거친 후에 인가 절차를 진행하게 되며, 인가 과정에서 해당 리소스에 대한 접근 권한이 있는지 확인을 하게 된다. Spring Security에서는 이러한 인증과 인가를 위해 Principal을 아이디로.. 2021. 9. 10.
JPA & PostgreSQL 연동 JPA(Java Persistence API)란 ORM에 대한 자바 API 규격 ORM(Object Relational Mapping)이란 객체가 테이블이 되도록 매핑 시켜주는 프레임워크 Hibernate는 JPA를 구현한 ORM 프레임워크 중 하나 설정 dependency org.springframework.boot spring-boot-starter-data-jpa org.postgresql postgresql runtime DB 연결정보 (postgresql은 미리 설치되어 있어야하며, DB에서 설정한 값을 가져와야한다.) # resources/application.properties # Datasource Settings spring.datasource.url=jdbc:postgresql://12.. 2021. 9. 3.
JPA의 Entity 정의 JPA에서 사용되는 엔티티 클래스는 테이블과 매핑되는 클래스이다. 테이블에 대응하는 하나의 클래스 선언 ***엔티티 클래스의 선언***은 XML 파일에 작성하는 방법과 Java 파일에 직접 애노테이션으로 작성하는 방법이 있다. 어노테이션이 읽기 편하다. Entity Manager 엔티티를 관리하는 객체 매니저의 책임이 전부 영속성 엔티티의 CRUD에 관련 엔티티의 저장 엔티티의 수정 엔티티의 삭제 엔티티의 조회 특징 엔티티 매니저는 영속성 상태의 엔티티 관리를 위해 DB 세션과 밀접한 연관을 가지기 때문에, 여러 스레드에서 공유하여 사용하면 위험하다. 엔티티 매니저 팩토리로부터 엔티티 매니저 생성 각 스레드마다 엔티티 매니저를 생성하는 방식이 권장된다. 획득한 커넥션을 통해 엔티티 CRUD 관리 데.. 2021. 8. 27.
JPA의 Entity와 DTO를 구분하여 사용해야하는 이유 이유 view, service와 통신하는 DTO 클래스는 자주 변경된다. 반면 Entity는 그에 비해 변경도 적고, 영향범위는 매우크다 테이블에 매핑되는 정보가 실제 View,service에서 원하는 정보와 다를 수 있다 DTO를 사용하지 않고 Entity를 넘기다 보면 원하지 않은 정보까지 전달하게 되어 문제가 발생할 수 있다. Entity 테이블에 대응하는 하나의 클래스 DTO 계층간 데이터를 교환할 때 사용하는 객체 로직을 갖고 있지 않은 데이터 객체, getter/setter 메소드만 갖음 DB외에서 사용 ex)Service, View DTO와 Entity간의 데이타전달객체의 매핑은 ModelMappper를 활용하자. ModelMapper를 적극적으로 활용하면 DTO와 Entity간의 객체전환 .. 2021. 8. 20.
ORM(Object Relational Mapping)이란 ORM이란 객체가 테이블이 되도록 매핑 시켜주는 프레임워크 객체를 통해 간접적으로 데이터베이스를 조작 Object Relational Mapping의 약자로 관계형 데이터베이스 관리 시스템(RDBMS(Relational Database Management System))와 객체 지향 프로그래밍 언어(OOP(Object Oriented Programming))간 불일치가 존재(클래스→테이블)한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결하며 자동으로 연결(Mapping)해준다. 즉, SQL문을 짤 필요없이 객체(Class)를 통해 간접적으로 데이터베이스를 조작할 수 있다. 객체가 테이블이 되도록 매핑 시켜주는 프레임워크 ex) 클래스로 스키마를 매핑하고 메소드로 .. 2021. 8. 13.
JPA(Java Persistence API)란 JPA(Java Persistence API)란 자바 진영의 ORM 기술 표준 Persistence는 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미 JPA는 자바에 있는 데이터를 영구히 기록할 수 있는 환경을 제공하는 API이다.(DB Mapping) ORM을 사용하기 위한 인터페이스를 모아둔 것 ORM 이란 Hibernate(ORM 프레임 워크) 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크, Open Source SW 이러한 Hibernate 기반으로 만들어진 ORM 기술 표준이 바로 JPA JPA를 사용하려면 Hibernate를 사용하면 된다. 장단점 장점 JPA는 반복적인 CRUD 작업을 생략가능 JPA는 영속성(영구적) 컨텍스트를 가지고 있다. 불.. 2021. 8. 6.
맥 최소화 후 다시 제자리(복구)로 돌리는 단축키 최소화 - command+m command+tab 최소화한 프로그램 선택 tab 떼고 option 키 누르고 commend랑 option 같이 떼면 해결 만약 최소화한 프로그램이 여러 윈도우 즉 여러 창을 띄우고 있다면 다른 윈도우 창을 띄워준다. command+tab 한 부분이 스크린샷이 찍히지 않아서 사진은 패스했다. 이해가 안 간다면 댓글 부탁드려요~ 개인적으로 안쓰지만 불편하다 최소화 단축키로 눌려서 복구하는 법을 찾아볼게 아니라 최소화 단축키를 무효화시키는 게 빠른 거 같다. 2021. 7. 30.
REST API REST(Representational State Transfer) 정의 자원(resource)의 표현(representation)에 의한 상태(state) 전달(transfer) 구성 요소 자원(Resource) : URI 행위(Verb) : HTTP Method HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공 표현(Representation of Resource) Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다. 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 표현으로 나타내어 질 수 있다. JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이나 JSON을 주.. 2021. 7. 23.
JSON vs XML JSON(JavaScript Object Notation) 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 포멧 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐 JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서 최근에는 XML을 대체해 데이터 전송 등에 많이 사용 특징 서버와 클라이언트 간의 교루에서 일반적으로 많이 사용 js의 객체 표기법과 아주 유사 js를 이용하여 JSON 형식의 문서를 쉽게 js 객체로 변환할 수 있는 이점이 있다. JavaScript에서 객체를 만들 때 사용하는 표현식을 의미(json은 js기반) 특정 언어에 종속되지 않으며, 대부분 프로그래밍 언어에서 JSON 포멧의 데이터를 핸들링 할 수 있는 라이브러리 제공 .. 2021. 7. 16.
728x90