반응형 🌿 Data Engineering/Data Processing13 Embedding을 저장하는 VectorDB 그리고 벡터 유사도 검색 Indexing 정형데이터 뿐만 아니라 텍스트 이미지 비정형 데이터, 더 나아가 LLM까지 앞으로 VectorDB를 빼놓을수가 없게 되었다.우리도 VectorDB를 사용하고 있으며, 벡터간의 유사도 검색으로 다양한 서비스에 적용하고 있다.이번글에서는 기본적인 vector와 embedding 그리고 vectorDB의 이론적인 개념에 대해서 살펴보려고 한다. Vector란?고등학교 수학에서 때 배웠던 그 벡터 맞다.간략하게 기하학에서 벡터는 '크기'와 '방향'을 함께 가지는 물리량을 벡터라고 표현했다. 화살표 방향이 벡터의 방향이고, 화살표 길이가 크기가 되었다. 그렇다면 DataScience에서는 여러 의미의 데이터들을 특정한 순서대로 모아둔 데이터 레코드를 벡터라고 부르고,이러한 벡터가 여러개 있는 데이터의 집.. 2024. 8. 4. 📖[Redshift][S3] 대용량 데이터 처리 고민: S3 Unload/Copy와 Redshift Specturm 외부테이블 대용량 데이터에 대한 고민 요즘들어 이런게 바로 데이터엔지니어링인가?싶은 부분이 있어서 기록해보려고 한다. 한창 개발중인 알고리즘은 최소 4주 이상의 사용자 행동로그를 기반으로 동작한다. 그런데 이때 이렇게 큰 대용량 데이터를 수집하고 처리하는데 아래와 같은 두가지 고민사항이 있었다. 1. 수집한 대용량 로그 데이터를 어디에 어떻게 저장할 것인가? 2. 분석하기 위해 대용량 데이터를 불러오는 가장 효율적인 방법은? 3. 최종 분석결과를 어디에 어떻게 저장할 것인가? 이러한 고민들을 엔지니어링 관점에서 어떻게 해결했는지 그리고 관련 기술에 대해 작성해보려고 한다. 1. 날짜기준으로 파티셔닝하여 s3에 unload한다 ( Redshift -> S3 ) 우리는 redshift에서 어찌저찌 수집 및 분석한 데이.. 2023. 4. 23. [snowflake] Snowflake로 S3에 있는 데이터 COPY 해보기 우리는 redshift를 어떻게 쓰고 있는가? aws 데이터웨어하우스로 두가지 목적으로 사용하고 있다. 첫번째는 DS의 데이터 분석 작업용, product info나 event log 등 분석하기 위한 테이블들을 저장한다. 두번째는 배치작업용, 실제 서비스화하려는 알고리즘들을 개발하기 위해 대용량 데이터를 처리하는 목적으로 사용한다. redshift가 힘들어요 점점 데이터분석 작업 뿐만 아니라 배치작업들이 증가하고 있다. 특히나 대부분은 대용량 데이터를 처리하는 경우가 많다. 그런데 이걸 하나의 redshift에서 처리하다보니 redshift가 힘들어하는지 처리시간도 느려지고 물론 비용도 많이 나가고 있다. 그래서 일단은 최대한 여러가지 배치작업들을 동시에 처리하는걸 피하기 위해 배치 주기를 겹치지 않게.. 2023. 4. 9. 참고자료-DynamoDB 데이터 변경 이벤트 파이프라인 구축하기 https://medium.com/daangn/dynamodb-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%80%EA%B2%BD-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-feat-kinesis-1733db06066 DynamoDB 데이터 변경 이벤트 파이프라인 구축하기 (feat. Kinesis) DynamoDB 데이터 변경 이벤트를 기반으로 AWS-Native 데이터 파이프라인 구축하기 medium.com 2021. 12. 27. 🧾대용량데이터 읽기 속도비교(read file, pandas, pyarrow) 처음으로 10만건 정도 되는 데이터를 다루어볼 수 있는 기회가 생겼다. 대용량데이터는 처음이다보니 데이터를 읽는 것부터 오래걸렸다.. 그래서 데이터를 읽기 위해 여러가지 방법을 시도해보았고, 그 결과들을 비교해보려고 한다! Read CSV file file로 읽어서 df로 저장하기 내가 가장 처음 시도한 방법이다. 별다른 생각없이 그냥 일반적으로 CSV 파일을 읽어오려고 했다. with open file로 읽어서 df로 저장하기 비슷한 방법이지만 with open으로도 파일을 읽어올 수 있었다. 아무래도 line마다 읽다보니 약간 시간이 더 걸리는듯? Pandas read_csv로 읽어서 df로 저장하기 어차피 dataframe을 사용할꺼라면 그냥 pandas의 read-csv를 사용하는게 더 나을지도?.. 2021. 9. 2. 대용량데이터 빠르게 DB에 넣기(bulk insert) django 프로젝트를 하면서 데이터를 db에 저장해야할 일이 생겼다. 그냥 일반적인 데이터라면 별다른 이슈가 없었겠지만, 프로젝트의 목적은 10만건정도 되는 대용량 데이터를 다루어보는 것이다. 그래서 보통과 다르게 빠르게 db에 insert할 수 있는 방법은 없는지 찾아보다가 알게 된 내용을 기록한당! 하지만, 결론적으로 이런 대용량 데이터는 이렇게 막연하게 RDB에 넣으면 안된다!!! BULK INSERT란? MYSQL에서 대량으로 INSERT를 수행하게 해주는 SQL문. 예를 들면 이렇게 3줄로 나오는 INSERT를 한줄로 수행할 수 있다. # 일반 INSERT insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c).. 2021. 8. 29. 애자일(Agile) 방법론- 스크럼(Scrum) VS 칸반(Kanban) 데이터팀은? Waterfall VS Agile 폭포수 모델(waterfall model) 전통적인 방법으로 [요구사항분석->기획->디자인->개발->테스트->출시] 순서대로 진행하는 방식 마치 폭포가 떨어지는식으로 순차적인 단계를 밟으며 진행 하지만,이 방식대로 진행할 경우 수정하기가 어렵다. 하나의 단계가 끝나야 다음단계로 넘어갈 수 있어서, 피드백을 즉각즉각 반영할 수 없다. 보통 현실에선 요구사항 분석 및 기획단계에서 모든걸 100% 예상할 수가 없다. 그래서 수정을 해야할 경우 다시 요구사항분석->기획->디자인->개발 이 흐름을 기다려야한다. 결국 제대로 이슈들이 처리되지 않은채 엉키게 되면 코드품질도 떨어지고, 요구사항도 만족하지 못한 결과로 이어짐 애자일(Agile) 방법론 전통적인 방법론 보다 조금더 유연.. 2021. 8. 16. ETL ELT 차이 | 요즘엔 ETL에서 ELT로 흐름이 바뀌고 있다?@! ETL이란? Extract, Transform, Load 의 앞글자를 딴 용어인데, 여러가지 데이터소스에서 추출(Extract)하고, 데이터를 원하는 형태로 변형(Transform)하고, DW로 적재(Load)하는 과정. 즉, 데이터소스에서 가져온 rawdata로 데이터웨어하우스에 바로 저장할 수 없으니 ETL과정이 필요하다. 핵심은 Tranform하는 단계. 비즈니스 또는 분석용도에 맞춰 데이터를 잘 정제해야한다. 당연히 데이터크기가 크면 클수록, Tranform하는 시간도 오래걸린다. ETL파이프라인이 설계된 후에는 1일1회 등 방식으로 업데이트된 내용을 다시 가져와서 새로운 내용을 저장한다. ELT란? 요즘에는 ETL에서 ELT방식으로 흐름이 바뀌고 있다. T와 L의 위치가 바뀐 ELT 기존의 EL.. 2021. 8. 16. [예정] 객체스토리지와 NoSQL스토리지의 차이점 /CAP정리 ACID특성 트랜잭션 처리에 요구되는 4가지 성질 원시성(Automicity) 일관성(Consistency) 독립성(Isolation) 내구성(Durability) 일반적인 RDB는 ACID특성을 충족하고 있어 신뢰성 있는 트랜잭션 처리를 실현한다. 하지만 ACID특성을 만족하면서 분산시스템을 구축하는 것은 어렵다. 그래서 이러한 한계를 고려해서 다시 만들어진 것이 CAP정리. CAP정리 일관성(Consistency) 가용성(Availabilty) 분단내성(Partition-tolerance) 일반적인 분산시스템에서는 CAP정리를 동시에 충족시킬 수 없어 어느하나가 희생될 수 있다. NoSQL에서는 RDB처럼 반드시 신뢰성 있는 트랜잭션 처리를 수행할 수 있다고는 할 수 없다. NoSQL데이터베이스의 일.. 2021. 6. 27. 🌲Parquet(파케이)란? 컬럼기반 포맷 장점/구조/파일생성 및 열기 어떻게 알게 되었나? 보통 수집한 데이터들은 정형데이터, 비정형데이터에 따라 RDB나 NoSQL로 저장했다. 그런데 데이터레이크를 만들면서 객체스토리지인 s3에 데이터를 저장해야했다. 사실 처음엔 조금 당황했다. 엥? 어떻게 저장해야하는거지? 다른형태로 저장하는건가? 그 기술에는 parquet 데이터 형식이 있었다. Parquet (파케이) 데이터를 저장하는 방식 중 하나로 하둡생태계에서 많이 사용되는 파일 포맷이다. 빅데이터처리는 많은 시간과 비용이 들어가서 빠르게 읽어야하고, 압축률이 좋아야하고, 특정언어에 종속되지 않아야한다. 이러한 특징을 가진 포맷으로 Parquet(파케이), ORC파일, avro(에이브로) 가 있다. 파케이의 역사 실제로 parquet(파케이)는 나무조각을 붙여넣은 마룻바닥이라.. 2021. 6. 26. 이전 1 2 다음 728x90