분류 전체보기
-
elasticsearch storefield and docvalues and _source 비교elasticsearch 2021. 4. 26. 21:40
store field와 docvalues가 각각 어떻게 저장되는지 알아보고 퍼포먼스가 어떻게 될지 확인해본다 store field는 검색하기 위해 사용되는 필드이다 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-store.html#mapping-store store | Elasticsearch Guide [7.12] | Elastic Stored fields returned as arrays For consistency, stored fields are always returned as an array because there is no way of knowing if the original field value was a..
-
elasticsearch index sorting으로 퍼포먼스 향상elasticsearch 2021. 4. 21. 21:42
sorting index는 루씬에서 sorting을 지원하기 위해 indexSorter라는 것을 도입해 검색 시점이 아니라 색인과 병합 시점에 문서를 정렬하는 방법을 제공하고 검색 포퍼먼스 향상을 위해서 도입된 개념이다 예시를 통해 알아보자 PUT scores { "settings": { "index": { "sort.field": "points", "sort.order": "desc" } }, "mappings": { "properties": { "points": { "type": "date" } } } } GET scores/_search { "size": 3, "sort": [ { "points": "desc" } ] } 쉽게 알기 위해서 1 나의 샤드에서 세그먼트가 1나만 존재한다고 했을 때 인덱..
-
elasticsearch는 어떤 segment 부터 읽을까?elasticsearch 2021. 4. 16. 21:09
오래된 segment? 가장 최근에 만들어진 segment? elasticsearch를 공부하면서 그냥 든 생각이 가장 오래 된 segment이 가장 최적화가 되어있을 가능성(물론 용량이 큰 파일은 삭제된 문서가 어느정도 선일 때는 머지되지 않아 비효율 적일 수도 있음)과 데이터가 많으므로 데이터를 찾을 수 있을 가능성이 더 높다고 생각을 했었었다 그러나 elasticsearch의 기반이 된다는 LSM(log structure merge) Tree를 공부할 때에는 가장 최근에 만들어진 파일부터 읽는다고 해서 궁금해서 여러 자료를 서치해봤지만 내 능력 밖인지 찾지를 못했다 그래서 별거는 아니지만 es는 필터를 주면 들어간 값 대로 리스팅 되므로 그것을 이용해서 테스트 해보기로 했다 인덱스를 생성 PUT m..
-
elasticsearch sprase docvalueelasticsearch 2021. 4. 13. 20:22
docvalue에 대한 기본 개념은 아래 링크를 참고하자 ksk-developer.tistory.com/29 Elasticsearch(with lucene) DocValue 에 대해서 알아보자 루씬은 검색을 효율적으로 하기위해 역색인 구조로 저장하는데 검색 시에는 유리한 구조이지만 정렬, 집계일 경우에는 그렇지 않다 그래서 그것을 보안하기 위해 DocValues란 구조를 사용한다 루 ksk-developer.tistory.com 조금 더 왜 사용하는지 알고 싶다면 아래 링크까지 참고하자 ksk-developer.tistory.com/30 컬럼 기반 저장소 와 행 기반 저장소 컬럼 기반 저장소에 대해서 알지 못했는데 es에서 field_datta, doc_value에 대해서 알아보다 컬럼 기반 저장소를 사..
-
Disk random and sequential access시스템 2021. 4. 8. 20:22
Random Access란? Random access는 운영 체제가 무작위(여기저기)로 블록을 요청하는 것을 의미한다 데이터를 읽기 위해 디스크 헤드를 올바른 트랙으로 이동 한 다음 또 다른 데이터를 읽기 위해 회전을 기다려야 하므로 무작이 접근이라고 한다 seek-time(arm movement) 올바른 위치에 도달하기 위해 arm을 움직이는 시간 rotational delay (wait for the right angle) 플래터가 트랙의 올바른 위치로 회전 transfer time (transfer the actual data) 하드 디스크 블록의 섹터를 전송하고 읽을 수 있는 실제 시간 디스크 드라이브의 블록에 액세스해야 할 때마다 디스크 액추에이터 암이 헤드를 올바른 트랙 ( 검색 시간(1) )..
-
spring batch에서 JPASQLQuery를 사용한 이유JPA 2021. 4. 5. 22:18
querydsl 객체들에 대한 자세한 설명은 아래 링크를 참조하자 해당 글은 제가 왜 batch에서 JPASQLQuery를 사용했는지에 대한 그냥 생각을 정리한 것이다 http://ojc.asia/bbs/board.php?bo_table=LecJpa&wr_id=341 Querydsl 입문, 장점, Querydsl의 종류, 구문, SQLQuery, SQLQueryFactory, JPAQuery, JPAQueryFactory, Q 타입클래스 생 Querydsl 입문, 장점, Querydsl의 종류, 구문, SQLQuery, SQLQueryFactory, JPAQuery, JPAQueryFactory, Q 타입클래스 생성3장. Querydsl 입문Querydsl은 미리 작성한 쿼리타입 클래스를 사용해서 쿼리를..
-
개발자도 알면 좋은 DMA(direct memory access)시스템 2021. 3. 30. 23:12
기존에도 DMA?하면 direct memory access인 것은 알았지만 뭐하는지는 알지 못했는데 lucene을 공부하면서 mmap에 대해 좀 더 자세히 알게 되었고 그러다가 zero copy까지 공부하게 되었는데 거기서 DMA의 역할이 생각보다 많이 커서 그래도 조금은 아는게 좋다 싶어 공부하게 되었다 DMA란? direct memory access(DMA)는 CPU가 개입없이 메모리에서 읽거나 메모리에 쓸 수있는 I/O 모듈 권한을 부여 받았다고 보면 된다. DMA 모듈 자체는 메인 메모리와 I/O 장치 간의 데이터 교환을 제어한다. CPU는 전송의 시작과 끝에 만 관여하고 전체 블록이 전송 된 후에 만 중단된다 왜 DMA가 나왔을까? DMA가 나온 이유는 여러가지가 있을 수 있겠지만 내가 아는 것..
-
elasticsearch segments 2부elasticsearch 2021. 3. 27. 11:58
색인 작업 시 세그먼트의 기본 동작 방식 루씬 인덱스는 내부적으로 다수의 세그먼트로 구성되어 있다 루씬은 검색 요청을 받으면 다수의 세그먼트 조각들이 각각 검색 결과를 만들어 내고 이를 통합해서 하나의 결과로 합쳐서 응답하도록 설계되어 있다 이러한 검색 방식을 세그먼트 단위 검색(Per-Segment Search)라고한다 루씬은 위의 이미지와 같이 세그먼트들을 관리하기 위한 용도로 커밋 포인트(Commit Point)라는 자료구조를 제공한다 커밋 포인트는 여러 세그먼트의 목록 정보를 가지고 이고 검색시 이를 적극적으로 활용한다 루씬의 IndexSearcher는 검색 요청시 커밋 포인트를 이용해 가장 오래된 세그먼트부터 차례대로 검색한 후 각 결과를 하나로 합쳐서 제공한다 색인 요청이 루씬에 들어오면 In..