CS 지식/데이터베이스(Database)
-
statement vs prepared statement vs callable statement interfaceCS 지식/데이터베이스(Database) 2023. 5. 4. 23:10
SQL 실행 단계 1) Parsing(쿼리 문장 분석) 2) Compile 3) Execute(실행) Statement - used to execute string-based SQL queries - SQL string을 concatenate 하기 때문에 less readable public void insert(PersonEntity personEntity) { String query = "INSERT INTO persons(id, name) VALUES(" + personEntity.getId() + ", '" + personEntity.getName() + "')"; Statement statement = connection.createStatement(); statement.executeUpdat..
-
Transaction Isolation Level(트랜잭션 격리 수준)CS 지식/데이터베이스(Database) 2023. 4. 25. 17:37
Database Anomalies 1. Dirty read - 다른 transaction에 의해 수정 됐지만 아직 commit 되지 않은 데이터를 읽는 것 ex) Transaction A가 새로운 row를 추가하고 Transaction B가 새로운 row를 읽었는데 A가 roll back을 한 경우 2. Nonrepeatable read - 한 transaction 내에서 같은 row를 두 번 읽었는데 그 사이에 값이 변경되거나 삭제되어 결과가 다르게 나타나는 현상 ex) Transaction A가 row를 읽고 Transaction B가 그 row를 변경하고 A가 같은 row를 두 번째 읽었을 때 새로운 결괏값을 얻는 경우 3. Phantom read 한 transaction 내에서 같은 쿼리를 두 번..
-
TransactionCS 지식/데이터베이스(Database) 2023. 4. 25. 16:22
Transaction : a single logical, atomic unit of work that accesses and possibly modifies the contents of a database - read, write operation을 통해 data에 접근함. - ACID 성질 만족 Atomicity) Abort : transaction이 abort 되면 database의 변화는 보이지 않음. Commit : transaction이 commit 되면 변화는 보이게 됨. Isolation) 모든 transaction은 다른 transaction으로부터 독립되어야 함. 실제로 동시에 여러개의 transaction들이 수행될 때, 각 transaction은 고립되어 있어 연속으로 실행된 것과 동..
-
SQL vs NoSQLCS 지식/데이터베이스(Database) 2023. 4. 21. 22:13
SQL(관계형) - 데이터가 고정된 열과 행을 가지고 있는 테이블에 저장되는 관계형 데이터베이스와 상호 작용할 때 사용 (1970년대 초반에 스토리지가 비쌌기 때문에 데이터 중복을 줄이기 위해 데이터베이스 정규화 등을 하는 시기에 발전) ex) Oracle, DB2, MySQL, PostgreSQL, Microsoft SQL Server - ACID transactions ACID 속성 이란 - Atomicity(원자성) : 완벽하게 실행하거나 혹은 전혀 실행하지 않거나 둘 중 하나. - Consistency(일관성): transaction이 commit 되면 데이터가 데이터베이스 스키마를 준수하도록 요구됨. transaction이 테이블에 변경 사항을 적용할 때 미리 정의된, 예측할 수 있는 방식만 취..
-
SQL - injectionCS 지식/데이터베이스(Database) 2023. 4. 19. 11:44
SQL injection 해커에 의해 조작된 SQL 구문이 데이터베이스에 그대로 전달되어 비정상적인 DB 명령을 실행시키는 공격 기법 아래 2 조건을 충족해야 SQL injection 공격 가능 웹 애플리케이션이 DB와 연동되어 있다. 외부 입력값이 DB 쿼리문으로 사용된다. SQL injection 공격 목적 및 영향 1. 인증 우회 - 로그인을 우회하여 인증 획득 2. DB 데이터 조작 및 유출 3. 시스템 명령어 실행 SQL injection 공격 유형 (일반적인) SQL injection 1) 쿼리 조건 무력화 (Where 구문 우회) [1] 주석을 의도적으로 삽입 UserId : admin'-- Password: 아무거나 => Select * From Users Where UserID = 'ad..
-
Relational Model과 Key의 종류CS 지식/데이터베이스(Database) 2023. 4. 17. 16:51
Relational Model Relational Model(관계형 모델)은 관계 정보를 기준으로 데이터의 구조를 표현하는 방식을 말한다. 대개 Database에서는 Schema : data의 구조 instance : data들이 들어가 있는 지금 그 상태 를 말한다. variable로 따지면 Schema는 variable의 'type'을, instance는 variable의 'value'를 가리키는 느낌이다. - R : relational schema = attriabute들의 집합 = (A1, A2, A3,... An) (A들은 attribute들을 지칭한다.) - r : relation variable 보통 r(R)로 표현을 하는데, relation(variable) on the relation s..