본문 바로가기

공부방

(97)
elasticsearch - 매핑 (mapping) 실습 자료는 아래에서 받을 수 있습니다. https://github.com/minsuk-heo/BigData/blob/master/ch02/classesRating_mapping.json https://github.com/minsuk-heo/BigData/blob/master/ch02/classes.json 키바나를 더 잘 활용하기 위해 data의 타입을 명시해주는 것이 필요하다. classes index를 새로 만들어주고 시작하자 기존에 classes index를 만들어 놓은 것이 있다면 지우고 다시 실습해보자. curl -XPUT "http://localhost:9200/classes" 만들어진 인덱스를 조회해보자 curl -XGET "http://localhost:9200/classes"?prett..
elasticsearch - bulk 위 데이터는 아래에서 받을 수 있습니다. https://github.com/minsuk-heo/BigData/blob/master/ch02/classes.json bulk 파일은 아래와 같은 정보를 가지고 있다. index와 id에 대한 정보와 본문에 대한 정보를 2줄에 걸쳐 가지고 있다. 이를 이용하여 elasticsearch에 내용을 저장해보자. curl -XPOST http://localhost:9200/_bulk --header 'content-type: application/json' --data-binary @classes.json 아래의 명령어로 본문 내용이 잘 들어갔는지 확인해보자. curl -XGET http://localhost:9200/classes/class/1/?pretty cur..
elasticsearch - update curl -XPOST http://localhost:9200/classes/class/1/ -d '{"title" : "Algorith", "professor" : "John"}' -H "Content-Type: application/json" 내용 추가 curl -XPOST http://localhost:9200/classes/class/1/_update -d '{"doc" : {"unit" : 1}}' -H "Content-Type: application/json" 값 변경 방법1 curl -XPOST http://localhost:9200/classes/class/1/_update -d '{"doc" : {"unit" : 2}}' -H "Content-Type: application/json" cu..
elasticsearch - CRUD 가장 기본이 되는 데이터 저장을 알아보겠습니다. 기존 RDB와는 용어도 약간씩 다르고, 삽입하는 방법도 약간 다르지만 쉽게 따라할 수 있도록 되어있습니다. http:// IP : port / Index / Type / id값 ex) http://localhost:9200/test/dog/1 classes index 조회 classes index가 존재하는지 아래의 커맨드를 이용하여 확인해 보자. curl -XGET http://localhost:9200/classes?pretty status 404: index를 만들어 준 적이 없기 때문에 찾을 수 없다고 나타남. classes index 생성 이번에는 classes index를 생성해보고 잘 만들어졌는지 확인까지 해보도록 하자. curl -XPUT h..
elastic search 검색엔진의 시초, Lucene 모든 검색엔진의 시초는 루씬(Lucene). 더그 커팅이 고안한 역색인(Inverted Index) 구조인 아파치 루씬을 기반으로 분산처리를 가능하게 한 아파치 솔라(Solr)가 등장해서 검색엔진 시장을 장악했고, 몇 년 후에 역시 루씬을 기반으로 한 Elastic Search가 등장해 지금은 검색엔진 분야에서 지배적인 위치에 있다. 서치엔진 순위 트렌드. 2016년 무렵부터 ES가 가장 많이 사용되고 있다.(https://db-engines.com/en/ranking_trend/search+engine) ES와 RDBMS 조금 더 쉬운 개념 파악을 위해서 ES에서 사용되는 데이터 구조를 RDBMS에 대응해보면 다음과 같이 맵핑된다. 데이터 구조 Elastic Search는..
Map, Hash table Hash table (Hash map) 배열과 해시 함수 (Hash function)를 사용하여 map을 구현한 자료구조입니다. 일반적으로 상수 시간으로 데이터에 접근하기 때문에 조회가 빠르다는 장점을 가지고 있습니다. Hash function 임의의 크기를 가지는 type의 데이터를 고정된 크기를 가지는 type의 데이터로 변환하는 함수입니다. 아래의 그림을 참고 부탁드립니다. Hash table은 어떻게 동작할까요? hash collision key는 다른데 hash가 같을때 ket도 hash도 다른데 hash % map_capacity 결과가 같을 때 hash collision 해결 방법 - open addressing (linear probing) -> 비어있는 공간에 저장 -> - separat..
Forward proxy, Reverse proxy, Load Balancing 프록시 (Proxy) 너무 어려운 개념인 프록시를 축약하고 쉽게 설명하면, 남을 대신하여 일을 처리해주는 것, 즉 "대리" 라는 단어로 축약해서 설명할 수 있습니다. 프록시 종류는 너무 다양합니다. 1. Spring proxy 2. Proxy pattern 3. Network proxy 이중에서 오늘 알아볼 부분은 Network proxy에 대한 내용입니다. 프록시 서버 앞에서 프록시는 대리라는 단어로 설명을 하였습니다. 그렇다면, 프록시 서버는 대신 처리하는 서버라고 할 수 있겠네요. 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 캐시/보안/트래픽 분산 등 여러 장점을 가질 수 있습니다. 프록시 서버의 구조는 아래와 같습니다. 클라이언트와 서버 사이에 존재하는 구조입니다. 프록시 서버의..
다대다 연관관계 오늘은 다대다 연관관계를 살펴보겠습니다. Member는 Product 리스트를 들고있고 Product도 Member 리스트를 가지고 있는 아래와 같은 상황입니다. 객체는 위와 같이 서로가 서로의 리스트를 가지고 있을 수 있지만 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 진짜 이 말이 맞는지 코드를 작성하고 확인해 보도록 하겠습니다. Member entity를 작성합니다. @Entity public class Member { @Id @GeneratedValue private Long id; private String username; @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") private List products = new Ar..