ืžื”ื“ื•ืจื” ื™ืฆื™ื‘ื” ืจืืฉื•ื ื” ืฉืœ FerretDB, ื™ื™ืฉื•ื MongoDB ื”ืžื‘ื•ืกืก ืขืœ PostgreSQL DBMS

ืคืจืกื•ื ืคืจื•ื™ืงื˜ FerretDB 1.0, ื”ืžืืคืฉืจ ืœืš ืœื”ื—ืœื™ืฃ ืืช ื”-MongoDB DBMS ืžื•ื ื—ื” ื”ืžืกืžื›ื™ื ื‘-PostgreSQL ืžื‘ืœื™ ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ื”ื™ื™ืฉื•ื. FerretDB ืžื™ื•ืฉื ื›ืฉืจืช proxy ืฉืžืชืจื’ื ืงืจื™ืื•ืช ืœ-MongoDB ืœืฉืื™ืœืชื•ืช SQL ืœ-PostgreSQL, ืžื” ืฉืžืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘-PostgreSQL ื›ืื—ืกื•ืŸ ื‘ืคื•ืขืœ. ื’ืจืกื” 1.0 ืžืกื•ืžื ืช ื›ื’ืจืกื” ื”ื™ืฆื™ื‘ื” ื”ืจืืฉื•ื ื” ืฉืžื•ื›ื ื” ืœืฉื™ืžื•ืฉ ื›ืœืœื™. ื”ืงื•ื“ ื›ืชื•ื‘ ื‘-Go ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache 2.0.

ืงื”ืœ ื”ื™ืขื“ ื”ืขื™ืงืจื™ ืฉืœ FerretDB ื”ื ืžืฉืชืžืฉื™ื ืฉืื™ื ื ืžืฉืชืžืฉื™ื ื‘ืชื›ื•ื ื•ืช ืžืชืงื“ืžื•ืช ืฉืœ MongoDB ื‘ืืคืœื™ืงืฆื™ื•ืช ืฉืœื”ื, ืืš ืจื•ืฆื™ื ืœื”ืฉืชืžืฉ ื‘ืขืจื™ืžืช ืชื•ื›ื ื” ืคืชื•ื—ื” ืœื—ืœื•ื˜ื™ืŸ. ื‘ืฉืœื‘ ื”ืคื™ืชื•ื— ื”ื ื•ื›ื—ื™ ืฉืœื”, FerretDB ืชื•ืžืš ื‘ืชืช-ืงื‘ื•ืฆื” ืฉืœ ืชื›ื•ื ื•ืช MongoDB ื”ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ ื‘ื™ื™ืฉื•ืžื™ื ื˜ื™ืคื•ืกื™ื™ื. ื”ืฆื•ืจืš ื‘ื™ื™ืฉื•ื FerretDB ืขืฉื•ื™ ืœื”ืชืขื•ืจืจ ื‘ืงืฉืจ ืขื ื”ืžืขื‘ืจ ืฉืœ MongoDB ืœืจื™ืฉื™ื•ืŸ SSPL ืฉืื™ื ื• ื—ื•ืคืฉื™, ื”ืžื‘ื•ืกืก ืขืœ ืจื™ืฉื™ื•ืŸ AGPLv3, ืืš ืื™ื ื• ืคืชื•ื—, ืžืื—ืจ ื•ื”ื•ื ืžื›ื™ืœ ื“ืจื™ืฉื” ืžืคืœื” ืœืกืคืง ื‘ืžืกื’ืจืช ืจื™ืฉื™ื•ืŸ SSPL ืœื ืจืง ืงื•ื“ ื”ืืคืœื™ืงืฆื™ื” ืขืฆืžื•, ืืœื ื’ื ืงื•ื“ื™ ื”ืžืงื•ืจ ืฉืœ ื›ืœ ื”ืจื›ื™ื‘ื™ื ื”ืžืขื•ืจื‘ื™ื ื‘ืืกืคืงืช ืฉื™ืจื•ืชื™ ืขื ืŸ.

