เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ 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, เบกเบตเบžเบฒเบชเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบžเปเบชเบปเบกเบ„เบงเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบชเบญเบšเบ–เบฒเบก, เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบ•เปˆเบฒเบ‡เป†, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบงเบฑเบ”เบ–เบธเบชเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบชเบฒเบกเบฒเบ” เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เปƒเบซเป‰โ€‹เบชเบญเบ”โ€‹เบ„เปˆเบญเบ‡โ€‹เบเบฑเบš paradigm เปเบœเบ™โ€‹เบ—เบตเปˆ / เบซเบผเบธเบ”โ€‹เบœเปˆเบญเบ™โ€‹, เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ—เบปเบ™โ€‹เบ—เบฒเบ™โ€‹เบ•เปเปˆโ€‹.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ FerretDB 1.0:

  • เบ„เปเบฒเบชเบฑเปˆเบ‡ createIndexes เปเบฅเบฐ dropIndexes เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบฅเบฐเบฅเบถเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบ”เบฑเบ”เบชเบฐเบ™เบตเปƒเบ™เบ„เปเป€เบฅเบฑเบเบŠเบฑเบ™.
  • เบ„เปเบฒเบชเบฑเปˆเบ‡ getMore เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบ•เบปเบงเบเบฐเบžเบดเบš, เป€เบŠเบฑเปˆเบ™: เบŠเบญเบเบซเบฒเปเบฅเบฐเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก $sum เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบเบธเปˆเบก.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš $limit เปเบฅเบฐ $skip operators เป€เบžเบทเปˆเบญเบˆเปเบฒเบเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เปเบฅเบฐเบ‚เป‰เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ $count เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบฑเบšเป€เบญเบเบฐเบชเบฒเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ $unwind เป€เบžเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ array เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบชเป‰เบฒเบ‡เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบš array.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ collStats, dbStats เปเบฅเบฐ dataSize เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบชเบฐเบ–เบดเบ•เบดเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เปเป‰เบกเบนเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™