본문 바로가기
반응형

Data28

Parquet란 무엇이고, 왜 사용하는가 | LIM Parquet (파케이) 데이터를 저장하는 방식 중 하나로 하둡생태계에서 많이 사용되는 파일 포맷이다. 빅데이터를 처리할 때는 많은 시간과 비용이 들어가기 때문에 빠르게 읽고, 압축률이 좋아야 한다. 이러한 특징을 가진 파일 포맷으로는 Parquet(파케이), ORC, Avro(에이브로)가 있다. 📝 파케이가 압축률이 좋은 이유: 컬럼기반 저장포맷이기 때문 먼저, 컬럼기반이 무엇인지 알아보자. 데이터베이스를 예시로 들면, 행 기반으로 저장하는 방식(대표적으로 MySQL)과 열 기반(대표적으로 BigQuery)으로 저장하는 방식이 있다. 다음과 같은 데이터베이스가 있다고 할 때 행 기반으로 저장되는 건 다음과 같이 저장되고, 열 기반으로 저장되는 건 아래와 같이 저장된다. 열 기반으로 저장되는 것이 압축률.. 2023. 2. 3.
Apache Arrow | LIM 이전에 Python Ray 에 대해 학습하면서 Ray Mulitprocessing 이 빠른 이유가 기본 Python Mulitiprocessing 과 비교했을 때 직렬화 과정의 오버헤드가 없다는 것이었다. 이때 Apache Arrow를 사용한다고 했고, 이 Apache Arrow 가 도대체 어떤 거길래 직렬화 과정을 거치지 않는다는 건지 좀 더 자세히 알아보기 위해 공부했다. 🤔 직렬화(Serialization)란? 객체를 저장하거나 메모리, 데이터베이스 혹은 파일로 옮길 때 필요한 것이 직렬화이다. 직렬화란 객체를 바이트 스트림으로 바꾸는 것, 즉 객체에 저장된 데이터를 스트림에 쓰기위해 연속적인 데이터로 변환하는 것이다. 직렬화의 주된 목적은 객체를 상태 그대로 저장하고 필요할 때 다시 생성하여 사용.. 2023. 1. 29.
Apache Druid 정의와 장단점 및 ES 와의 비교 | LIM 아파치 드루이드에 대한 소개는 다음과 같다. Apache Druid is a high performance real-time analytics database 아파치 드루이드는 다차원 데이터를 빠른 쿼리 속도를 제공하기 위해 세그먼트 단위로 데이터를 인덱스하여 저장한다. 따라서 실시간 분석을 할 때 용이하다. 드루이드는 실시간 수집, 빠른 쿼리 성능 및 높은 가동 시간이 중요한 경우를 지원하기 위한 데이터베이스로 가장 자주 사용된다. 빠른 집계가 필요한 동시성 높은 API 백엔드로 사용된다. 요약하자면 이러한 기능을 갖고 있다고 생각하면 된다 High-Performance: Ingestion and Query Column-Oriented Horizontal Scalable Distributed Data .. 2022. 12. 30.
[DATABASE] OLAP vs OLTP | LIM 📚 OLTP (Online Transaction Processing) 직역하면 온라인 트랜잭션 처리를 뜻한다. 무수히 많이 발생되는 각각의 작업요청을 오류없이 처리하고, 그 결과값을 실시간으로 확인시켜줘야 함을 의미 OLTP는 현재의 데이터 처리가 얼마나 정확하고, 무결한지가 중요하다. 그렇기 때문에 주로 데이터의 저장, 삭제, 수정 등의 실질적인 데이터를 수정하는 작업(INSER, UPDATE, DELETE) 을 진행하는 것을 의미하는 용어이다. 📚 OLAP (Online Analytical Processing) 온라인 분석 처리 정도로 해석될 수 있다. OLTP 가 데이터 자체의 처리에 중점이 된 용어라면, OLAP 는 이미 저장된 데이터를 기반하여 분석하는데 중점을 둔 용어이다. OLAP의 목적은 .. 2022. 12. 25.
[MySQL] View 란? | LIM ✔️ [View 란] 데이터베이스에 존재하는 일종의 가상 테이블이라고 보면 된다. 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지는 않다. 뷰에서는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만을 수행하게 된다. 그래서 이름도 뷰(View) 인 것 같다. View 를 생성하는 SQL 문만 저장한다고 생각하면 될 것 같다. ✔️ [With 와의 차이] With 와 비슷하다고 생각할 수 있을 것 같은데, With 는 쿼리문이 실행될 때 임시로 사용하는 테이블이고, View 는 데이터셋에 저장해서 여러 사람이 활용할 수 있다. 💡 View 의 사용 목적은 복잡한 쿼리문을 계속 조회할 때, 테이블처럼 관리되면 편하기 때문이라고 생각한다. ❓[다른 테이블에 변경사항이 일어났을 때 View.. 2022. 12. 10.
[MySQL] null vs 0 group by avg 차이 | LIM mysql에서 group by 를 통해 평균을 구해야할 일이 생겼다. 문제는 원하지 않은 값, 즉 0 이 들어와서 평균을 깎아먹고 있었던 것이다. 예를들어서 테이블을 통해 살펴보자 이 테이블에서 height 즉 키는 다 있으므로 6명의 평균을 다 구하고 싶었고, weight는 있는 사람들 것에 대한 평균만 내고 싶었다. 하지만 이렇게 weight를 적지 않은 사람들의 몸무게를 0으로 두고 평균을 냈을 때 다음과 같은 결과가 나온다. 즉 평균 키는 구해졌지만 평균 몸무게가 0으로 적은 사람들 때문에 원하지 않는 평균 무게가 나왔다. 이를 방지하기 위해서는 몸무게를 적지 않은 사람들의 몸무게를 0 이 아닌 null 로 변경해주면 된다. 이렇게 null로 두고 평균을 구하면 키는 6명의 평균키, 몸무게는 4명.. 2022. 7. 12.
반응형