แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžŸแŸ’แžแŸแžšแž—แžถแž–แžŠแŸ†แž”แžผแž„แž“แŸƒ FerretDB แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž MongoDB แž•แŸ’แžขแŸ‚แž€แž›แžพ PostgreSQL DBMS

แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž‚แž˜แŸ’แžšแŸ„แž„ FerretDB 1.0 แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž‡แŸ†แž“แžฝแžŸแžฏแž€แžŸแžถแžš DBMS MongoDB แžแž˜แŸ’แžšแž„แŸ‹แž‘แžทแžŸแž‡แžถแž˜แžฝแž™ PostgreSQL แžŠแŸ„แž™แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž’แŸ’แžœแžพแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž€แžผแžŠแž€แž˜แŸ’แž˜แžœแžทแž’แžธแŸ” FerretDB แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแž‡แžถแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแž”แŸ’แžšแžผแž€แžŸแŸŠแžธแžŠแŸ‚แž›แž”แž€แž”แŸ’แžšแŸ‚แž€แžถแžšแž แŸ…แž‘แŸ…แž€แžถแž“แŸ‹ MongoDB แž‘แŸ…แž‡แžถแžŸแŸ†แžŽแžฝแžš SQL แž‘แŸ… PostgreSQL แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž”แŸ’แžšแžพ PostgreSQL แž‡แžถแž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แž‘แžปแž€แž‡แžถแž€แŸ‹แžŸแŸ’แžแŸ‚แž„แŸ” แž€แŸ†แžŽแŸ‚ 1.0 แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แžแžถแž‡แžถแž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžŸแŸ’แžแžทแžšแž—แžถแž–แžŠแŸ†แž”แžผแž„แžŠแŸ‚แž›แžแŸ’แžšแŸ€แž˜แžšแžฝแž…แž‡แžถแžŸแŸ’แžšแŸแž…แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž‘แžผแž‘แŸ…แŸ” แž›แŸแžแž€แžผแžŠแžแŸ’แžšแžผแžœแž”แžถแž“แžŸแžšแžŸแŸแžšแž“แŸ…แž€แŸ’แž“แžปแž„ Go แž“แžทแž„แž…แŸ‚แž€แž…แžถแž™แž€แŸ’แžšแŸ„แž˜แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ Apache 2.0 แŸ”

แž‘แžŸแŸ’แžŸแž“แžทแž€แž‡แž“แž‚แŸ„แž›แžŠแŸ…แž…แž˜แŸ’แž”แž„แžšแž”แžŸแŸ‹ FerretDB แž‚แžบแžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸ‚แž›แž˜แžทแž“แž”แŸ’แžšแžพแžŸแž˜แžแŸ’แžแž—แžถแž–แž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แžšแž”แžŸแŸ‹ MongoDB แž“แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž…แž„แŸ‹แž”แŸ’แžšแžพแž‡แž„แŸ‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸ‚แž›แž”แžพแž€แž…แŸ†แž แž‘แžถแŸ†แž„แžŸแŸ’แžšแžปแž„แŸ” แž“แŸ…แžŠแŸ†แžŽแžถแž€แŸ‹แž€แžถแž›แž“แŸƒแž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“ FerretDB แž‚แžถแŸ†แž‘แŸ’แžšแžŸแŸ†แžŽแžปแŸ†แžšแž„แž“แŸƒแžŸแž˜แžแŸ’แžแž—แžถแž– MongoDB แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž‡แžถแž‘แžผแž‘แŸ…แž”แŸ†แž•แžปแžแž“แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž’แž˜แŸ’แž˜แžแžถแŸ” แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแž€แŸ’แž“แžปแž„แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž FerretDB แžขแžถแž…แž€แžพแžแžกแžพแž„แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš MongoDB แž‘แŸ…แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ SSPL แžŠแŸ‚แž›แž˜แžถแž“แž€แž˜แŸ’แž˜แžŸแžทแž‘แŸ’แž’แžท แžŠแŸ‚แž›แž•แŸ’แžขแŸ‚แž€แž›แžพแžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ AGPLv3 แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž˜แžทแž“แž”แžพแž€แž‘แŸ แžŠแŸ„แž™แžŸแžถแžšแžœแžถแž˜แžถแž“แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแžšแžพแžŸแžขแžพแž„แž€แŸ’แž“แžปแž„แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž€แŸ’แžšแŸ„แž˜แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ SSPL แž˜แžทแž“แžแŸ’แžšแžนแž˜แžแŸ‚แž›แŸแžแž€แžผแžŠแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แž‘แŸแŸ” แžแŸ’แž›แžฝแž“แžœแžถแž•แŸ’แž‘แžถแž›แŸ‹ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž€แŸแž˜แžถแž“แž€แžผแžŠแž”แŸ’แžšแž—แž–แž“แŸƒแžŸแž˜แžถแžŸแž’แžถแžแžปแž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ‚แž›แž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’แž“แžนแž„แž€แžถแžšแž•แŸ’แžแž›แŸ‹แžŸแŸแžœแžถแž–แž–แž€แž•แž„แžŠแŸ‚แžšแŸ”

