เบเบฒเบ™เบ›เปˆเบญเบ FerretDB 0.1, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ MongoDB เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ PostgreSQL DBMS

เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ FerretDB 0.1 (เบญเบฐเบ”เบตเบ” MangoDB) เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ—เบ™ DBMS MongoDB เบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเป€เบญเบเบฐเบชเบฒเบ™เบ”เป‰เบงเบ PostgreSQL เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. FerretDB เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเปเบ›เบเบฒเบ™เป‚เบ—เบเบฑเบš MangoDB เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เปเบฒเบ–เบฒเบก SQL เบเบฑเบš PostgreSQL, เปƒเบซเป‰ PostgreSQL เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ•เบปเบงเบˆเบดเบ‡. เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ Go เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” Apache 2.0.

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเป‰เบญเบ™เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ‚เบญเบ‡ MongoDB เป„เบ›เบชเบนเปˆเปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” SSPL เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡, เป€เบŠเบดเปˆเบ‡เบญเบตเบ‡เปƒเบชเปˆเปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” AGPLv3, เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบ‚เปเป‰เบเปเบฒเบซเบ™เบปเบ”เบˆเปเบฒเปเบ™เบเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” SSPL เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เปเบ•เปˆเบเบฑเบ‡. เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ„เบฅเบฒเบง.

เบœเบนเป‰เบŠเบปเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡ FerretDB เปเบกเปˆเบ™เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบฑเป‰เบ™เบชเบนเบ‡เบ‚เบญเบ‡ MongoDB เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ stack เบŠเบญเบšเปเบงเบ—เบตเปˆเป€เบ›เบตเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, FerretDB เบเบฑเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ” MongoDB เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบปเปˆเบงเป„เบ›. เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบเบฑเบšเบ„เบปเบ™เบ‚เบฑเบšเบชเปเบฒเบฅเบฑเบš MongoDB เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ FerretDB เป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเป‚เบ›เปˆเบ‡เปƒเบชเบชเปเบฒเบฅเบฑเบš MongoDB.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒ MongoDB เบ„เบญเบšเบ„เบญเบ‡เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเป„เบงเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ / เบกเบนเบ™เบ„เปˆเบฒ, เปเบฅเบฐ DBMSs เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบตเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบชเบญเบšเบ–เบฒเบก. MongoDB เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบญเบเบฐเบชเบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš JSON, เบกเบตเบžเบฒเบชเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบžเปเบชเบปเบกเบ„เบงเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบชเบญเบšเบ–เบฒเบก, เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบ•เปˆเบฒเบ‡เป†, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบงเบฑเบ”เบ–เบธเบชเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบชเบฒเบกเบฒเบ” เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เปƒเบซเป‰โ€‹เบชเบญเบ”โ€‹เบ„เปˆเบญเบ‡โ€‹เบเบฑเบš paradigm เปเบœเบ™โ€‹เบ—เบตเปˆ / เบซเบผเบธเบ”โ€‹เบœเปˆเบญเบ™โ€‹, เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ—เบปเบ™โ€‹เบ—เบฒเบ™โ€‹เบ•เปเปˆโ€‹.

เบเบฒเบ™เบ›เปˆเบญเบ FerretDB 0.1.0 เป„เบ”เป‰เบญเบญเบเปเบšเบšเปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ PostgreSQL. เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป MongoDB เบ‚เบฒเป€เบ‚เบปเป‰เบฒ, เบ„เปเบฒเบ–เบฒเบก SQL เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบเบฑเบš PostgreSQL, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฎเบนเบšเปเบšเบš JSON เปเบฅเบฐเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบ”เป‰เบฒเบ™ PostgreSQL. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ PostgreSQL เปเบฅเบฐ MongoDB json, เบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบฝเบšเบ—เบฝเบšเปเบฅเบฐเบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบเบ”เบถเบ‡เบญเบญเบเบกเบฒเบˆเบฒเบ PostgreSQL เบŠเป‰เปเบฒเบŠเป‰เบญเบ™, เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป„เบ”เป‰เบ–เบทเบเบเบฑเปˆเบ™เบ•เบญเบ‡เปƒเบ™เบ”เป‰เบฒเบ™ FerretDB, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡ MongoDB เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ.

เบฅเบฒเบ„เบฒเบ‚เบญเบ‡เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปเบกเปˆเบ™เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบžเบงเบเป€เบ‚เบปเบฒเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบŠเบปเบ”เป€เบŠเบตเบเป‚เบ”เบเบเบฒเบ™เป€เบฅเบทเบญเบเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เปƒเบ™เบ”เป‰เบฒเบ™ FerretDB เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบžเบถเบ”เบ•เบดเบเปเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เปเบฒเบ–เบฒเบก "db.collection.find({_id: 'some-id-value'})" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ PostgreSQL. เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบšเบฑเบ™โ€‹เบฅเบธโ€‹เบ„เบงเบฒเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบเบฑเบš MongoDBโ€‹, เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ–เบทเบโ€‹เบเบปเบโ€‹เบเป‰เบฒเบโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป€เบšเบทเป‰เบญเบ‡โ€‹เบซเบผเบฑเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบฎเบธเปˆเบ™เปƒเบซเบกเปˆ, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบšเบดเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš "$eq", เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "$elemMatch" เปเบฅเบฐ "$bitsAllClear".

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

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