CS
-
분산 키-밸류 저장소 설계CS 2024. 7. 11. 15:02
개요6장의 내용은 put, get 연산을 지원하는 키-값 저장소 설계에 대한 내용입니다.일반적으로 사용하는 AWS의 DynamoDB, Apache Cassandra와 같은 NoSQL DB를 설계한다고 보면 쉽게 이해가 될 것 입니다.해당 장에서 중요한 점들은 다음과 같습니다.CAP 정리에 의한 분산 시스템 설계단일 서버, 분산 서버 설계 간 장/단점분산 서버 설계 시 발생하는 여러 문제들과 해당 문제를 해결하는 방법단일? 분산?먼저 put, get 연산을 통해 저장소에 키-값 쌍을 저장하고 해당 키를 기준으로 값을 불러올 수 있는 키-값 저장소를 설계한다고 생각해 봅시다.단일 서버로 구축하게 된다면, 서버 간 데이터 일관성에 대해 고민할 필요 없이 쉽게 저장소를 구축할 수 있습니다. 다만, 결국 단일 서..
-
2.1 네트워크 기초CS 2023. 9. 10. 16:59
네트워크 기초 네트워크는, 노드와 링크가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미한다. 노드 : 서버, 라우터, 스위치 등 네트워크 장치(IP를 가짊) 링크 : 유선, 무선 1. 처리량과 지연시간 처리량 : 링크 내에서 성공적으로 전달된 데이터의 양. 단위 수는 bps(bits per second) 처리량은 트래픽, 네트워크 장치 간 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받음. 트래픽 : 링크 내에서 흐르는 데이터. 처리 -> 트래픽을 처리하면 처리량이 늘어나는 것. 처리량이 늘어났다 -> 처리되는 트래픽이 많아졌다. 대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수. 대역폭이 크다면, 더 많은 트래픽이 링크 내로 ..
-
Hash Table, GraphCS 2021. 12. 8. 20:02
1. Hash Table 내부적으로 배열로 구현되어있다. key, value와 같이 한 쌍으로 데이터를 저장하며, key는 특정한 Hash Function에의해 결정된다. 각각의 데이터는 고유한 key를 가지고 있기 때문에, 일반적으로 탐색 시간은 O(1)만큼의 시간이 소요된다. 하지만, Hash Function이 다른 데이터에대해서 고유한 키 값이 아닌 중복되는 키값을 도출해낼 경우, 충돌이 발생하게되기 때문에 항상 탐색에대한 시간복잡도가 O(1)은 아니다. (Python에서 Dictionary, JAVA에서 Hashmap으로 구현되어있음) 1-1) Hash Function 데이터에대해서 고유한 Key값을 만들어주는 함수이다. 데이터 일부만을 사용하는것이 아닌 데이터 전체를 Hash Function에 ..
-
CS - Data Structure(Array, Linked List, Tree)CS 2021. 12. 6. 17:36
1. Array vs Linked List Array Linked List 요소 접근 시간 O(1) O(n) 삽입, 삭제 연산 O(n) O(n) ※ Linked List의 실제 삽입, 삭제 연산 수행시간은 O(1) 이지만 삽입, 삭제 연산을 수행 할 target value를 찾기 위한 시간이 O(n)만큼 소요되므로 삽입, 삭제 연산은 O(n)의 시간복잡도를 가진다. 해당 표만 보면 Linked List 보다는 Array를 사용하는것이 시간적 이득을 가지지만, Linked List는 Tree 구조로 사용되었을 때 유용하게 사용된다. 또한 선언시에 최대 크기가 고정되어버리는 Array에 비해 Linked List는 새로운 Node를 객체로 만들어 최대 크기를 유연하게 조정 할 수 있다. 2. Stack vs..