MongoDB แž€แžถแž“แŸ‹แž€แžถแž”แŸ‹แž€แž“แŸ’แž›แŸ‚แž„แž–แžทแžŸแŸแžŸแž˜แžฝแž™แžšแžœแžถแž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแŸ‚แž›แž˜แžถแž“แž›แŸ’แž”แžฟแž“แž›แžฟแž“ แž“แžทแž„แžขแžถแž…แž’แŸ’แžœแžพแž˜แžถแžแŸ’แžšแžŠแŸ’แž‹แžถแž“แž”แžถแž“ แžŠแŸ‚แž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แžพแž‘แžทแž“แŸ’แž“แž“แŸแž™แž€แŸ’แž“แžปแž„แž‘แž˜แŸ’แžšแž„แŸ‹แž‚แž“แŸ’แž›แžนแŸ‡/แžแž˜แŸ’แž›แŸƒ แž“แžทแž„ DBMSs แž‘แŸ†แž“แžถแž€แŸ‹แž‘แŸ†แž“แž„แžŠแŸ‚แž›แž˜แžถแž“แž˜แžปแžแž„แžถแžš แž“แžทแž„แž„แžถแž™แžŸแŸ’แžšแžฝแž›แž€แŸ’แž“แžปแž„แž€แžถแžšแž”แž„แŸ’แž€แžพแžแžŸแŸ†แžŽแžฝแžšแŸ” MongoDB แž‚แžถแŸ†แž‘แŸ’แžšแž€แžถแžšแžšแž€แŸ’แžŸแžถแž‘แžปแž€แžฏแž€แžŸแžถแžšแž€แŸ’แž“แžปแž„แž‘แž˜แŸ’แžšแž„แŸ‹แžŠแžผแž… JSON แž˜แžถแž“แž—แžถแžŸแžถแžŠแŸ‚แž›แžขแžถแž…แž”แžแŸ‹แž”แŸ‚แž“แž”แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแžแžŸแŸ†แžŽแžฝแžš แžขแžถแž…แž”แž„แŸ’แž€แžพแžแž›แžทแž”แžทแž€แŸ’แžšแž˜แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แžปแžŽแž›แž€แŸ’แžแžŽแŸˆแžŠแŸ‚แž›แž”แžถแž“แžšแž€แŸ’แžŸแžถแž‘แžปแž€แž•แŸ’แžŸแŸแž„แŸ— แž•แŸ’แžแž›แŸ‹แž“แžผแžœแž€แžถแžšแž•แŸ’แž‘แžปแž€แžœแžแŸ’แžแžปแž‚แŸ„แž›แž–แžธแžšแž™แŸ‰แžถแž„แž˜แžถแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž– แž‚แžถแŸ†แž‘แŸ’แžšแž€แžถแžšแž€แžแŸ‹แžแŸ’แžšแžถแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš แž“แžทแž„แž”แž“แŸ’แžแŸ‚แž˜แž‘แžทแž“แŸ’แž“แž“แŸแž™แž‘แŸ…แž€แŸ’แž“แžปแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™ แžขแžถแž… แž’แŸ’แžœแžพแž€แžถแžšแžŠแŸ„แž™แžขแž“แžปแž›แŸ„แž˜แžแžถแž˜แž•แŸ‚แž“แž‘แžธ/แž€แžถแžแŸ‹แž”แž“แŸ’แžแž™ แž‚แŸ†แž“แžผแžŸแžแžถแž„ แž‚แžถแŸ†แž‘แŸ’แžšแž€แžถแžšแž…แž˜แŸ’แž›แž„ แž“แžทแž„แž€แžถแžšแžŸแŸ’แžแžถแž”แž“แžถแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŠแŸ‚แž›แžขแžแŸ‹แžฑแž“แž…แŸ†แž–แŸ„แŸ‡แž€แŸ†แž แžปแžŸแŸ”

