본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요
[Thread-safe] Thread-safe 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. ex)하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다. Thread-safe를 지키기 위한 방법 1. Re-entrancy 어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바로 주어져야 한다. 2. Thread-local storage 공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막.. 2021. 5. 22.
[NoSQL] NoSQL 보통 'Not Only SQL'의 줄임말로 해석하며 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다. 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Duarabity)특성을 제공하지 않는, 그렇지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비관계형, 분산 데이터 베이스들이 등장했고, 이때부터 NoSQL이라는 용어가 보편적으로 사용되었다다. NoSQL특징 - 거대한 Map으로서 key-value 형식을 지원한다. NoSQL은 관계를 정의하지 않는다.대용량 데이터 저장을 한다. - 분산형 구조를 통해 여러대의 서버에 분산하여 저장하고 상호복제하여 데이터 유실이나 서비스 중지에 대비한다.. 2021. 5. 22.
[Statement VS Prepared Statement] Statement 와 Prepared Statement - SQL을 실행할 수 있는 객체이다. - 가장 큰 차이점은 캐시 사용여부이다. 1) SQL 실행 단계 (1) 쿼리 문장 분석 (2) 컴파일 (3) 실행 Statement String sqlstr = "SELECT name, memo FROM TABLE WHERE name = " + num Statement stmt = conn.credateStatement(); ResultSet rst = stmt.executeQuery(sqlstr); - 쿼리문을 수행할 때마다 SQL 실행 단계 1) ~ 3)의 과정을 거침 - SQL문을 수행하는 과정에서 매번 컴파일을 하게 때문에 성능상 이슈 발생 - 실행되는 SQL 문을 확인 가능 사용해야할 때 (1) Dyn.. 2021. 5. 22.
[트랜잭션이란?] 트랜잭션 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. SELECT INSERT DELETE UPDATE 트랜잭션의 특징 원자성(Atomicity) 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것이다. 일관성(Consistency) 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것 독립성(Isolation) 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점을 가리킨다. 지속성(Durability) 트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다는 점 트랜잭션의 Commit, Rollback 연산 - 커밋(Commit) : 모든 부분작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영.. 2021. 5. 22.