> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 확장 프로그램 또는 플러그인 및 컴포넌트

> VEF 확장 프로그램을 구축할 때와 MySQL의 네이티브 플러그인 또는 컴포넌트 인터페이스를 사용할 때의 차이점.

VillageSQL은 MySQL의 추적 포크이며 드롭인 대체 프로그램입니다. MySQL 플러그인 및 컴포넌트 인터페이스는 VillageSQL에서 MySQL과 마찬가지로 작동합니다. VillageSQL은 VillageSQL 확장 프레임워크(VEF)를 제공합니다. 새로운 기능(사용자 정의 SQL 함수, 사용자 정의 유형, 통합 등)을 추가할 때는 VEF 확장 프로그램이 적합한 모델입니다.

## 어디에 무엇을 작성해야 하는가

새로운 것을 구축하는 경우, 자신의 저장소에서 VEF 확장 프로그램을 작성하세요. 플러그인과 컴포넌트도 작동하지만, VEF가 적합한 모델입니다 — [플러그인 및 컴포넌트 대신 확장 프로그램을 사용하는 이유](#why-extensions-instead-of-plugins-and-components)를 참조하세요.

VillageSQL 서버 저장소에 속하는 기여 사항:

| | |
| - | - |
| VEF 자체 개선 사항(새로운 훅 유형, SDK 기능) | [서버 저장소](https://github.com/villagesql/villagesql-server)에 PR 제출 |
| 서버 버그 수정 | [서버 저장소](https://github.com/villagesql/villagesql-server)에서 이슈 또는 PR 제출 |

## 플러그인 및 컴포넌트 대신 확장 프로그램을 사용하는 이유

MySQL 플러그인과 컴포넌트는 VillageSQL에서 작동합니다. VEF 확장 프로그램은 더 많은 기능을 제공합니다:

* **사용자 정의 유형** — 새로운 열 유형 정의 가능(플러그인 및 UDF는 불가능)
* **패키징** — `.veb` 파일로 배포되며 `INSTALL EXTENSION`으로 설치
* **버전 관리** — 확장 프로그램 매니페스트에서 선언되며 서버에서 강제 적용

## 새로운 확장 프로그램 시작하기

VEF에는 두 가지 SDK가 있으며, 둘 다 동일한 프레임워크를 통해 등록됩니다:

* **C++** — [vsql-extension-template](https://github.com/villagesql/vsql-extension-template)이 시작점입니다. [C++로 확장 프로그램 만들기](https://villagesql.com/docs/ko/extensions/build/create.md)를 단계별로 진행하세요.
* **Rust** — [vsql-extension-template-rust](https://github.com/villagesql/vsql-extension-template-rust)가 시작점입니다. [Rust로 확장 프로그램 만들기](https://villagesql.com/docs/ko/extensions/build/rust-sdk.md)를 단계별로 진행하세요.

## VEF가 지원하지 않는 기능이 필요한 경우

VEF는 여전히 성장 중입니다. 아직 지원되지 않는 훅 또는 기능이 필요한 경우:

* **[서버 저장소](https://github.com/villagesql/villagesql-server/issues)에 이슈 생성**하여 필요한 기능 설명
* **기존 이슈에 투표하기** — 요청이 이미 존재하는 경우
* **VEF에 훅을 추가하는 PR 제출** — 프레임워크 개선 기여는 서버 저장소에서 환영합니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.