Programming/Database

Programming/Database

[DB,Transaction] Transaction 과 Lock

트랜잭션이란. 데이터베이스의 데이터를 조작하는 작업의 단위. 트랜잭션은 이론적으로 ACID 원칙을 보장해야 한다. Atomicity (원자성) : 트랜잭션의 부분 작업만 성공할 순 없다. 전체가 성공하거나, 전체가 실패해야 한다. Consistency (일관성) : 트랜잭션이 성공하면 언제나 일관성이 있는 데이터베이스 상태를 유지하는 것을 의미. 만약 모든 계좌는 잔고가 있어야 한다면, 이를 위반하는 트랜잭션은 중단된다. Isolation (독립성) : 하나의 트랜잭션이 실행되고 있을 때, 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. Durability (지속성) : 성공적으로 수행된 트랜잭션은 영원이 반영되어야 한다. 모든 트랜잭션은 로그로 남고, 시스템 장애 발생 전으로 되..

Programming/Database

[Redis] 여러 키 한번에 삭제하기

개발 서버에 있는 Redis에 저장된 데이터를 한 번에 지우고 싶은데, 데이터가 너무 많아서 난감한 가운데 찾은 방법을 공유해본다. redis에서는 키값을 기반으로 데이터를 지우는 del 명령어를 지원하는데, 명령어 이용방식은 다음과 같다. del [key1] [key2] [key3] ... 내가 지우고 싶은 데이터가 저장된 키의 형태는 다음과 같았다. BlockToken: redis에서는 keys 명령어를 통해 키값으로 저장된 데이터를 조회할 수 있으며, glob-style pattern을 통해 키를 조회할 수 있다. redis.io/commands/keys KEYS – Redis Returns all keys matching pattern. While the time complexity for thi..

Programming/Database

[Mysql] group_concat 으로 그룹핑한 데이터 하나로 모으기

쿼리로 통계 또는 지표 데이터를 만들다 보면 그룹화된 데이터를 하나의 데이터로 표출해야 하는 경우가 생기게 된다. ex) 서비스를 이용하고 있는 사용자들의 이름 또는 아이디 정보를 쉼표로 구분해서 하나의 문자열로 합쳐서 보고 싶다!. 그런 경우에는 mysql에서는 group_concat 함수를 실행시키면 된다. group_concat 함수의 자세한 스펙은 다음과 같다. https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat MySQL :: MySQL 8.0 Reference Manual :: 12.20.1 Aggregate Function Descriptions MySQL 8.0 Reference Manu..

Programming/Database

[Mysql] 버전 문자열 비교 및 숫자 변환

어제 회사에서 앱을 스토어에 배포하고, 버전업을 테스트하는 과정에서 서버가 버전을 제대로 비교하지 못하는 이슈가 있었다. app 버전 정보를 저장하는 DB TABLE은 다음과 같다. [ app ] app_id package_name version_name created_at 1 'com.test.mobile' '1.0.0' 2019-03-06 1:00:10.000000 2 'com.test.mobile' '1.0.1' 2019-03-07 1:00:10.000000 3 'com.test.mobile' '1.0.5' 2019-03-08 1:00:10.000000 SELECT * FROM app WHERE package_name = {target_package_name} ORDER BY version_name..

Programming/Database

DBMS의 장점

1)중복성 제어 - 저장공간 낭비방지 -중복된 회수만큼 반복하여 변경하는 문제 해결 - 데이터 일치성 유지가 어려워지는 문제 => 제어된 중복성 2) 권한 관리 - 데이터베이스 시스템 접근 시 로그인/패스워드를 확인함 - 허가받은 사람만이 데이터베이스(테이블 혹은 테이블의 일부)에 접근할 수 있도록 Grant(권한부여),Revoke(권한제거) 명령을 제공한다. - 권한의 종류는 Read/Write로 구성된다. 3) 프로그램 객체를 위한 지속성 공간 제공 - 프로그래밍 언어에서 다루는 자료는 별도의 파일에 저장하지 않는 한 프로그램 종료와 함께 삭제된다. - 그러나 DB에 저장된 자료는 프로그램 종료와 무관하게 존재한다. 4) 효율적인 질의 처리와 성능 - 하드 디스크에 저장된 대규모 데이터를 빠르게 검색..

Programming/Database

데이터베이스 사용자

1) 데이터베이스 관리자(Database administrator: DBA) - 데이터베이스 시스템의 관리를 책임진 사람2) 데이터베이스 설계자(Database Designer) - 데이터베이스의 구조등을 설계하는 전문가3) 최종 사용자(end Users) - 데이터베이스에 대하여 질의, 갱신, 보고서 작성 등을 담당하는 사람 - 캐주얼 사용자(casual end user): 비정기적인 데이터 베이스 사용자 - 초보 사용자(parametric or naive users):미리 일정한 용도로 작성된 프로그램을 사용하는 사용자(e.g 은행 점원이나 여행사 예약 담당원)- 전문 사용자(sophisticated end user): 복잡한 응용을 개발하며, DBMS의 기능을 충분히 사용하는 전문가.- System..

Programming/Database

데이터베이스의 특징?

1) DB와 파일은 어떤 차이가 있는가? 비교데이터베이스파일공유여러 사람이 효과적으로 공유공유불편(이메일, 파일 전송)최신성변경시 즉시 모든 사람이 변경된 데이터 활용각자 가진 파일에서 변경된 부분을 Update하거나 수정본을 다시 전송뷰거대한 DB에서 각자가 관심있는 부분을 view로 정의각자가 관심있는 부분만 보는 것이 어려움접근권한정교하게 사용자 접근을 제어, 암호화, 사후 감사 등(유저별 접근권한 설정가능)접근 제어가 정교하지 못함복구실수로 지우거나 정전이 되도 최신상태로 복구가 가능함복구가 어려움 2)Self Description- database에는 DB자체뿐만 아니라 DB의 구조와 제약조건에 대한 완전한 정의(metadata)까지 보유 => database catalog라고 부른다.Catal..

Programming/Database

데이터베이스란?

1) 데이터 베이스 정의 Database -> 관련있는 데이터의 집합. ( 관련없는 데이터가 모인 것은 database라고 하지 않는다.) -> 실세계의 일부분을 표현하고 있음. (수강신청 DB는 수강신청을, 기업 DB는 기업을 표현) Data -> 의미를 가지면서 (컴퓨터에) 기록될 수 있는 사실(값)Database Management System (DBMS) -> 데이터베이스 생성과 관리를 지원하는 소프트웨어 패키지Database System -> Database와 그를 관리하는 소프트웨어(DBMS, 응용프로그램)를 통칭하는 용어*Database System의 내부 요소1. 질의어/응용프로그램 (질의어 = Query) -> 편리한 UI 제공 -> 응용프로그램은 DBMS에 질의를 보내고 응답을 보내는 ..

JohnMark
'Programming/Database' 카테고리의 글 목록