{"id":103715,"date":"2022-04-05T15:36:50","date_gmt":"2022-04-05T13:36:50","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql"},"modified":"2022-04-05T15:36:50","modified_gmt":"2022-04-05T13:36:50","slug":"vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","title":{"rendered":"Vydanie FerretDB 0.1, implement\u00e1cie MongoDB na b\u00e1ze S\u00daBD PostgreSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bol spusten\u00fd projekt FerretDB 0.1 (b\u00fdval\u00fd MangoDB), ktor\u00fd umo\u017e\u0148uje nahradi\u0165 dokumentovo orientovan\u00fa datab\u00e1zu MongoDB PostgreSQL bez zmien v k\u00f3de aplik\u00e1ci\u00ed. FerretDB funguje ako proxy server, ktor\u00fd prev\u00e1dza dopyty z MangoDB na SQL pr\u00edkazy pre PostgreSQL, \u010d\u00edm umo\u017e\u0148uje pou\u017e\u00edva\u0165 PostgreSQL ako skuto\u010dn\u00e9 \u00falo\u017eisko. K\u00f3d je nap\u00edsan\u00fd v programovacom jazyku Go a je distribuovan\u00fd pod licenciou Apache 2.0.        <\/p>\n<p>Potreba migr\u00e1cie m\u00f4\u017ee vznikn\u00fa\u0165 v d\u00f4sledku prechodu MongoDB na neopen-source licenciu SSPL, ktor\u00e1 je zalo\u017een\u00e1 na licencii AGPLv3, ale nie je otvoren\u00e1, preto\u017ee obsahuje diskrimina\u010dn\u00e9 po\u017eiadavky na dodanie pod licenciou SSPL nielen k\u00f3du samotnej aplik\u00e1cie, ale aj zdrojov\u00fdch k\u00f3dov v\u0161etk\u00fdch komponentov zapojen\u00fdch do poskytovania cloudovej slu\u017eby.     <\/p>\n<p>Ako cie\u013eov\u00e1 skupina FerretDB s\u00fa ozna\u010den\u00ed pou\u017e\u00edvatelia, ktor\u00ed vo svojich aplik\u00e1ci\u00e1ch nevyu\u017e\u00edvaj\u00fa pokro\u010dil\u00e9 funkcie MongoDB, ale chc\u00fa pou\u017e\u00edva\u0165 \u00faplne otvoren\u00fd softv\u00e9rov\u00fd stack. V s\u00fa\u010dasnej f\u00e1ze v\u00fdvoja FerretDB zatia\u013e podporuje len \u010das\u0165 funkci\u00ed MongoDB, naj\u010dastej\u0161ie vyu\u017e\u00edvan\u00fdch v typick\u00fdch aplik\u00e1ci\u00e1ch. V bud\u00facnosti pl\u00e1nuj\u00fa dosiahnu\u0165 pln\u00fa kompatibilitu s ovl\u00e1da\u010dmi pre MongoDB a poskytn\u00fa\u0165 mo\u017enos\u0165 pou\u017e\u00edva\u0165 FerretDB ako transparentn\u00fa n\u00e1hradu za MongoDB.      <\/p>\n<p>Pripom\u00edname, \u017ee MongoDB zaber\u00e1 medzeru medzi r\u00fdchlymi a \u0161k\u00e1lovate\u013en\u00fdmi syst\u00e9mami, ktor\u00e9 spravuj\u00fa d\u00e1ta vo form\u00e1te k\u013e\u00fa\u010d\/hodnota, a rela\u010dn\u00fdmi SDB, funk\u010dn\u00fdmi a pohodln\u00fdmi na vytv\u00e1ranie dotazov. MongoDB podporuje ukladanie dokumentov v JSON podobnom form\u00e1te, m\u00e1 dostato\u010dne flexibiln\u00fd jazyk na formulovanie dotazov, dok\u00e1\u017ee vytv\u00e1ra\u0165 indexy pre r\u00f4zne ulo\u017een\u00e9 atrib\u00faty, efekt\u00edvne zabezpe\u010duje ukladanie ve\u013ek\u00fdch bin\u00e1rnych objektov, podporuje \u017eurn\u00e1lovanie oper\u00e1ci\u00ed pri zmene a prid\u00e1van\u00ed d\u00e1t do DB, m\u00f4\u017ee fungova\u0165 v s\u00falade s paradigmatick\u00fdm modelom Map\/Reduce, podporuje replik\u00e1ciu a budovanie odoln\u00fdch konfigur\u00e1ci\u00ed.     <\/p>\n<p>Vo vydan\u00ed FerretDB 0.1.0 bol \u00faplne prepracovan\u00fd sp\u00f4sob extrakcie d\u00e1t z PostgreSQL. Predt\u00fdm sa pre ka\u017ed\u00fd prich\u00e1dzaj\u00faci dopyt MongoDB vytv\u00e1ral jeden SQL dopyt na PostgreSQL, ktor\u00fd pou\u017e\u00edval funkcie na pr\u00e1cu s form\u00e1tom JSON a vykon\u00e1val filtr\u00e1ciu v\u00fdsledkov na strane PostgreSQL. Vzh\u013eadom na rozdiely v semantike json-funkci\u00ed PostgreSQL a MongoDB sa pozoroval nes\u00falad spr\u00e1vania pri porovn\u00e1van\u00ed a trieden\u00ed r\u00f4znych typov. Na vyrie\u0161enie tohto probl\u00e9mu sa z PostgreSQL teraz extrahuje nadbyto\u010dn\u00fd s\u00fabor d\u00e1t a filtr\u00e1cia v\u00fdsledkov sa vykon\u00e1va na strane FerretDB, \u010do umo\u017enilo napodobni\u0165 spr\u00e1vanie MongoDB vo v\u00e4\u010d\u0161ine situ\u00e1ci\u00ed.     <\/p>\n<p>Zv\u00fd\u0161enie kompatibility malo za n\u00e1sledok zn\u00ed\u017eenie v\u00fdkonu, ktor\u00e9 sa v bud\u00facich vydaniach pl\u00e1nuje vykompenzova\u0165 selekt\u00edvnym filtrovan\u00edm na strane FerretDB len t\u00fdch dopytov, pri ktor\u00fdch sa pozoruje rozdiel v spr\u00e1van\u00ed. Napr\u00edklad dopyt &#171;db.collection.find({_id: &#8216;some-id-value&#8217;})&#187; m\u00f4\u017ee by\u0165 \u00faplne spracovan\u00fd v PostgreSQL. Prim\u00e1rnou \u00falohou projektu v tejto f\u00e1ze v\u00fdvoja je dosiahnu\u0165 kompatibilitu s MongoDB, pri\u010dom v\u00fdkon sa zatia\u013e pos\u00fava na druh\u00fa ko\u013eaj. Medzi funk\u010dn\u00fdmi zmenami v novej verzii je zaznamenan\u00e1 podpora v\u0161etk\u00fdch bitov\u00fdch oper\u00e1torov, oper\u00e1tora porovnania &#171;$eq&#187;, ako aj oper\u00e1torov &#171;$elemMatch&#187; a &#171;$bitsAllClear&#187;.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=56971\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. FerretDB \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a MangoDB \u0432 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a PostgreSQL, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PostgreSQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Go \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. \u041f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-103715","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a FerretDB 0.1, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MongoDB \u043d\u0430 \u0431\u0430\u0437\u0435 \u0421\u0423\u0411\u0414 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2022-04-05T13:36:50+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-04-05T13:36:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Vydanie FerretDB 0.1, implement\u00e1cia MongoDB na b\u00e1ze datab\u00e1zy PostgreSQL | ProHoster","description":"Bol vydan\u00fd projekt FerretDB 0.1 (b\u00fdval\u00fd MangoDB), ktor\u00fd umo\u017e\u0148uje nahradi\u0165 dokumentovo orientovan\u00fa datab\u00e1zu MongoDB PostgreSQL bez zmien v k\u00f3de aplik\u00e1ci\u00ed.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a FerretDB 0.1, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MongoDB \u043d\u0430 \u0431\u0430\u0437\u0435 \u0421\u0423\u0411\u0414 PostgreSQL | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","og:url":"https:\/\/prohoster.info\/sk\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2022-04-05T13:36:50+00:00","article:modified_time":"2022-04-05T13:36:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"103715","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2022-04-05 13:37:13","updated":"2022-10-02 21:35:28","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/103715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=103715"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/103715\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=103715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=103715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=103715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}