CS
-
[DataBase] 트랜잭션에 대하여CS/DataBase 2023. 10. 23. 13:38
1. 트랜잭션이란? 데이터베이스 관리 시스템(DBMS)에서 사용되는 개념으로, 어떤 작업이 원자적으로 수행되어야 하는 데이터 처리 단위 2. 트랜잭션의 용도 데이터 무결성 유지: 트랜잭션은 데이터베이스의 무결성을 보장하며, 잘못된 데이터 입력 또는 시스템 오류로부터 데이터를 보호 동시성 제어: 여러 사용자가 동시에 데이터베이스에 접근할 때 트랜잭션은 데이터베이스에 대한 접근을 조절하고 충돌을 방지 비즈니스 프로세스의 원자성 보장: 여러 단계로 이루어진 비즈니스 프로세스에서 중간 단계에서 오류가 발생하더라도 트랜잭션 롤백을 통해 전체 프로세스를 안전하게 복구 3. 트랜잭션의 특징 (ACID) 원자성 (Atomicity): 원자성은 트랜잭션이 원자적인 작업 단위로 간주되어야 함을 의미합니다. 트랜잭션 내의 ..
-
[Database] 정규화CS/DataBase 2023. 9. 5. 18:38
데이터베이스에서 중요하게 쓰이는 개념인 정규화에 대해 정리하려고 합니다. 정규화 : 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다. 여기서 이상현상이 무엇인가? => 3가지의 이상현상이 있다. 삽입 이상(Insertion Anomaly) : 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상 삭제 이상(Deletion Anomaly) : 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 갱신 이상(Update Anomaly) : 튜플 갱신 시 중복된 데이터의 일부만 갱신되어 일어나는 데이터 불일치 현상 정규화..
-
[디자인 패턴][행위 패턴] - 비지터 패턴CS/디자인패턴 2023. 8. 18. 18:08
1. Visitor 패턴 데이터 구조와 연산을 분리하여 새로운 연산을 추가하거나 변경하기 쉬운 구조를 만드는데 사용하는 패턴 데이터 구조의 클래스와 새로운 연산을 수행하는 클래스 간의 결합도를 낮추는 데에 유용 사용하는 경우 새로운 연산 추가: 클래스 계층 구조에 있는 여러 객체들에 대해 새로운 연산을 추가해야 할 때, 해당 객체 클래스들을 수정하지 않고도 새로운 연산을 구현 가능 => "개방/폐쇄 원칙"을 준수하여 시스템의 확장성을 높임 비슷한 동작을 하는 다양한 클래스: 다양한 클래스에 비슷한 동작을 적용해야 할 때, 이를 반복적으로 구현하지 않고 방문자 패턴을 사용하여 효율적으로 구현 비즈니스 로직 분리: 비즈니스 로직과 연산을 분리하여 유지 보수성과 가독성을 높일 수 있음 다형성을 활용한 작업: ..
-
[디자인 패턴][구조 패턴] - 프록시 패턴CS/디자인패턴 2023. 8. 18. 09:55
1. 프록시 패턴 다른 객체에 대한 대리자 또는 대변자 역할을 수행하는 패턴 다양한 형태가 있지만, 가상 프록시, 보호 프록시가 대표적이다. 사용하는 경우 원본 객체에 대한 접근을 제어해야 할 때 원본 객체의 생성 및 소멸에 대한 추가적인 기능을 제공해야 할 때 원본 객체의 메서드 호출 전후에 추가적인 로직을 수행해야 할 때 원본 객체의 접근을 제어하거나 보안을 강화해야 할 때 구현 방법 실제 주체 (Real Subject): 프록시가 대리하는 실제 객체 실제 작업을 수행하거나 수행할 수 있는 실제 비즈니스 로직이 구현 프록시가 생성되거나 사용되는 시점에 실제 객체가 생성되고 초기화될 수 있음 프록시 (Proxy): 실제 주체에 대한 대리자 역할 실제 객체의 생성과 초기화를 지연시키거나, 접근 제어와 보..
-
[디자인 패턴][구조 패턴] - 플라이웨이트 패턴CS/디자인패턴 2023. 7. 13. 11:02
1. 플라이웨이트 패턴 객체 공유를 통해 메모리 사용을 최적화하는 패턴 다수의 유사한 객체를 생성하는 상황에서 중복된 데이터를 공유함으로써 메모리 사용을 줄이고 성능을 향상 동일한 내용을 가진 객체를 여러 개 생성할 필요 없이, 객체를 공유 사용하는 경우 많은 수의 유사한 객체를 생성해야 할 때 객체 생성 비용이 높고, 중복 데이터가 많이 포함된 경우 객체가 불변(Immutable)하거나, 상태가 외부에서 공유 가능한 경우 구현 방법 Flyweight : 공유 가능한 객체를 정의하는 인터페이스 또는 추상 클래스, 내부 상태를 가지며, 외부에서 공유 가능한 상태를 가진 객체를 생성하는 메서드를 제공 ConcreteFlyweight 클래스 : Flyweight 인터페이스를 구현하고 내부 상태를 저장하는 클래..
-
[디자인 패턴][구조 패턴] - 퍼사드 패턴CS/디자인패턴 2023. 7. 12. 19:12
1. 퍼사드 패턴 복잡한 서브시스템을 단순한 인터페이스로 감싸서 클라이언트에게 간단한 접근 인터페이스를 제공하는 패턴 복잡한 시스템을 더 쉽게 사용할 수 있도록 하고, 시스템의 내부 구조에 대한 접근을 단순화 사용하는 경우 복잡한 서브시스템을 사용하는 과정을 단순화하고 싶을 때 서브시스템의 인터페이스를 감추고자 할 때 클라이언트가 여러 개의 객체와 상호작용하지 않고 단일 인터페이스를 통해 상호작용하길 원할 때 구현 방법 Facade 클래스 : 클라이언트와 서브시스템 간의 중간 역할을 수행하며, 클라이언트에게 단순한 인터페이스를 제공, 서브시스템의 복잡한 내부 동작을 감추고 클라이언트의 요청을 적절한 서브시스템 객체로 전달 SubSystem 객체 : 서브시스템의 실제 동작을 담당하는 객체, Facade는 ..
-
[디자인 패턴][구조 패턴] - 데코레이터 패턴CS/디자인패턴 2023. 7. 12. 10:20
1. 데코레이터 패턴 객체의 기능을 런타임 시에 동적으로 추가하거나 수정할 수 있게 해주는 패턴 기본 객체에 추가적인 기능을 덧붙이는 방식으로 동작하며, 객체 간의 계층 구조를 가짐 사용하는 경우 객체의 기능을 확장하고자 할 때: 기존 객체를 변경하지 않고 새로운 기능을 추가하거나 수정 기능의 조합이 많은 경우: 다양한 기능 조합이 필요한 경우, 각각의 기능을 개별적으로 구현하여 조합 구현 방법 Componen 인터페이스 : 기본 객체와 데코레이터 객체가 구현하는 공통 인터페이스, 기본 객체나 데코레이터 객체 모두 이 인터페이스를 구현 ConcreteComponent 클래스: 기본 객체를 나타내는 클래스로, 기본 기능을 구현 Decorator : 데코레이터 객체의 공통 기능을 정의하는 추상 클래스 또는 ..
-
[디자인 패턴][구조 패턴] - 컴포지트 패턴CS/디자인패턴 2023. 7. 11. 13:49
1. 컴포지트 패턴 객체들을 트리 구조로 구성하여 전체-부분의 관계를 표현하는 패턴 개별 객체와 객체들의 집합을 동일한 방식으로 다룰 수 있게 해주어 복합 객체를 표현하고 조작할 수 있다. 클라이언트가 개별 객체와 복합 객체를 구분하지 않고 동일한 방식으로 다룰 수 있도록 도와준다. 사용하는 경우 전체-부분 계층 구조를 갖는 객체들을 다룰 때: 객체들이 트리 구조로 구성되어 있고, 개별 객체와 복합 객체를 일관된 방식으로 처리해야 할 때 사용 사용자가 개별 객체와 복합 객체를 동일한 방식으로 다루어야 할 때: 클라이언트가 객체들을 구분하지 않고 통일된 인터페이스를 통해 조작해야 할 때 사용 구현 방법 Component 인터페이스: 모든 객체에 대한 공통 인터페이스를 정의, 개별 객체와 복합 객체를 동일한..