본문 바로가기

db9

데이터 중심 애플리케이션 설계 - 복제 - 리더와 팔로워 복제: 네트워크로 연결된 여러 장비에 동일한 데이터의 복사본을 유지한다는 의미 복제가 필요한 이유 지리적으로 가깝게 유지해 지연 시간을 줄임 장애가 발생해도 지속적으로 동작하여 가용성 높임 장비의 수를 확충하여 읽기 처리량을 늘림 큰 데이터를 볼 때에는 파티셔닝을 살펴본다. 복제의 어려움은 변경처리에 있다. 복제를 위한 알고리즘 단일리더(single-leader): 다중리더(multi-leader) 리더없는(leader-less) 리더와 팔로워 replica: 복제된 데이터를 저장하는 각 노드 일반적인 해결책 리더기반 복제(leader-based replication) active , passive, master, slave) 리더가 되는 서버를 하나 지정한다(master, primary) 리더는 데이터.. 2023. 4. 18.
데이터 중심의 웹 애플리케이션 설계 - 1장 데이터 모델과 질의언어 부분 관계형 모델과 문서 모델 데이터 모델은 작성 뿐만 아니라 문제를 어떻게 생각해야하는지에 대해서도 지대한 영향을 끼친다. 각 계층은 명확한 데이터 모델을 제공해 하위 계층의 복잡성을 숨긴다.(잘된 추상화) 각 계층의 핵심적인 문제는 다음 하위계층 관점에서 데이터 모델을 표현하는 방법이다. 다양한 유형의 데이터모델이 있고, 각 데이터 모델은 사용 방법에 대한 가정을 나타낸다. 관계형 모델과 문서 모델 sql : 관계(relationship, columns)로 구성되고 각 관계는 튜플(tuple, rows)로 구성된다 관계형 데이터베이스의 근원은 컴퓨터에서 수행된 비즈니스 데이터처리에 있다.(트랜잭션 처리와 일괄처리) 1970~1980: 네트워크 모델, 계층 모델 ⇒ 관계형모델 1980~1990: 객체 데이터.. 2023. 4. 15.
[조각SQL] ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails 해결하기, 이미 생성된 테이블에 cascade 적용 MariaDB [db]> delete from table where id > 170000; ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`db`.`table`, CONSTRAINT `table_ibfk_1` FOREIGN KEY (`prev_id`) REFERENCES `table` (`id`)) 테이블에서 데이터를 삭제하려고 시도하니 아래와 같은 로그가 떴다. 이는 다른 테이블에 해당 데이터를 참조하고 있는 외래키가 있기 때문이다. 보통 테이블을 생성할 때 cascade 옵션을 사용하면, pk가 지워지면 해당 pk를 fk로 참조하는 데이터로 연계되어 삭제가 되지만, 내 경우에는 처음에 c.. 2022. 5. 17.
TIL 2022 05 10 - sqlalchemy의 cascade, relationship [TODAY I LEARN] [TIL 2022 05 10] 오늘은 sqlalchemy의 cascade option을 사용하고, 관련 개념을 익혀보았다. cascade적용하는법 cascade를 relationship()을 통해 지정한다. relationship()의 첫번째 인자는 참조할 모델명이다. cascade의 default는 save-update and merge 이기 때문에, delete나 delete-orphan은 지정해주어야한다. class Order(Base): __tablename__ = 'order' items = relationship("Item", cascade="all, delete-orphan") customer = relationship("User", cascade="save-update") backref란?.. 2022. 5. 11.