แž€แŸ’แž“แžปแž„แž…แŸ†แžŽแŸ„แž˜แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž“แŸ…แž€แŸ’แž“แžปแž„ FerretDB 1.0:

  • แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ createIndexes แž“แžทแž„ dropIndexes แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแž แž“แžทแž„แž›แžปแž”แž›แžทแž”แžทแž€แŸ’แžšแž˜แž˜แžฝแž™ แžฌแž…แŸ’แžšแžพแž“แž“แŸ…แž›แžพแž”แžŽแŸ’แžแžปแŸ†แž˜แžฝแž™แŸ”
  • แž–แžถแž€แŸ’แž™โ€‹แž”แž‰แŸ’แž‡แžถ getMore แžแŸ’แžšแžผแžœโ€‹แž”แžถแž“โ€‹แžขแž“แžปแžœแžแŸ’แžโ€‹แžŠแžพแž˜แŸ’แž”แžธโ€‹แž”แž„แŸ’แž แžถแž‰โ€‹แž•แŸ’แž“แŸ‚แž€โ€‹แžแŸ’แž˜แžธโ€‹แž“แŸƒโ€‹แž›แž‘แŸ’แž’แž•แž›โ€‹แžŠแŸ‚แž›โ€‹แž‘แž‘แžฝแž›โ€‹แž”แžถแž“โ€‹แž–แžธโ€‹แž€แžถแžšโ€‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทโ€‹แž–แžถแž€แŸ’แž™โ€‹แž”แž‰แŸ’แž‡แžถโ€‹แžŠแŸ‚แž›โ€‹แžแŸ’แžšแžกแž”แŸ‹โ€‹แž‘แžŸแŸ’แžŸแž“แŸแž‘แŸ’แžšแž“แžทแž…โ€‹แž˜แžฝแž™โ€‹แžŠแžผแž…โ€‹แž‡แžถ แžŸแŸ’แžœแŸ‚แž„แžšแž€ แž“แžทแž„โ€‹แžŸแžšแžปแž”แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžšแž€แžถแžšแž”แŸ’แžšแž˜แžผแž›แž•แŸ’แžแžปแŸ† $sum แžŠแžพแž˜แŸ’แž”แžธแž‚แžŽแž“แžถแž•แž›แž”แžผแž€แž“แŸƒแžแž˜แŸ’แž›แŸƒแž€แŸ’แžšแžปแž˜แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹ $limit แž“แžทแž„ $skip operators แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แž…แŸ†แž“แžฝแž“ แž“แžทแž„แžšแŸ†แž›แž„แžฏแž€แžŸแžถแžšแž€แŸ†แžกแžปแž„แž–แŸแž›แž”แŸ’แžšแž˜แžผแž›แž•แŸ’แžแžปแŸ†แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžš $count แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžšแžถแž”แŸ‹แžฏแž€แžŸแžถแžšแž€แŸ†แžกแžปแž„แž–แŸแž›แž”แŸ’แžšแž˜แžผแž›แž•แŸ’แžแžปแŸ†แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžš $unwind แžŠแžพแž˜แŸ’แž”แžธแž‰แŸ‚แž€แžœแžถแž›แžขแžถแžšแŸแž“แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแž…แžผแž› แž“แžทแž„แž”แž„แŸ’แž€แžพแžแž”แž‰แŸ’แž‡แžธแž‡แžถแž˜แžฝแž™แžฏแž€แžŸแžถแžšแžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž’แžถแžแžปแžขแžถแžšแŸแž“แžธแž˜แžฝแž™แŸ—แŸ”
  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแž•แŸ’แž“แŸ‚แž€แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ collStats, dbStats แž“แžทแž„ dataSize แžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“แžŸแŸ’แžแžทแžแžทแžขแŸ†แž–แžธแž€แžถแžšแž”แŸ’แžšแž˜แžผแž› แž“แžทแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™ แž€แŸแžŠแžผแž…แž‡แžถแž‘แŸ†แž แŸ†แž‘แžทแž“แŸ’แž“แž“แŸแž™แž•แž„แžŠแŸ‚แžšแŸ”

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