본문 바로가기

공부 기록/Database

(19)
Database Transaction & ACID Transaction 단일한 논리적인 작업 단위(a single logical unit of work) 논리적인 이유로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 없게 만든 것 transaction의 SQL문들 중에 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다. J가 H에게 20만원을 송금하는 트랜잭션 > SELECT * FROM acount; > START TRANSACTION; > UPDATE account SET balance = balance-200000 WHERE id='J'; > UPDATE account SET balance = balance+200000 WHERE id='H'; > COMMIT; COMMIT 지금까지 작업한 내용을 DB에 영구적으로 저장 + 트랜잭션을 종료한..
Trigger Trigger - DB에서 어떤 이벤트가 발생했을 때 자동적으로 실행되는 프로시저 - 데이터에 변경이 생겼을 때, 즉 DB에 insert, update, delete가 발생했을 때 이것이 계기가 되어 자동적으로 실행되는 프로시저를 의미한다. 사용자의 닉네임 변경 이력을 저정하는 트리거 table => users(id, nickname) / users_log(id, nickname, until) delimiter $$ CREATE TRIGGER log_user_nickname_trigger BEFORE UPDATE ON users FOR EACH ROW BEGIN ㅤㅤinsert into users_log values(OLD.id, OLD.nickname, now()); END $$ delimiter ; ..
Stored Procedure Stored Procedure 사용자가 정의한 프로시저 RDBMS에 저장되고 사용되는 프로시저 주된 사용 목적은 비즈니스 로직 구현 구체적인 하나의 task를 수행한다. ⬇️ 두 정수의 곱셈 결과를 가져오는 프로시저 delimiter $$ CREATE PROCEDURE product(IN a int, IN b int, OUT result int) BEGIN ㅤㅤㅤㅤSET result = a * b; END $$ delimiter ; ⬇️ 프로시저 사용 call product(5, 7, @result); SELECT @result; ㅤㅤㅤㅤ ⬇️ 두 정수를 맞바꾸는 프로시저 delimiter $$ CREATE PROCEDURE swap(INOUT a int, INOUT b int) BEGIN ㅤㅤㅤㅤSET..
Three-tier architecture 애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 분리한다. - 각 계층이 자체 인프라에서 실행되기 때문에 별도의 개발팀에 의해 동시 개발이 가능하다. - 다른 계층에 영향을 주지 않고 필요에 따라 업데이트되거나 확장될 수 있다. - 신속성 / 확장성 / 안정성 / 보안성
Stored Function Stored Function 사용자가 정의한 함수 DBMS에 저장되고 사용되는 함수 SQL의 SELECT, INSERT, UPDATE, DELETE statement에서 사용할 수 있다. ⬇️ 임직원의 ID를 열 자리 정수로 랜덤하게 발급하고 싶다면 (맨 앞자리는 1로 고정) delimiter $$ CREATE FUNCTION id_generator() RETURNS int NO SQL BEGIN ㅤㅤㅤㅤRETURN (10000000000 + floor(rand() * 10000000000)); END $$ delimiter ; - BEGIN 구문의 세미콜론에서 CREATE function이 끝났다고 해석될 수 있기 때문에 delimiter를 잠시 다른 것으로 변경해준다. ⬇️ 부서의 ID를 파라미터로 ..
Spring Data MongoDB 적용해보기 https://spring.io/projects/spring-data-mongodb Spring Data MongoDB Spring Data for MongoDB is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for new datastores while retaining store-specific features and capabilities. Introduction The Spring Data Mon spring.io https://docs.spring.io/spring-data/mongodb/docs/current/referenc..
MongoDB CRUD Insert - 하나의 데이터 삽입하기 db.employees.insertOne({ name: "yuri", age: 30, dept: "Backend", joinDate: new ISODate("2023-06-24"), salary: 30000, bonus: null }) - 여러 개의 데이터 삽입하기 => 배열 이용 - 두 개 이상의 데이터 삽입 시 insertMany를 활용하면 좋다. => 속도가 훨씬 빠름 db.employees.insertMany([ { name: "yuri", age: 30, dept: "Backend", joinDate: new ISODate("2023-06-24"), salary: 30000, bonus: null }, { name: "may", age: 10, dept: ..
MQL, Query Filter, Operator SQL vs MQL(MongoDB Query Language) https://www.mongodb.com/docs/manual/reference/sql-comparison/ SQL to MongoDB Mapping Chart — MongoDB Manual Docs Home → MongoDB Manual In addition to the charts that follow, you might want to consider the Frequently Asked Questions section for a selection of common questions about MongoDB.The following table presents the various SQL terminology and concepts an ..