본문 바로가기

데이터베이스12

VIEW [뷰의 정의] 뷰는 가상테이블, 또는 저장된 쿼리 실제 테이블이 아니라 쿼리를 저장하고있다, 테이블과 같이 쿼리문을 통해서 조회 가능 [뷰 사용 이유] 내가 원하는 컬럼들을 미리 선택해서 저장해 놓을 수 있다, 복잡한 join문 등을 뷰로 저장함으로써 단일 테이블을 사용하듯 간단한 쿼리로 사용 실제 테이블 내부 구조를 숨길 수 있다. (ex : 회계처리의 account 테이블 같은 것들을 숨길 수 있다 ) 뷰는 read only로 쓰자. => 뷰로 보는 것들은 관계 테이블이고, 실질적 데이터를 관장하는 것들은 masterTable이다. 문법 -> CREATE VIEW As body.. (sql문작성..) Go --삭제 DROP VIEW 2022. 7. 14.
ADO.NET -> Connection (transaction을 관장한다) -> Command (parameters를 보낼 수 있다) -> DataReader (고성능 stream) -> DataAdapter (select, insert, update, delete) -> 실제 real database와 dataset사이의 중간자 역할의 느낌이다. -> DataSet ( Data Table Collection,, (Data Table.... ), DataRelationCollection) 약간 virtual database라고 생각하자. ADO,NET 내용을 여러회사에서 라이브러리로 만들어놨다. 그렇지만 공통적으로 IDbConnection인터페이스를 구현하고 있어서 그렇을 사용하면 loosely connection이 .. 2022. 7. 14.
게임데이터 정보를 db에 저장하기 게임의 정보는 db에 저장해야지, 멀티스레딩에서도 좋고, 안전하며, rollback 같은 기능도 존재한다 정보를 저장할 때 한 플레이어의 기능을 모두 db에 json방식으로 저장하면 저장할 때는 쉽지만, 데이터를 읽어올 때 파싱하기가 힘들다 그래서 보통 저장할 때 각 기능별로 저장을 많이하고, 서로의 테이블을 참고하기 위해서 외래키(하나의 필드가 다른 테이블의 필드를 참조하는 것)를 두어서 사용한다, 외래키 + (개체 + 관계 다이어그램인 E R 다이어 그램) 을 사용하면 좋다 UML을 사용하면 테이블끼리의 관계를 파악할 수 있다 A테이블 B테이블이 존재할 때 A테이블쪽에 마름모가 존재한다면 소유자쪽이라는 것이다. 그리고 두 테이블의 레코드 간 개수 관계를 표현할 때 카디널리티나 멀티플리시티를 사용한다... 2022. 7. 9.
데이터베이스 격리수준 트랜젝션 여러 읽기/쓰기를 논리적으로 한번에 묶은 것. 트랜잭션 범위는 커넥션 기준. 트랜잭션과 외부 api연동은 주의해야한다. 외부 api 호출이 성공하고, 난뒤 rollback을 하면 호출된 api는 롤백이안된다. 글로벌 트랜잭션은 두 개 이상의 자원(db, 메시징 큐)을 한 트랜잭션으로 처리하는 것이다. db insert를 하고 메시지에 데이터를 넣는 것은 하나로 묶을 수 있다. 그래서 두개 이상 자원에 대한 처리가 쉽지만 성능이 좋지않다. 같은 데이터 동시 접근 여러 클라이언트가 같은 데이터에 접근할 때 문제가 발생하는데 그것을 race condition이라고한다. 순서대로 실행하면 되지만 성능이 저하된다 그래서 다양한 격리 수준을 지원한다. Read Committed Read Committed는.. 2022. 6. 22.