PostgreSQL DBMS를 기반으로 한 MongoDB 구현인 FerretDB의 첫 번째 안정적인 릴리스

애플리케이션 코드를 변경하지 않고 문서 지향 DBMS MongoDB를 PostgreSQL로 대체할 수 있는 FerretDB 1.0 프로젝트의 릴리스가 게시되었습니다. FerretDB는 MongoDB에 대한 호출을 PostgreSQL에 대한 SQL 쿼리로 변환하는 프록시 서버로 구현되어 PostgreSQL을 실제 저장소로 사용할 수 있습니다. 버전 1.0은 일반용으로 준비된 첫 번째 안정 릴리스로 표시됩니다. 코드는 Go로 작성되었으며 Apache 2.0 라이선스에 따라 배포됩니다.

FerretDB의 주요 대상 고객은 애플리케이션에서 MongoDB 고급 기능을 사용하지 않지만 완전히 개방된 소프트웨어 스택을 사용하려는 사용자입니다. 현재 개발 단계에서 FerretDB는 일반적인 애플리케이션에서 가장 일반적으로 사용되는 MongoDB 기능의 하위 집합을 지원합니다. FerretDB를 구현해야 할 필요성은 MongoDB를 AGPLv3 라이선스를 기반으로 하지만 개방되지 않은 비자유 SSPL 라이선스로 전환하는 것과 관련하여 발생할 수 있습니다. 애플리케이션 코드 자체뿐만 아니라 클라우드 서비스 제공과 관련된 모든 구성 요소의 소스 코드도 포함합니다.

MongoDB는 키/값 데이터에서 작동하는 빠르고 확장 가능한 시스템과 기능적이고 쿼리하기 쉬운 관계형 DBMS 사이의 틈새를 차지합니다. MongoDB는 JSON과 같은 형식으로 문서 저장을 지원하고, 쿼리 생성을 위한 상당히 유연한 언어를 가지고 있으며, 다양한 저장된 속성에 대한 인덱스를 생성할 수 있고, 대용량 이진 객체의 스토리지를 효율적으로 제공하고, 데이터베이스에 데이터를 변경하고 추가하는 작업 로깅을 지원하고, 다음을 수행할 수 있습니다. 패러다임 Map/Reduce에 따라 작업하고 복제를 지원하고 내결함성 구성을 구축합니다.

FerretDB 1.0의 변경 사항:

  • 컬렉션에 하나 이상의 인덱스를 만들고 삭제하기 위한 createIndexes 및 dropIndexes 명령을 구현했습니다.
  • getMore 명령은 찾기 및 집계와 같이 커서를 반환하는 명령 실행에서 얻은 결과의 새로운 부분을 표시하도록 구현되었습니다.
  • 그룹 값의 합계를 계산하기 위해 $sum 집계 연산자에 대한 지원이 추가되었습니다.
  • $limit 및 $skip 연산자에 대한 지원이 추가되어 집계 시 문서 수를 제한하고 건너뜁니다.
  • 집계 시 문서 계산을 위한 $count 연산자에 대한 지원이 추가되었습니다.
  • 들어오는 문서의 배열 필드를 구문 분석하고 각 배열 요소에 대한 별도의 문서로 목록을 형성하는 $unwind 연산자에 대한 지원이 추가되었습니다.
  • 수집 및 데이터베이스 통계와 데이터 크기를 가져오기 위해 collStats, dbStats 및 dataSize 명령에 대한 부분 지원이 추가되었습니다.

출처 : opennet.ru

코멘트를 추가