[TIL] KDT Clouding APP - OS/Database/Network
DAY3
나중에 프로젝트를 하면서 실습해볼 듯 하지만..
실제로 데이터베이스를 많이 활용해본 경험이 없어서 ORM에 대해 잘 몰랐는데 이번 계기로 많이 배우고 경험해볼 듯 하다. ORM 또한 장단점이 있겠지만, ORM에 대해 미리 알고 있었다면 홀로 개발해봤던 근태관리 시스템 정도라면 적용하는게 나았을 것같다는 생각도 들었다.
그리고 두려워했던 네트워크… 역시나…
CIDR에 대해서도 많이 생소해서 조금 검색을 해보았는데, 나중에 AWS나 클라우드 환경 셋팅을 위해서는 꼭 필요한 개념인 듯하고…
꼭 필요한 이론들은 강조해서 짚어서 강의를 해주시는 것 같다. 정말 기초만 짚어주는 것인데도 내가 생소한 개념들이 많구나라는 생각에 부족함이 많이 느껴지고, 앞으로 많이 공부해야겠다는 생각이 많이 들었다.
OS
가상메모리 주소 변환
-
Paging(주로 통용되는 방식) / Segment 방식 paging은 하드웨어에 기반하여 관리되는 방식으로 주소변환이 보다 간단하여 성능 측면에서 Segmentation보다 유리하다고 함. (열악한 Embedded 환경에서는 온전히 Paging을 쓰기는 힘들 수도?)
(출처 : https://testbook.com/key-differences/difference-between-paging-and-segmentation) - TLB (Translation Lookaside Buffer) : 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시
- page fault
데이터베이스
릴레이션 vs 테이블
- 테이블 : 실제 저장된 물리적 구조
- 릴레이션 : 데이터베이스 모델링에서 주로 사용되는 용어; 관계형 대수 연산에 의해 존재하지 않는 테이블을 동적으로 만들어냄.
트랜잭션
데이터베이스의 데이터 무결성 유지를 위해 DBMS에서의 상호작용의 단위. 트랜잭션이 만족해야하는 속성
- A(Atomicity) : 실패할 수 있다면 rollback을 통해 전혀 실행되지 않아야
- C(Consistency) : 데이터베이스의 일관성
- I(Isolation) : 여러 트랜잭션이 병렬 실행되는 경우에도 서로 간섭 발생되지 않아야
- D(Durability) : 완료된 트랜잭션의 결과는 영구 보존되어야
ORM과 데이터베이스의 활용
- 어설프게 SQL을 구사할바에야 ORM을 이용하여 구현하는 것이 성능적인 측면에서나 효율적인 측면에서나 유리한 경우가 있다. (아주 복잡한 기능의 경우에는 제외하고서)
- 근래는 웹 응용 프로그램은 대부분 ORM을 활용한다고 함.
- 프로그래밍 언어 레벨에서 사용할 수 있기에 코드의 유지보수나 리팩토링 용이성 측면에서 유리
- DBMS을 바꿔야하는 경우에 매우 간편
벡터 데이터베이스와 유사도 검색
[TODO] 벡터 데이터베이스 좀 더 알아보기!
- LSH(Locality Sensitive Hashing)
- ANNOY
네트워크
데이터링크 계층
데이터 전송에 참여하고 있는 두 노드 사이의 신뢰성 있는 링크를 제공하여 프레임 단위의 데이터를 송/수신
다중 접근 제어 방식
- 이더넷의 다중 접근 제어 : CSMA / CD
- 무선랜의 다중 접근 제어 : CSMA / CA (허락된 한 쌍의 노드 사이에서만 데이터 전송)
CIDR (Classless Inter-Domain Routing)
- 클래스가 없는 도메인간 라우팅 기법.
- 가변 길이 서브넷 마스킹(VLSM)을 사용하여 IP주소의 네트워크 주소와 호스트 주소 비트 간의 비율을 변경하고, 서브넷 마스크는 호스트 주소를 0으로 변환하여 IP주소의 네트워크 주소 값을 반환하는 식별자 집합이다.
CIDR 넷마스크 계산해보기
예시) 10.10.0.0/22
앞에서부터 22비트 이후에 오는 세번째 옥텟의 일부까지 전부 사용할 수 있다는 의미.
즉 앞에서 22비트까지만 1; 11111111(255).11111111(255).11111100().00000000(0) 서브넷마스크는 ‘255.255.252.0’ 이 된다.