본문 바로가기

SearchDeveloper

(81)
[6] 파티셔닝 하는 방법, 리밸런싱 전략, 요청 라우팅 전략 파티셔닝 하는 방법, 리밸런싱 전략, 요청 라우팅 전략을 알려줄게 데이터셋이 매우 크거나 질의 처리량이 높다면 데이터를 파티션으로 쪼갤 필요가 있다. 파티션으로 쪼개는 작업을 샤딩이라고 부른다. ※ 파티션 = 샤드 (몽고DB, ES, 솔라클라우드) = 리전 (HBase) = 태블릿 (빅테이블) = 브이노드 (카산드라, 브이악) = 브이버켓(카우치베이스) 파티션의 단위: 데이터 단위 (레코드, 문서, 로우) 파티션 장점: 확장성 -> 각 파티션에서 독립적인 질의 처리가 가능하므로 질의 처리량을 늘릴 수 있다. 어떤 파티션에 어떤 데이터를 넣을 것인가? (파티셔닝 하는 방법) 파티션의 목적은 데이터와 질의 부하를 노드에 고르게 분산시키는 것이다. 데이터를 고르게 분산시킬 수 있도록 기준을 잡아야 한다. 키-..
Azure OpenAI 사용법 튜토리얼 MicroSoft 의 Azure OpenAI 를 처음 접하는 입장에서 바로 따라할 수 있는 튜토리얼이 구글링으로 잘 나오지 않아 써보는 글이다. Azure OpenAI 는 OpenAI 의 chatGPT 모델을 API 나 라이브러리 형태로 제공하는 서비스이다. 채팅, 문장예측, 벡터표현 등의 기능을 제공하지만 이 글에선 채팅기능만 사용해볼 것이다. 이 글의 목적은 Azure OpenAI 를 처음 접해보는 분이 API 를 직접 호출할 수 있게 하는 것이다. 1. 권한 신청하기 2. 리소스 생성하기 3. 모델 배포하기 4. API 명세서 5. PlayGround 에서 API 확인하기 1. 권한 신청하기 Azure OpenAI Studio 에 진입하는 게 목적이다. 하지만 azure 첫 사용자라면 위 링크를 클..
[5] 복제를 구성하는 방법과 동기화를 위한 노력 복제는 여러 서버에 데이터의 복사본을 유지한다는 뜻 복제가 필요한 이유? 사용자 근처의 서버에 접근해 지연 시간을 줄일 수 있다 장애가 발생해도 복제본으로 대체할 수 있으므로 가용성을 높인다. 읽기 처리량을 높일 수 있다. 복제가 어려운 이유: 데이터의 변경이 일어나기 때문. 이 변경을 어떻게 복제본에서 처리하는지를 이 장에서 알려준다. (elsboo): 특수 상황에 대해 하나씩 접근하여 처리하는 방법을 제공하는 듯 복제에서 변경을 처리하는 방법 3가지: 단일 리더(single leader) ,다중 리더(multi leader), 리더 없는(leaderless) 리더와 팔로워 리더 기반 복제(= 마스터 슬레이브 복제, 능동 수동 복제) 리더에게만 쓰기 요청을 할 수 있다. 리더가 클라로부터 쓰기 요청을 ..
[4] 데이터를 다른 시스템에 전송하기 위한 부호화 (인코딩) 와 호환성 부호화와 발전 : 데이터 부호화를 위한 다양한 형식을 살펴본다. 데이터 스키마가 바뀌면 상위호환, 하위호환은 어떻게 하는지 알 수 있다. 웹서비스나 메시지 큐에서 부호화 형식이 데이터 저장, 통신에 어떻게 쓰이는지 알 수 있다. 시스템은 호환성이 유지될 수 있어야한다. ※ 호환성: 이전 버전과 새 버전의 데이터가 공존해도 시스템은 정상적으로 돌아가는것 관계형 DB 같이 쓰기 시점에 스키마가 정해지는 쓰기 스키마와 다르게 읽기 스키마(schemaless) 는 스키마를 강요하지 않으므로 한 컬렉션 안에 새로운 버전과 이전 버전의 데이터타입이 섞여들어갈수있다. 근데 애플리케이션 단에서는 새 버전에 대한 대응 코드를 즉시 반영할 수 없다. 왜? 서버 단: 대규모 시스템에서는 트래픽 처리를 위해 여러 개 서버군이..
[3] DB가 데이터를 어떻게 저장하고, 질의하면 데이터를 어떻게 찾을까? 3장에서 알려줄거: DB가 데이터를 어떻게 저장하는지, 질의하면 데이터를 어떻게 찾는지 → 개발자가 내부 구현을 알아야하는 이유는 적합한 DB를 선택하기 위해서! 색인에 대해 기본 데이터에서 파생된 추가적인 메타데이터이다. 색인이 필요한 이유는 질의 성능이 좋아지기 때문이다. 하지만 데이터를 쓸 때마다 색인에도 갱신해야 하기 때문에 쓰기 속도는 색인을 사용하지 않는 경우보다 느리다. 그래서 모든 데이터를 색인하지 않고 필요한 데이터만 수동으로 색인을 선택한다. 해시 색인 : 메모리에 키-값 형태로 저장 디스크에 색인 데이터가 계속 증가된다면 이걸 읽는 메모리는 결국 모자라게 되겠지 이 때 해결책은 컴팩션(compaction)! 디스크 공간 부족 해결 - 컴팩션 컴팩션 이란? 로그에 중복된 키는 버리고 제..
[2] 어떤 데이터 모델을 어떤 경우에 쓰면 좋을까? ✹ 데이터 모델이 중요한 이유: 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 영향을 미치기 때문 대부분의 애플리케이션은 데이터 모델간의 계층을 둬서 만든다. 하위 계층은 추상화 되어 있어 복잡성을 숨기고 효율적으로 일할 수 있게 한다. API 를 개발해서 인풋 아웃풋만 제공하고 내부 구조는 숨긴다거나 데이터 구조를 저장할 때는 범용 모델인 json, xml, 테이블, 그래프로 한다거나 json,xml,테이블,그래프 데이터를 디스크/메모리/네트워크 상태의 바이트 단위로 표현하는 방법을 결정해서 질의,처리 등을 할 수 있게 한다거나 이번 2장에서 할 것: 범용 데이터 모델 (관계형, 문서, 그래프기반) 비교 & 질의 언어 관계형 모델 vs. 문서 모델 관계형 데이터베이스(Relational Dateb..
[1] 데이터를 중심으로 하는 애플리케이션은 어떤 걸 생각해봐야할까? 데이터 중심 애플리케이션은 어떤 기능을 공통으로 필요할까? 데이터베이스 : 나중에 다시 데이터를 찾을 수 있도록 저장 캐시: 읽기 속도 향상을 위해 값이 비싼 수행 결과를 기억 검색 색인: 사용자가 데이터를 검색할 수 있는 기능 제공 스트림 처리: 비동기 처리를 위해 다른 프로세스로 메시지 보내기 일괄 처리: 주기적으로 대량의 데이터 분석 신뢰성, 확장성, 유지보수성 대부분의 소프트웨어 시스템은 신뢰성, 확장성, 유지보수성에 관심이 많다. 엔지니어링 관점에서 이 3가지를 어떻게 생각해야하는지 알려주겠다. (다음 장에서는 이를 잘 지키기위한 방법에 대해 말할 것이다.) 신뢰성 : 무언가 잘못되더라도 지속적으로 올바르게 동작해야한다. 올바르게 동작해야한다는 것은? 사용자가 기대한 기능을 수행해야 한다. 사용..
ListenableFuture 의 Callback Hell 해결하기 ※ 이 글은 정보 전달의 목적보다는 토비님의 강의를 참고하여 ListenableFuture 을 메소드 체이닝으로 리팩토링하는 과정 기록입니다. Future vs. ListenableFuture Future 멀티스레드 작업 시 사용하는 ExecutorService 에서 작업 결과를 받거나 기다리기 위해 Future 클래스의 future.get() 메소드를 사용했을 것이다. 하지만 get() 은 작업이 끝날 때 까지 blocking 되어 다음 라인으로 내려가지 못한다는 한계가 있다. ListenableFuture 하지만 ListenableFuture 은 가능하다! 비동기 프로그래밍 패턴으로 구현되어 있기 때문에 작업스레드! 너 끝나면 이 콜백메소드 실행해! 하고 던져주고 바로 다음으로 넘어가기 때문이다. 💡..
노리 형태소 분석기 이해하기 (2/2) 이 글은 ES 공식 블로그 공식 한국어 분석 플러그인 “노리” 내용 중 어떻게 형태소를 분석하는 가에 대해 중점을 둔 글이다. 공식 블로그를 먼저 읽어보고 이해를 돕기 위해 이 글을 읽는 것을 추천한다! (사실 노리라 쓰고 mecab 얘기를 더 많이했는지도 모른다😅) 버전 mecab-ko-dic-2.1.1-20180720 mecab-0.996-ko-0.9.1 2 더 좋은 분석임을 판단하는 기준 한국어형태소분석기 라는 명사구를 어떻게 분리하면 좋을까? 한국어 / 형태소 / 분석기 로? 아니면 한국어 / 형태 / 소분 / 석기 로? 사람이 보기에는 한국어 / 형태소 / 분석기 로 분리하는게 적절해 보인다. 한국어 / 형태 / 소분 / 석기 로 분리하기에는 뭔가 안어울리는 단어들끼리 붙어있다는 느낌이 들지 않..
노리 형태소 분석기 이해하기 (1/2) 노리는 Lucene 7.4 (= ElasticSearch 6.4) 부터 제공되는 ES 공식 한국어 형태소 분석기이다. 노리 가 만들어지기까지 어떤 과정을 거쳐왔는지 살펴보고, 다음글에서는 노리가 어떻게 문장에서 형태소를 분석하는지 알아볼 것이다. 노리가 세상에 나오기까지 💡 말뭉치가 뭐야? 도서관,1781,3535,2110,NNG,*,T,도서관,Compound,*,*,도서/NNG/*+관/NNG/* 이런거다. 예를 들면 형태소 분석기를 만든다고 할 때, “[도서관]은 일반명사인 [도서]와 일반명사인 [관]으로 분리돼” 같이 학습을 위해 필요한 데이터를 뜻한다. (노리는 81만개 이상) 영어로는 코퍼스(corpus) 라고 부른다. 1. 노리의 조상은 mecab 이라는 일본어 형태소 분석엔진이다. mecab ..