전체 글
-
쿼리 프로세싱(Query processing)CS/데이터베이스 2021. 12. 14. 00:01
쿼리 프로세싱(Query Processing)이란? 데이터베이스에서 데이터를 가져오거나 데이터를 삽입할 때 사용하는 언어를 Query라고 한다. Query Processing이란 우리가 보낸 Query를 데이터베이스가 처리하는 과정을 말한다. 기본적인 쿼리 프로세싱 과정 1. 입력받은 Query(SQL)를 parser and translator(Compiler)가 relational-algebra expression 형태로 변환한다. Query(SQL) 예시 SELECT balance FROM account WHERE blanace < 2500; Relational-algebra expression 예시 parser and translator의 결과가 1개 이상일 수 있다. 2. optimizer가 데이..
-
트랜잭션 격리 수준(Isolation Level)CS/데이터베이스 2021. 12. 13. 18:14
격리 수준(Isolation Level)이란 무엇일까? 동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지 결정하는 것 4가지의 Level로 구분됩니다 READ UNCOMMITTED COMMIT 되지 않은 데이터를 읽을 수 있다. READ COMMITTED COMMITTED된 데이터만 읽을 수 있다. REPETABLE READ COMMITTED 된 데이터만 읽을 수 있다. 어떤 데이터를 읽는 도중 변경이 허용되지 않는다. SERIALIZABLE COMMITTED 된 데이터만 읽을 수 있다. 어떤 데이터를 읽는 도중 변경(Update)이 허용되지 않는다. 어떤 데이터를 읽는 도중 삭제(Delete)나 추가(Insert)를 허용하지 않..
-
동시성 제어(Concurrency Control)CS/데이터베이스 2021. 12. 12. 23:37
Lock-based protocol 트랜잭션 A, B가 가 동시에 수행될 때 다른 트랜잭션이 권한을 요청할 때 사용되고 있다면 lock을 걸어 사용할 수 없도록 하는 방식 데이터베이스 전체를 lock 하면 쉽지만 본질적으로 Concurrent 하지 않음 Lock의 범위를 테이블로 축소하면 동시성은 늘어나지만 문제는 생길 여지는 있음. 동시성을 최대한 늘리면서 비일관성이 일어나지 않게 하는 것이 우리의 목표 Lock을 걸면 항상 동시성이 제어될까? lock을 짧게 걸게 되면 비일관성이 발생함 A+B = 항상 300으로 유지되어야 하는데 display(A + B) = 250이 돼버렸음.. 어떻게 해결하면 될까? lock을 밑에 걸어버리면 비일관성을 해결할 수 있음. 밑에 걸면 모든 게 끝인가? 하지만 교착상..
-
동시 트랜잭션(Concurrent Transaction)CS/데이터베이스 2021. 12. 9. 23:41
지난번에 트랜잭션에 대하여 알아보았습니다 https://junuuu.tistory.com/18 트랜잭션(Transaction)이란? 트랜잭션(Transaction)의 정의 Transaction은 "거래"라는 뜻을 가지지만 컴퓨터 과학분야에서는 "쪼개질 수 없는 업무처리의 단위"를 의미합니다. 데이터베이스의 상태를 변환시키는 하나의 논리적 기 junuuu.tistory.com 간단하게 복습하자면 트랜잭션이란 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위해 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. Concurrent Transaction이란? 트랜잭션A와 트랜잭션 B가 있다면 A를 끝내고 B를 수행하는것이 아닌 A와B를 동시에 수행하는 것 왜 Concur..
-
CORS란?CS/네트워크 2021. 12. 8. 23:43
CORS라는 단어를 보게되었고 이게 무엇일까 궁금하여 찾아보게 되었습니다. CORS에 대해 알아보기 전에 먼저 SOP에 대해서 알아보겠습니다 SOP란? Same Origin Policy의 약자로 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식입니다. 출처(Origin)이란? 그렇다면 http://localhost와 동일 출처인 url은 무엇일까요? 1. https://localhost 2. http://localhost:80 3. http://127.0.0.1 4. http://localhost/api/cors 정답은 2번 4번입니다 1번의 경우에는 https로 http와 protocol이 다릅니다. 2번의 경우 http의 기본 포트가 80포트로 생략이 되어있었기 때문에 동일 출처 url입니다. ..
-
블록체인과 NFT기술 2021. 12. 4. 17:35
블록체인이란? 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술 P2P 방식을 기반하여 소규모 데이터들이 체인 형태로 무수히 연결되어 형성된 ‘블록’이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있게끔 만드는 기술이다. 기존거래 방식과 블록체인의 차이점은? 기존거래 방식은 은행이 모든 거래 내역을 가지고 관리하는 중앙화된 시스템안에서 이루어집니다. 블록체인 거래 내역을 은행이 아닌 네트워크에 참여하고 있는 사람들의 수 만큼 블록을 생성하여 모두에서 전송, 저장합니다. 즉 탈중앙화된 시스템안에서 이루어집니다.(분산저장) 블록체인의 활용 암호화폐 : 중앙은행 없이 화폐를 발행 유통이 가능하게 한다. 스마트계약 : 특정한 조건이 ..
-
[Java] 배포란?(+ CI/CD)Java 2021. 12. 3. 12:52
배포란(Deploy) 작성한 코드를 빌드하고, 빌드가 완성된 실행 가능한 파일(jar war)을 사용자가 접근할 수 있는 환경에 배치한 것 즉, 빌드를 하고 생성된 jar 또는 war 파일을 WAS에 올리는 거나 .exe 파일로 만들어 사용자가 이용할 수 있도록 하는것이 배포입니다. Jar은 무엇인가? Java Archive(보관소) 의 약자로 Java 어플리케이션이 동작할 수 있도록 클래스, 라이브러리를 포함하여 자바 프로젝트를 압축한 파일입니다 War은 무엇인가? Web Archive의 약자로 웹 어플리케이션이 동작할 수 있도록 JSP, Servelt, Jar, Class, XLM, Javascript 등을 포함한 웹 프로젝트를 압축한 파일입니다. CI / CD CI : Continuous Integ..
-
[Java] 빌드란?(+빌드 도구)Java 2021. 11. 30. 15:26
"빌드와 배포" 개발하면서 정말 많이 들어본 용어이고, 매일매일 빌드를 진행하지만 개념에 대해 자세히 모르는 것 같다고 느껴져 정리하게 되었습니다. 빌드를 이야기할 때는 항상 컴파일러, 링크가 등장하는데 컴파일러에 대해 먼저 알아보겠습니다. 컴파일러(Compiler)란? 자바의 경우 JVM에서 사람이 이해하기 쉬운 소스코드(. java)를 컴퓨터가 알아 들을 수 있는 기계어(. class)=(이진 코드)로 바꾸어주는 역할을 수행합니다. 일상생활에서 예시를 들어보자면 외국어를 우리가 알아들을 수 있는 한국어로 번역해주는 일을 하는사람이 컴파일러의 역할을 수행한다고 이해할 수 있습니다. 다음은 링크에 대해 알아보겠습니다 링크(Link)란? 프로젝트를 진행하게 되면 여러 소스파일이 생기고 서로 다른 파일에서 ..