MongoDB ืชื•ืคืกืช ื ื™ืฉื” ื‘ื™ืŸ ืžืขืจื›ื•ืช ืžื”ื™ืจื•ืช ื•ืžื“ืจื’ื™ื•ืช ื”ืคื•ืขืœื•ืช ืขืœ ื ืชื•ื ื™ ืžืคืชื—/ืขืจืš ื•-DBMSs ืจืœืฆื™ื•ื ืœื™ื™ื ืฉื”ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื ื•ืงืœื™ื ืœืฉืื™ืœืชื”. MongoDB ืชื•ืžืš ื‘ืื—ืกื•ืŸ ืžืกืžื›ื™ื ื‘ืคื•ืจืžื˜ ื“ืžื•ื™ JSON, ื‘ืขืœ ืฉืคื” ื’ืžื™ืฉื” ืœืžื“ื™ ืœื”ืคืงืช ืฉืื™ืœืชื•ืช, ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืื™ื ื“ืงืกื™ื ืขื‘ื•ืจ ืชื›ื•ื ื•ืช ืžืื•ื—ืกื ื•ืช ืฉื•ื ื•ืช, ืžืกืคืง ื‘ื™ืขื™ืœื•ืช ืื—ืกื•ืŸ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ื™ื ืืจื™ื™ื ื’ื“ื•ืœื™ื, ืชื•ืžืš ื‘ืจื™ืฉื•ื ืคืขื•ืœื•ืช ืœืฉื™ื ื•ื™ ื•ื”ื•ืกืคืช ื ืชื•ื ื™ื ืœืžืกื“ ื”ื ืชื•ื ื™ื, ื™ื›ื•ืœ ืขื‘ื•ื“ื” ื‘ื”ืชืื ืœืคืจื“ื™ื’ืžื” Map/Reduce, ืชื•ืžื›ืช ื‘ืฉื›ืคื•ืœ ื•ื‘ื‘ื ื™ื™ืช ืชืฆื•ืจื•ืช ืกื‘ื™ืœื•ืช ืœืชืงืœื•ืช.

ื‘ื™ืŸ ื”ืฉื™ื ื•ื™ื™ื ื‘- FerretDB 1.0:

  • ื”ื˜ืžื™ืข ืคืงื•ื“ื•ืช createIndex ื•- dropIndex ืœื™ืฆื™ืจื” ื•ืฉื—ืจื•ืจ ืฉืœ ืื™ื ื“ืงืก ืื—ื“ ืื• ื™ื•ืชืจ ืœืื•ืกืฃ.
  • ื”ืคืงื•ื“ื” getMore ื”ื•ื˜ืžืขื” ื›ื“ื™ ืœื”ืฆื™ื’ ื—ืœืง ื—ื“ืฉ ืžื”ืชื•ืฆืื” ื”ืžืชืงื‘ืœืช ืžื‘ื™ืฆื•ืข ืคืงื•ื“ื•ืช ื”ืžื—ื–ื™ืจื•ืช ืกืžืŸ, ื›ื’ื•ืŸ find ื•-aggregate.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืื•ืคืจื˜ื•ืจ ื”ืฆื‘ื™ืจื” $sum ืœื—ื™ืฉื•ื‘ ืกื›ื•ื ืขืจื›ื™ ื”ืงื‘ื•ืฆื”.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืื•ืคืจื˜ื•ืจื™ื $limit ื•-$skip ื›ื“ื™ ืœื”ื’ื‘ื™ืœ ืืช ื”ืžืกืคืจ ื•ืœื“ืœื’ ืขืœ ืžืกืžื›ื™ื ื‘ืขืช ืฆื‘ื™ืจื”.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืื•ืคืจื˜ื•ืจ $count ืœืกืคื™ืจืช ืžืกืžื›ื™ื ื‘ืขืช ืฆื‘ื™ืจื”.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืื•ืคืจื˜ื•ืจ $unwind ืœื ื™ืชื•ื— ืฉื“ื•ืช ืžืขืจืš ื‘ืžืกืžื›ื™ื ื ื›ื ืกื™ื ื•ื™ืฆื™ืจืช ืจืฉื™ืžื” ืขื ืžืกืžืš ื ืคืจื“ ืขื‘ื•ืจ ื›ืœ ืจื›ื™ื‘ ืžืขืจืš.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื—ืœืงื™ืช ืขื‘ื•ืจ ืคืงื•ื“ื•ืช collStats, dbStats ื•-dataSize ื›ื“ื™ ืœืงื‘ืœ ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืื•ืกืฃ ื•ืžืกื“ ื ืชื•ื ื™ื ื•ื’ื•ื“ืœ ื ืชื•ื ื™ื.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”