{"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\/de\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","title":{"rendered":"Ver\u00f6ffentlichung von FerretDB 0.1, einer Implementierung von MongoDB auf der Grundlage der Datenbank PostgreSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die Ver\u00f6ffentlichung der FerretDB 0.1 (ehemals MangoDB) erm\u00f6glicht es, die dokumentenorientierte Datenbank MongoDB durch PostgreSQL zu ersetzen, ohne \u00c4nderungen am Anwendungscode vorzunehmen. FerretDB fungiert als Proxy-Server, der Anfragen an MangoDB in SQL-Abfragen an PostgreSQL umwandelt, wodurch PostgreSQL als tats\u00e4chlicher Speicher verwendet werden kann. Der Code ist in Go geschrieben und steht unter der Apache 2.0-Lizenz.        <\/p>\n<p>Die Notwendigkeit zur Migration kann aufgrund des Wechsels von MongoDB zu der nicht freien SSPL-Lizenz entstehen, die auf der AGPLv3-Lizenz basiert, aber nicht offen ist, da sie diskriminierende Anforderungen an die Bereitstellung unter der SSPL-Lizenz nicht nur f\u00fcr den Anwendungscode, sondern auch f\u00fcr die Quelltexte aller an der Bereitstellung des Cloud-Services beteiligten Komponenten enth\u00e4lt.     <\/p>\n<p>FerretDB richtet sich an Nutzer, die in ihren Anwendungen keine erweiterten Funktionen von MongoDB verwenden, aber einen vollst\u00e4ndig offenen Software-Stack nutzen m\u00f6chten. In der aktuellen Entwicklungsphase unterst\u00fctzt FerretDB bisher nur einen Teil der Funktionen von MongoDB, die in typischen Anwendungen am h\u00e4ufigsten verwendet werden. In Zukunft wird die vollst\u00e4ndige Kompatibilit\u00e4t mit den Treibern f\u00fcr MongoDB angestrebt, um FerretDB als transparente Alternative zu MongoDB anbieten zu k\u00f6nnen.      <\/p>\n<p>Lassen Sie uns daran erinnern, dass MongoDB eine Nische zwischen schnellen und skalierbaren Systemen einnimmt, die mit Daten im Schl\u00fcssel-\/Wert-Format arbeiten, und relationalen DBMS, die funktional und benutzerfreundlich bei der Erstellung von Abfragen sind. MongoDB unterst\u00fctzt die Speicherung von Dokumenten im JSON-\u00e4hnlichen Format, hat eine ausreichend flexible Sprache zur Formulierung von Abfragen, kann Indizes f\u00fcr verschiedene gespeicherte Attribute erstellen, sichert effektiv gro\u00dfe bin\u00e4re Objekte, unterst\u00fctzt die Protokollierung von \u00c4nderungen und Erg\u00e4nzungen in der Datenbank, kann gem\u00e4\u00df dem Map-\/Reduce-Paradigma arbeiten, unterst\u00fctzt Replikation und den Aufbau ausfallsicherer Konfigurationen.     <\/p>\n<p>In der Version FerretDB 0.1.0 wurde die Methode zur Datenextraktion aus PostgreSQL vollst\u00e4ndig \u00fcberarbeitet. Fr\u00fcher wurde f\u00fcr jede eingehende MongoDB-Anfrage eine SQL-Abfrage an PostgreSQL erstellt, die Funktionen zur Verarbeitung des JSON-Formats verwendete und die Ergebnisse auf der Seite von PostgreSQL filterte. Aufgrund der Unterschiede in der Semantik der JSON-Funktionen von PostgreSQL und MongoDB gab es Abweichungen im Verhalten bei Vergleichen und Sortierungen verschiedener Typen. Zur L\u00f6sung dieses Problems wird nun eine \u00fcberfl\u00fcssige Datenabfrage aus PostgreSQL durchgef\u00fchrt, und die Ergebnisfilterung erfolgt auf der Seite von FerretDB, was es erm\u00f6glicht hat, das Verhalten von MongoDB in den meisten Situationen nachzuahmen.     <\/p>\n<p>Der Preis f\u00fcr die erh\u00f6hte Kompatibilit\u00e4t war eine verringerte Leistung, die in zuk\u00fcnftigen Versionen durch selektive Filterung seitens FerretDB nur f\u00fcr Anfragen, bei denen ein abweichendes Verhalten beobachtet wird, ausgeglichen werden soll. Zum Beispiel kann die Anfrage \u201edb.collection.find({_id: 'some-id-value'})\u201c vollst\u00e4ndig in PostgreSQL verarbeitet werden. Das Hauptziel des Projekts in dieser Entwicklungsphase besteht darin, die Kompatibilit\u00e4t mit MongoDB zu erreichen, w\u00e4hrend die Leistung vorerst in den Hintergrund r\u00fcckt. Zu den funktionalen \u00c4nderungen in der neuen Version geh\u00f6rt die Unterst\u00fctzung aller bitweisen Operatoren, des Vergleichsoperators \u201e$eq\u201c, sowie der Operatoren \u201e$elemMatch\u201c und \u201e$bitsAllClear\u201c.<br \/>\n<br \/>Quelle: <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.1.1 - 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\/de\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47FerretDB 0.1 ver\u00f6ffentlicht, eine Implementierung von MongoDB auf Basis der PostgreSQL-Datenbank | ProHoster","description":"Die Ver\u00f6ffentlichung von FerretDB 0.1 (ehemals MangoDB) erm\u00f6glicht es, die dokumentenorientierte Datenbank MongoDB durch PostgreSQL zu ersetzen, ohne \u00c4nderungen am Anwendungscode vorzunehmen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/103715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=103715"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/103715\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=103715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=103715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=103715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}