관계형 데이터베이스에서 다형성 데이터를 모델링하는 다섯 가지 방법

2025-07-09
관계형 데이터베이스에서 다형성 데이터를 모델링하는 다섯 가지 방법

이 글에서는 관계형 데이터베이스에서 다형성 데이터를 모델링하는 다섯 가지 방법, 즉 단일 테이블, NULL 허용 외래 키, 태그가 지정된 합집합, 자식에서 부모로의 외래 키, JSON을 살펴봅니다. 각 방법에는 장단점이 있습니다. 예를 들어 단일 테이블 접근 방식은 간단하지만 속도가 느릴 수 있으며, JSON은 확장하기 쉽지만 데이터 유효성 검사가 없습니다. 저자는 가독성, 유지 관리 용이성, 디버깅 용이성을 중시하고 성능 최적화는 나중에 하는 것이 좋다고 제안합니다.

더 보기

다중 발견: Prolly Trees의 사례

2025-07-01
다중 발견: Prolly Trees의 사례

Dolt에 중요한 새로운 데이터 구조인 Prolly Trees는 한 번만 발명된 것이 아니라 적어도 네 번 독립적으로 발명되었습니다. 2009년 Avery Pennarun의 bup 프로젝트(Noms보다 앞섬), 2015년 Noms에서 용어 명명, 2019년 Inria의 "Merkle Search Trees", 2020년 DePaul 대학의 "Content-Defined Merkle Trees" 등 동일한 기본 데이터 구조가 서로 다른 맥락에서 반복적으로 등장했습니다. 이는 과학에서 흔히 볼 수 있는 다중 발견 현상을 강조하고 기술 혁신에서 수요의 역할을 부각합니다. DoltHub의 저자들은 Prolly Trees에 대한 자신의 경험을 사례 연구로 활용하여 이러한 현상과 미래 기술에 대한 영향을 논의합니다.

더 보기
개발

Dolt의 go-mysql-server 5주년: 쿼리 여정

2025-04-27
Dolt의 go-mysql-server 5주년: 쿼리 여정

이 글에서는 Dolt이 go-mysql-server를 채택한 지 5주년을 맞이하여 SQL 엔진의 내부 동작을 자세히 설명합니다. 쿼리 파싱부터 결과 스풀링까지의 과정을 파싱, 바인딩, 계획 간소화, 조인 탐색, 비용 기반 최적화, 실행 등의 단계로 나누어 설명합니다. Dolt는 왼쪽 재귀 파서와 바텀업 동적 계획법을 사용하여 쿼리 계획을 최적화하고, 비용 모델을 사용하여 최적의 실행 전략을 선택합니다. 또한 메모리 관리 및 미래의 최적화 방향에 대해 논의하며, 중간 표현의 통합 및 메모리 처닝 감소 등을 제시합니다.

더 보기
개발

Go의 놀라운 메모리 할당 함정: 30% 성능 저하 이야기

2025-04-21
Go의 놀라운 메모리 할당 함정: 30% 성능 저하 이야기

Go 프로젝트에서 무해해 보이는 리팩토링이 30%의 성능 저하를 초래했습니다. 원인은 `ImmutableValue` 구조체의 `GetBytes` 메서드였는데, 값 수신기를 사용했기 때문에 매번 힙 할당이 발생했습니다. 힙 할당은 스택 할당보다 훨씬 비쌉니다. 근본 원인은 Go 컴파일러의 이스케이프 분석의 부정확성으로, 값 수신기가 이스케이프되지 않음을 인식하지 못했기 때문입니다. 포인터 수신기로 변경하여 문제를 해결했습니다. 이 사례는 Go 컴파일러의 메모리 할당 결정을 이해하고 적절한 수신기 유형을 사용하는 것이 얼마나 중요한지를 보여줍니다.

더 보기
개발

Cursor: AI 코드 에디터 – 과장 광고 vs. 현실

2025-03-29
Cursor: AI 코드 에디터 – 과장 광고 vs. 현실

Dolt 데이터베이스 개발자가 AI 코드 에디터인 Cursor를 사용하여 10배 생산성 향상이라는 과장 광고가 사실인지 테스트했습니다. 대규모 코드베이스에서 Cursor를 사용한 초기 시도는 실망스러웠고 디버깅이 매우 어려웠습니다. 하지만 새로운 프로젝트를 만들 때는 Cursor가 뛰어난 성능을 보여주며 몇 시간 만에 Factorio 모드를 만들었습니다. 업무 프로젝트에서 사용했을 때는 기본 기능 코드 생성은 효율적이었지만 코드 품질 향상을 위해 많은 리팩토링이 필요했습니다. 결론적으로 저자는 Cursor를 통해 생산성이 약 50% 향상되었다는 결론을 내렸으며, 이는 홍보된 10배에는 훨씬 못 미치는 수치입니다. 복잡한 코드 처리 및 기존 코드베이스 이해에 있어 Cursor에는 여전히 개선의 여지가 있다고 지적했습니다.

더 보기
개발