본문 바로가기

ComputerScience

(72)
[Database] Transaction Transaction Transaction 은 여러 SQL문들을 논리적 단위로 묶어 하나의 작업 단위로 처리하는 것이다. Transaction 내의 SQL문 중 일부만 성공한 경우에도 DB에 반영되지 않고 모두 성공해야만 DB에 반영된다. 예를 들어, J가 H에게 20만원을 이체할 때, 계좌 변동은 J의 계좌에서 20만원이 제거되고, H의 계좌에 20만원이 추가되어 최종적으로 J는 80만원, H는 220만원이 된다. 이러한 계좌 변동 내용은 SQL 문으로 표현할 때 Balance 테이블을 업데이트하여 잔액을 반영하는 방식으로 처리한다. 하나의 Transaction 내에서 SQL문이 실패하면 이전 상태로 되돌린다. 따라서 중복작업을 방지할 수 있으며 데이터 일관성을 유지할 수 있다. 아래는 Transact..
[Database] 데이터베이스의 기본 개념 (DB, DBMS, Schema) ️데이터베이스와 DBMS에 대한 기본 개념 이해데이터베이스는 전자적으로 저장되고 사용되는 관련있는 데이터의 집합으로, 예를 들면 소셜네트워크 서비스에서 생성되는 데이터들을 말한다.데이터베이스는 관련있는 데이터들을 조직화된 집합으로 묶어야 한다.검색 및 사용의 효율성을 위해 데이터베이스는 잘 조직화되어야 하며, 중복된 데이터와 데이터의 불일치를 방지할 수 있다.DBMS는 사용자에게 데이터베이스를 정의, 생성 및 관리할 수 있는 기능을 제공하는 소프트웨어 시스템이다.DBMS의 대표적인 종류에는 Postgre SQL, MySQL, Oracle, SQL Server 등이 있다.DBMS, metadata, 데이터베이스 시스템 DBMS는 사용자가 데이터베이스를 정의하고 만들고 관리하는 소프트웨어 시스템이다.meta..
[Java] Java에서 Queue와 구현체들 (+ ArrayList와 LinkedList의 차이) Queue Java의 Queue 인터페이스는 FIFO(First In First Out) 방식의 순차적 자료 구조를 구현합니다. 즉, 먼저 추가된 요소가 먼저 제거됩니다. Queue 인터페이스는 LinkedList, PriorityQueue, ArrayBlockingQueue 등 다양한 클래스에서 구현됩니다. Queue 인터페이스는 큐에 요소를 추가, 제거, 검사하는 여러 메서드를 제공합니다. 다음은 가장 일반적으로 사용되는 메서드들입니다. add(element): 요소를 큐의 맨 뒤에 추가합니다. 큐가 가득 차 있으면 예외를 발생시킵니다. offer(element): 요소를 큐의 맨 뒤에 추가합니다. 큐가 가득 차 있으면 false를 반환합니다. remove(): 큐의 앞에서 요소를 제거하고 반환합니다..
[Java] List와 Set의 차이, 그러면 Set은 어떻게 구현할까요? 공부를 하기 전에 제가 아는 것 부터 적어보자면.. 일단 List는 순서가 있고 중복이 존재할 수 있구요 삽입 삭제에 걸리는 시간이 O(n) 반대로 Set은 중복이 없고 순서가 존재하지 않구요 삽입 삭제에 걸리는 시간이 O(1)입니다. ...네 공부해서 글을 작성해보겠습니다. Java의 Collection Collection은 '요소'라고 알려진 어떠한 객체의 그룹을 나타냅니다. 일부 컬렉션은 중복 요소를 허용하고 다른 일부는 그렇지 않습니다. 일부는 순서가 있고 다른 일부는 순서가 없습니다. JDK는 Set과 List와 같은 더 구체적인 하위 인터페이스의 구현을 제공합니다. List List는 Collection의 하위 인터페이스로, 순서가 있는 컬렉션입니다. 중복 값을 저장할 수 있는 객체들의 순서가..
[Database] Index가 무엇인지 설명해보세요. Index 책에서 인덱스는 일반적으로 책의 끝에 위치하며, 키워드나 용어를 알파벳 순으로 나열하고 그 용어가 책에서 어디에서 논의되었는지에 대한 페이지 번호를 함께 제공합니다. 이는 독자들이 특정 정보를 빠르게 찾을 수 있도록 도와줍니다. 책의 인덱스가 특정 주제나 키워드에 대한 정보를 빠르게 찾는데 도움이 되는 것처럼, Index(인덱스)는 데이터베이스 엔진이 테이블 내의 특정 데이터를 더 빠르게 찾는데 도움을 줍니다. 이는 데이터베이스에서 쿼리 성능을 향상시키는데 효과적입니다. (특히 읽기 쿼리) 인덱스가 걸려있지 않은 테이블에서 특정 튜플을 찾을때는 full scan을 수행하여 O(N)의 시간이 소요될 수 있지만, 인덱스가 걸려있는 테이블에서 특정 튜플을 찾을때는 B-Tree 기반 인덱스의 경우 O..
[Network] Network, Protocol, Protocol Stack, OSI 7 계층 Network 네트워크는 컴퓨터나 기타 기기들이 연결되어 데이터를 주고받기 위한 통신 체계이다. 네트워크의 기능 중 몇 가지는 통신 방법, 신뢰할 수 있는 데이터 전송, 최적의 통신 경로 결정 등이 있다. 또한, 네트워크는 목적지로 데이터를 전송할 때, 각 노드 사이의 데이터를 전송하는 역할도 수행한다. 이 때, 네트워크의 통신체계 중 'OSI 7 Layer' 는 컴퓨터 간 통신을 위한 표준 모델로써, 데이터를 전송하기 위한 7단계의 과정으로 이루어져있다. Protocol 네트워크 통신에서 제대로 동작하기 위해 통신참여자들이 따라야 하는 약속된 통신 방법(네트워크 프로토콜)이 필요하다. 프로토콜이란, 컴퓨터나 다른 네트워크 장치들이 서로 정보를 교환할 때 사용하는 규칙이나 절차 이러한 프로토콜은 데이터 ..
[Database] ACID, BASE 원칙 ACID ACID는 데이터베이스 트랜잭션에서 보장해야 하는 네 가지 주요 속성을 나타내는 약어 트랜잭션은 데이터베이스에서 하나의 작업 단위를 말함. (자세한 내용은 여기에) 원자성(Atomicity) 트랜잭션 내의 모든 작업이 완료되거나, 아니면 전혀 실행되지 않아야 함을 의미 즉, 트랜잭션은 모두 성공하거나 실패. 중간에 하나라도 SQL문이 실패하면 지금까지의 작업을 모두 취소하여 Rollback 수행 이 속성은 부분적으로 완료된 트랜잭션이 데이터베이스를 일관성 없게 만드는 것을 방지 DBMS는 트랜잭션 내의 모든 연산이 완전히 수행되거나, 또는 전혀 수행되지 않도록 보장 개발자는 언제 Commit하고, 언제 rollback 할지를 정하는 책임이 있음. 일관성(Consistency) 트랜잭션이 성공적으..
[Database] RDB과 NoSQL SQL Database SQL 데이터베이스는 Structured Query Language (SQL)의 이름을 딴 것으로, 관계형 데이터베이스 (Relational Database)라고도 합니다. 이는 데이터를 저장하는 더 엄격하고 구조화된 방법입니다. 관계형 데이터베이스 관리 시스템(RDBMS)은 SQL 쿼리를 실행하고 데이터를 검색하며, 데이터를 업데이트하거나 삭제하거나 새 레코드를 생성함으로써 데이터를 편집합니다. SQL은 가벼운 선언형 언어로, 관계형 데이터베이스를 위한 서버 사이드 스크립트의 버전으로 작동합니다. 관계형 데이터베이스는 잘 알려져있는 만큼 문제가 발생했을 때 해결하기 위한 레퍼런스가 많습니다. SQL의 특별한 장점 중 하나는 간단하지만 강력한 JOIN 절로, 이것은 단일 명령으로 ..