목록전체 글 (101)
개발일기장
강의14. 용도특화형 인덱싱 인덱스와 시스템 구성 – RDBMS의 한계 전문 검색이나 유사문서계열 탐색, 데이터 마이닝의 경우에는 RDBMS로는 한계가 있다. 배치처리를 통해 RDBMS에서 데이터를 추출해서 별도의 인덱스 서버와 같은 것을 만들고, 여기서 Remote Procedure Call(API로 불리는 것) 등으로 액세스하는 방법을 사용한다. AP서버에서 직접 관리하지 않는 이유는 커다란 검색 인덱스를 여러 프로세스에서 같이 사용하도록 구성하는 거는 비효율적이기 때문이다.(AP서버는 여러 개 있고 각각의 서버마다 검색 인덱스를 가지고 있을 필요가 없잖아.) 그래서 검색 인덱스를 위한 서버가 있으면 좋다. 용도특화형 인덱싱 – 튜닝한 데이터 구조 사용하기 RDBMS는 범용적인 용도로 만들어져 있다...
강의11. 인덱스를 올바르게 운용하기 - MySQL 분산을 고려한 MySQL 운용, 세가지 포인트 1. OS 캐시 활용(계속 언급됨) 2. 인덱스를 적절하게 설정하기 -> RDBMS에서 사용하는 구조 3. 확장을 전제로 한 설계 OS 캐시 활용 전체 데이터 크기에 주의해서 데이터양이 물리 메모리보다 가능한 적어지도록 유지한다. 메모리가 부족할 경우에는 증설한다. 대량의 데이터를 저장하려는 테이블은 레코드가 가능한 작아지도록 설계해야 한다. 3억 레코드 정도에서 칼럼을 늘리면(8Byte) 3GB만큼 늘어난다. 정규화? 경우에 따라서 정규화를 하게 되면 쿼리가 복잡 해져서 속도가 떨어지는 경우가 있으므로 속도와 데이터 크기 간 상반관계(trade-off)와 같은 부분도 생각해야 한다. DB의 내용이 메모리 ..
강의8. OS의 캐시 구조 OS에서는 디스크 내의 데이터에 빠르게 액세스할 수 있도록 구조가 갖춰져 있고, 메모리를 이용해서 디스크 액세스를 줄여준다. 그래서 이를 전제로 application을 작성할 때 OS에 상당부분을 맡길 수 있는 것이다. Linux에서는 page cache라고 하는데 이 특성을 알아야한다. 일단 가상메모리라는 것을 알아야 하는데 이 책 볼 정도면 기본적인 운영체제에 대해서 알고 있을 것 같다. OS는 가상메모리 구조를 가지고 있고, 이거는 논리적인 선형 주소를 물리적인 주소로 변환해주는 것. 1. 프로세스에서 메모리를 다루기 쉽게 하는 이점을 제공한다. 2. OS가 커널 내에서 메모리를 추상화하고 있다. 3. OS가 물리 메모리를 확보/관리하는 단위는 page. Linux의 페이..
강의4는 별 내용없어서 생략 강의5. 대규모 데이터 처리의 어려운 점 대규모 데이터는 어떤 점이 어려운가? 1. 메모리 내에서 계산할 수 없다는 점 -> 디스크에 있는 데이터를 검색한다. -> 디스크는 느리므로 I/O에 시간이 걸린다. -> 어떻게 해결? 메모리와 디스크는 10~100만배의 속도차이가 난다고 생각하자. (2009년 + HDD사용하는 것, 2021년에 SDD사용하는거랑은 차이가 있지 않을까?) HDD는 기본적으로 헤드의 이동, 원반의 회전이라는 두가지 물리적인 이동이 필요하다. 그리고 전송속도의 차이도 있다. 따라서 현대의 컴퓨터에서는 메모리와 디스크 속도차를 생각하고 애플리케이션을 만들어야 한다. 확장성을 생각할 때 매우 본질적이면서 어려운 부분. 책에서는 디스크와 메모리 전송속도 차이가..
https://jpub.tistory.com/122 웹 개발자를 위한 대규모 서비스를 지탱하는 기술 웹 개발자를 위한 대규모 서비스를 지탱하는 기술 이 책은 현재 절판입니다. 그간 읽어주신 독자들께 감사드립니다. 출판사 제이펍 원출판사 기술평론사(技術評論社) 원서명 [Web開発者の jpub.tistory.com 이 책으로 공부하고 정리한것. 강의1. 문제점 확인. 하테나를 예시로 든다. 2009년 이야기하는 것을 보면 최신 이야기는 아님. 그리고 여기서 이야기하는 것은 대규모 서비스, 구글 같은 초 대규모가 되면 또 다른 어려움이 생길 것. 소규모 서비스와 대규모 서비스의 차이. 1. 확장성 확보, 부하분산 필요 scale-out(서버를 횡으로 전개, 역할을 분담하거나 대수를 늘림으로써 시스템의 전체적인..
https://tlqckd0.tistory.com/18 Node.js에서 RabbitMQ(AMQP) 사용하기. Publish (2) 2021.07.28 - [node.js] - Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1) Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1) 이거 해보려고 이것저것 찾아봤는데 너무 단순하기도 하고,.. tlqckd0.tistory.com 여기서 이어지는 글입니다.. 단순하게 글쓰고 싶었는데 너무 길어진다. Consume은 진짜 간단하다. Exchange랑 Routing key같은거 필요없고, 그냥 원하는 Queue에서 메시지를 받아오기만 하면 된다. 1. consume 함수를 만들자. const consume ..
2021.07.28 - [node.js] - Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1) Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1) 이거 해보려고 이것저것 찾아봤는데 너무 단순하기도 하고, 연결된게 없어서 (사실 내가 귀찮아서 구글링 덜함) 직접 해봤음.. 일단 윈도우에서 rabiitmq설치하고 뭐 그러는거 복잡하기도하고 좀 tlqckd0.tistory.com 여기서 이어지는 글입니다. 3초마다 메시지를 보내는 Publish를 만들어보자. 1. 일단 메시지를 보내는 함수를 만든다. const publishToChannel = (channel, { routingKey, exchangeName, data }) => { return ne..
이거 해보려고 이것저것 찾아봤는데 너무 단순하기도 하고, 연결된게 없어서 (사실 내가 귀찮아서 구글링 덜함) 직접 해봤음.. 일단 윈도우에서 rabiitmq설치하고 뭐 그러는거 복잡하기도하고 좀 그래서 docker위에서 돌리는걸로 했음. 이게 브라우저에서 매니져 할 수 있게하는 PORT랑, Message Queue에 public,consume하는 PORT가 서로 다르니깐 주의하고,, 실행하고 브라우저로 접속하면 이렇게 뜬다. 계정설정은 처음에 docker로 시작할때 아무것도 안하면 guest/guest로 (ID/PWD) 로그인해주자. 근대 AMQP에서 중요한게 Exchange, Queues, Binding임 다른거 예제보니깐 이거에 대해서 말을 잘 안해줘서 고생했음 짧게 정리하자면 1. Exchange라..