개발
-
Virtual Thread in JAVA개발/기술 2026. 1. 14. 11:46
작업마다 Java Thread 를 생성하면 OS 단위에서 Thread 를 생성하기 때문에 비싸고 시간도 오래 걸린다. 그래서 Java 진영에선 기존에 생성하던 Java Thread 를 Platform Thread 라고 정의하고 Virtual Thread 라는 것을 새로 만들어서 Platform Thread 위에서 실행되는 구조를 잡았다. Virtual Thread 는 Heap 메모리에 있는 객체다. Virtual 스레드는 생성 작업이 JVM 위에서 이뤄지기 때문에 Platform Thread 에 비해서 생성 비용도 싸다. Stack 이나 IP 같은 저장공간도 JVM 내에서 컨텍스트 스위칭 되는 형태이기 때문에 불필요한 시스템 콜이 없어지게 된다 Java Thread 에 비해서 커널레벨까지 내려가서 실행..
-
java volatile개발 2026. 1. 8. 15:21
아래와 같은 클래스가 있다고 해보자. public static class SharedClass { private int x = 0; private int y = 0; public void increment() { x++; y++; } public void checkForDataRace() { if (y > x) { System.out.println("y > x - Data Race is detected"); } }} x에 대한 증가가 y에 대한 증가보다 먼저 작성되었기 때문에 이론상으로 x>=y 인 상황만 발행해야하고 checkForDataRace 에서 if 문에 걸릴 일은 없다. 그런데 멀티 쓰레..
-
Python GIL개발 2025. 12. 28. 17:53
CPython파이선 스크립트 엔진중에 가장 메인. 공식 배포판에서도 이걸 쓴다. C 언어로 작성되었고 공식 배포판이다가장 완벽하고 모든 최신 기능을 제공한다커뮤니티가 가장 크고 풍부한 문서를 제공한다터미널에서 python 명령어를 실행하면 CPython 엔진으로 파이선 파일을 실행하게 된다GIL글로벌 인터프리터 락 (Global Interpreter Lock). 쓰레드간에 동시성을 제어하기 위해 사용되는 메커니즘. GIL 은 동시에 하나의 쓰레드만 바이트코드를 실행할 수 있도록 허용하며 메모리 관리와 객체 모델의 일관성을 보장한다 왜 파이썬은 하나의 스레드만 바이트 코드를 실행하게 했는지 궁금할 수 있는데 자세히 들어가면 복잡하니 C 언어 생태계에서 단일스레드 성능을 높이기 위함이였다 정도로 짧게 이해하..
-
넷플릭스가 클릭하우스를 최적화시킨 방법개발/데이터베이스 2025. 11. 18. 19:38
How Netflix optimized its petabyte-scale logging system with ClickHouse“To make our logging system work, we had to make a lot of choices. The key is how you simplify things in order to do the least amount of work.” Daniel Muino, Software Engineerclickhouse.com클릭하우스 공식 블로그를 번역 + 개인적인 의견을 첨가한 포스팅 모든 종류의 로깅 시스템을 압도한다고 말하는데 얼마나 대단하면 이런 말을 할 수 있는 것인가 ㅎㅎ 넷플릭스는 자부심이 대단한듯 Safe to say, this is a scale t..
-
Clickhouse Materialized views개발/데이터베이스 2025. 11. 7. 22:41
테이블에 데이터가 추가될 때마다 특정한 쿼리를 실행하고 결과를 target 테이블에 전송하는 테이블이다. 데이터가 추가될수록 결과가 타겟 테이블에 전송되고 중간 result 는 업데이트되고 병합된다. 병합된 결과는 기존 데이터에 대한 쿼리와 동등하다. target 테이블에 미리 계산된 결과를 전달하고 싶을때 사용하는 테이블이라고 보면됨. 아래 up_down_votes_per_day_mv 테이블은 up_down_votes_per_day 테이블에 일별 데이터를 모아서 전송해주는 역할을 하는 materialized 테이블이다CREATE MATERIALIZED VIEW up_down_votes_per_day_mv TO up_down_votes_per_day ASSELECT toStartOfDay(Creation..
-
Clickhouse Projections개발/데이터베이스 2025. 11. 7. 20:39
Projections Projections | ClickHouse DocsPage describing what projections are, how they can be used to improve query performance, and how they differ from materialized views.clickhouse.com Projection 은 클릭하우스에서 속도를 올리기 위한 기술중 하나다. 실질적으로 Projection 은 기존 테이블에 숨겨진 추가 테이블이라고 볼 수 있다. projection 은 기존 테이블과 행의 순서도 다르고 primary index 도 다르다. 데이터가 들어올 때마다 자동으로 그리고 점진적으로 aggregate values 들을 구해준다 Practically,..
-
Clickhouse Skip Index개발/데이터베이스 2025. 11. 7. 20:33
Understanding ClickHouse Data Skipping Indexes | ClickHouse DocsSkip indexes enable ClickHouse to skip reading significant chunks of data that are guaranteed to have no matching values.clickhouse.com 전통적인 방식에서는 B-tree 구조로 데이터베이스가 행을 log(n) 시간에 찾을 수 있게 했다. 하지만 클릭하우스의 경우 개별 row 가 존재하는게 아니기 때문에 작동하지 않는다. 대신 클릭하우스에선 skip 인덱스라는 걸 사용해서 불필요한 데이터 chunk 를 읽지 않아도 되는 방식을 제공한다. 각 구조마다 Skip 인덱스 표시가 되어 있어서 청크..
-
Clickhouse JSON 칼럼개발/데이터베이스 2025. 10. 27. 17:12
How we built a new powerful JSON data type for ClickHouseWe’re excited to introduce our new and significantly enhanced JSON data type, purpose-built to deliver high-performance handling of JSON data. Our core engineer, Pavel Kruglov, dives into how we built this feature on top of ClickHouse's columnar storage.clickhouse.com공식 블로그 글을 읽고 공부했던 내용을 정리했다Variant Variant 칼럼이란게 있다. 기존 구조에서는 칼럼에는 하나의 데이터..