목록분류 전체보기 (271)
빙응의 공부 블로그
📝배경 [개인프로젝트]공간 데이터 최적화하기 [개인프로젝트]공간 데이터 최적화하기📝배경 이번에 개인 프로젝트를 진행하면서 공공데이터 포탈의 의료 데이터를 사용하게 되었습니다.그래서 의료 데이터 중 병원, 약국의 정보를 저장하여 그 데이터 중에서 좌표를 활용해서quddnd.tistory.com해당 포스팅에서 저는 공간 데이터를 이용한 병원, 약국 정보 조회에 대해 최적화를 진행했습니다. 이번에는 공간 데이터, 함수, 관계 함수를 제외한 나머지 요소들로 최적화를 진행하기로 했습니다. 해당 사항에 대한 리팩토링 과정을 정리하겠습니다. 📝MySQL 공간 인덱스 MySQL의 공간 인덱스는 R-Tree 인덱스라고 부릅니다. 그 이유 Rectangle의 R과 B-Tree 인덱스를 합쳤기 때문입니다.R-Tree..
📝배경개인프로젝트로 병원, 약국의 위치를 검색하고 그 병원의 진료 내역을 공유할 수 있는 서비스를 기획했습니다.병원, 약국 위치를 받기 위해 공공데이터 포탈의 CSV 파일을 활용하기로 하였고, CSV 파일을 DB에 유지하며 최신 정보가 들어왔을 때 정상적으로 갱신이 되게 하겠습니다. 최종 목표는 CSV 파일을 DB에 저장하고 최신 정보를 중복 처리, 최신화 하는 것입니다. 📝CSV 파일 저장하기 일단 들어가기 앞서 제 프로젝트의 RDB입니다. 지금 CSV 파일에 저장하는 데이터는 장소 정보로 약국, 병원 모두 같은 규격에서 저장합니다. 그것을 이제 타입을 통해 분리합니다.@Entity@Builder@Getter@AllArgsConstructor@NoArgsConstructor@Table(name..

📝배경 이번에 개인 프로젝트를 진행하면서 공공데이터 포탈의 의료 데이터를 사용하게 되었습니다.그래서 의료 데이터 중 병원, 약국의 정보를 저장하여 그 데이터 중에서 좌표를 활용해서 주변 약국, 병원을 조회하는 서비스를 만들기로 하였습니다. 데이터 저장에 성공하고 임의로 좌표 조회를 한 순간 매우 높은 응답 시간이 나와 최적화하기로 하였습니다. 📝MySQL 공간 데이터베이스 지금 사용하는 MySQL에서는 공간 데이터베이스를 제공합니다.MySQL :: MySQL 8.0 Reference Manual :: 13.4.1 Spatial Data Types MySQL :: MySQL 8.0 Reference Manual :: 13.4.1 Spatial Data Types13.4.1 Spatial Data ..

📝16 주소 공간의 개념 초기에는 컴퓨터 시스템 구현이 쉬웠다. 왜냐하면 사용자가 많은 것을 기대하지 않았기 때문이다.이 모든 문제를 만든 사람들은 바로 "사용의 편이", "고성능", "신뢰성" 등을 기대한 사용자이다. CPU에 대한 효율성 개선을 위한 시분할 시스템이 등장하면서 운영체제에서 새로운 요구 사항이 생기기 시작했다.여러 프로그램이 메모리에 동시에 존재하려면 보호가 중요한 문제가 된 것이다. 📝16.1 주소 공간운영체제는 사용하기 쉬운 메모리 개념을 만들어야 한다. 이 개념을 주소 공간이라 한다.실행 중인 프로그램이 가정하는 메모리의 모습이며 실행 프로그램의 모든 메모리 상태를 갖고 있다. (코드, 스택, 힙 등) 메모리를 어떻게 가상화할까?운영체제는 물리 메모리를 공유하는 다수의 ..

지금까지 우리는 단일 프로세스 스케줄링에 대해 알아보았다.그러나 시대가 변하게 되면서 이 원칙들을 여러 CPU 환경에서 동작하도록 바꿔야할 필요성이 대두되었다.여러 CPU에 작업을 어떻게 스케줄 해야 하는가?운영체제는 어떻게 작업을 여러 CPU에 스케줄 하는가?어떤 새로운 문제가 등장하는가?예전 기술을 적용할 것인가 아니면 새로운 아이디어가 필요한가📝13.1 배경 : 멸티 프로세스 구조멀티프로세서 스케줄링을 이해하기 위해 단일 CPU 하드웨어와 멀티 CPU 하드웨어의 근복적인 차이의 이해가 필요하다.하드웨어 캐시 사용 방식의 차이단윌 CPU 시스템에는 하드웨어 캐시 계측이 존재한다. 이 캐시는 프로그램을 빠르게 실행하기 위해 존재한다.캐시는 지역성(Locality)에 기반한다.시간 지역성(tempora..

비례 배분 스케줄러, 혹은 공정 배분 스케줄러에 대해 알아봅시다.비례 배분의 개념은 간단합니다. 반환 시간이나 응답 시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것입니다. 즉 공정성 문제입니다. 비례 배분의 예는 추첨 스케줄링입니다. 이 아이디어는 다음 실행될 프로세스를 추첨을 통해 결정합니다. 📝12.1 기본 개념 : 추첨권이 당신의 몫을 나타낸다.추첨권은 쉽게 말해 CPU를 사용할 수 있는 권리입니다. 추첨권(티켓)프로세스가 받아야 할 자원의 몫프로세스가 소유한 티켓의 개수와 전체 티켓에 대한 비율이 자신의 몫을 나타낸다.추첨 스케줄링의 핵심은 이러한 목적을 무작위성을 이용합니다. 무작위가 뭐가 좋냐? 사실 무작위성의 장점이 있습니다.특이 상황에 대응이 쉬움매우 ..