메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
VillageSQL 확장은 villagesql 크레이트를 사용하여 Rust로 작성할 수 있습니다. SDK가 모든 FFI 마셜링을 처리하므로 — 여러분은 평범한 Rust를 작성하고, extension! 매크로가 서버가 로드 시점에 호출하는 C 진입점을 생성합니다.

Rust를 선택해야 하는 경우

다음과 같은 경우 Rust가 올바른 선택입니다:
  • Rust를 선호하고 C++ 코드베이스가 필요하지 않을 때
  • 가비지 컬렉터 없이 메모리 안전성을 원할 때
  • 새 확장을 만들고 있고 기존 C++ 의존성이 없을 때
기존 C++ 코드베이스가 있거나 현재 사용할 수 있는 가장 완전한 사용자 정의 타입 빌더 API가 필요하다면 C++ 확장 작성하기를 참조하세요.
이 API는 확장 개발에 안정적이지만, 사용자 정의 타입 빌더 API는 아직 성숙해 가는 중입니다.

사전 요구 사항

다음이 필요합니다:
  • Rust 안정 툴체인 — rustup.rs에서 설치
  • cargo-vsql — 패키징, 설치, 테스트를 위한 Cargo 하위 명령
SDK 저장소에서 cargo-vsql을 설치하세요:

새 크레이트 설정하기

라이브러리 크레이트를 만들고, SDK를 추가하고, 설정하세요:
그다음 Cargo.toml에서 크레이트 타입을 설정하세요:
Cargo.toml 옆에 manifest.json을 추가하세요:

함수 작성하기

Rust로 확장 만들기 페이지에 ROT-13 예제를 사용한 전체 안내가 있습니다. 짧게 요약하면: fn(&[InValue]) -> VdfReturn을 구현하고, func!로 등록하고, 모든 것을 extension!으로 감쌉니다:
사용자 정의 타입(바이너리 저장, 정렬, 해싱)은 Rust에서의 사용자 정의 타입을 참조하세요.

확장 테스트하기

mysql-test/t/basic.test에 테스트를 작성하세요:
VillageSQL 빌드 디렉터리를 설정하고, 예상 결과를 생성한 다음, 실행하세요:
통과한 실행은 각 테스트 파일에 대해 [ pass ]를 출력합니다.

SQL에서 설치하기

패키징하고 설치하세요:
그다음 SQL에서:

함께 보기