전체 글

현서의 개발 일지📚

    [ DataBase - Basic ] - key, constraints, SQL

    [ DataBase - Basic ] - key, constraints, SQL

    implicit constraints relation data model 자체가 가지는 constraints로써, relation은 중복되는 tuple을 가질 수 없다나 relation 내에서 같은 이름의 attribute를 가질 수 없다 등이 있겠습니다. schema-based constraints (= explicit constraints) 이는 주로 DDL을 통해 직접 명시할 수 있는 constraints를 말합니다. domain constraints 위와같이 attribute의 value는 해당 attribute의 domain에 속한 value여야 한다는 게 domain constraints입니다. key constraints 이는 서로 다른 tuples는 같은 value의 key를 가질 수 없는..

    [ DataBase - Basic ] - DB, DBMS의 기초

    [ DataBase - Basic ] - DB, DBMS의 기초

    DBMS의 동작 원리 실제 우리가 사용하는 DB즉 DBMS가 동작하는 원리는 위의 그림과 같습니다. 먼저 우리의 애플리케이션이 있고, 이 앱이 쿼리를 DBMS Software에 날리고, DBMS는 이 쿼리를 파싱한다음에, 해당 쿼리 요청을 파악합니다. 이를 하기 위해서는 DB에 저장되어 있는 Meta-Data를 찾아서 이를 바탕으로 실제 Store된 데이터에 접근하고 찾은 값을 우리의 애플리케이션에 되돌려주는 것이 일반적인 DBMS의 동작방식입니다. three-schema architecture 이는 DB를 구성하는 가장 기본적인 방법입니다. 이는 user appliation으로부터 물리적인(physical) database를 분리시키려는 목적이 가장 큽니다. three-schema의 의미는 세 가지 l..

    [ Kotlin & Spring ] - 스프링 WebFlux의 코루틴 지원과 코루틴 원리

    [ Kotlin & Spring ] - 스프링 WebFlux의 코루틴 지원과 코루틴 원리

    1. 스프링 WebFLux의 코루틴 지원 프로젝트 리액터 기반의 리액티브 프로그래밍은 비동기-논블로킹의 단점인 콜백 헬 문제를 순차적으로 동작하는 연산자를 통해 해결합니다. 하지만 함수형 패러다임에 익숙하거나 리액터의 다양한 연산자에 부담이 없다면 이도 상관없지만, 매우 러닝커브가 높은 편입니다. 이로 인해 최근 안드로이드도 최근엔 RxJava에서 코루틴 기반으로 작성하는 코드가 늘어나고 있고 서버 측에서도 코루틴을 도입하는 사례도 많아지고 있습니다. 1-1. 코루틴 코루틴(Coroutine)은 코틀린에서 비동기-논블로킹 프로그래밍을 명령형 스타일로 작성할 수 있도록 도와주는 라이브러리 입니다. 이는 멀티 플랫폼을 지원하며 코틀린을 사용하는 안드로이드, 서버 등 여러 환경에서 사용할 수 있습니다. 또한 ..

    [ Kotlin & Spring ] - 스프링 WebFlux

    [ Kotlin & Spring ] - 스프링 WebFlux

    1. 프로젝트 리액터 프로젝트 리액터(Project Reactor)는 리액티브 스트림의 구현체 중 하나로서 스프링의 에코시스템 범주에 포함된 프레임워크 입니다. 리액티브 스트림 사양을 구현하고 있으므로 리액티브 스트림에서 사용하는 용어와 규칙을 그대로 사용하면 됩니다. 이를 사용해서 애플리케이션에 리액티브 프로그래밍을 적용할 수도, 비동기-논블로킹을 적용할 수 있습니다. 또한, 함수형 프로그래밍의 접근방식을 통해 비동기-논블로킹 코드의 난해함을 어느정도 해결합니다. 뿐만 아니라 백프레셔(Backpressure)를 사용해 시스템의 부하를 효율적으로 조절할 수 있습니다. 1-1. 모노와 플럭스 리액터는 리액티브 스트림의 Publisher 인터페이스를 구현하는 모노(Mono)와 플럭스(Flux)라는 두 가지 ..

    [ Kotlin & Spring ] - 리액티브 프로그래밍 (옵저버 패턴, 이터레이터 패턴,  리액티브 스트림)

    [ Kotlin & Spring ] - 리액티브 프로그래밍 (옵저버 패턴, 이터레이터 패턴, 리액티브 스트림)

    1. 비동기 프로그래밍? 비동기 프로그래밍은 그냥 실행 중인 작업이 끝나는 것을 기다리지 않고 바로 반환하는 것을 말합니다. 만약 작업이 끝나면 콜백등으로 다시 쓰레드가 해당 작업을 처리하는 것처럼 말이죠. 사실 저는 프론트앤드 기발을 많이 해봐서 비동기(Asynchronous) 프로그래밍에 매우 익숙합니다. 왜냐하면 FE에서는 UI 애플리케이션의 경우 특정 이벤트가 발생할 경우에 반응하는 동작을 구현해야 하는데 이럴 떄 필수적으로 비동기 프로그래밍을 사용하게 되기 때문입니다. const button = document.querySelector('button'); button.addEventListener('click', event => { button.innerHTML = '~' }); 이런식으로 말이..