Heim Datenbank MySQL-Tutorial 在 Postgres 里克隆一个 MongoDB

在 Postgres 里克隆一个 MongoDB

Jun 07, 2016 pm 04:48 PM
mongodb

Postgres 社区在 NoSQL采取一系列动作后并没有坐以待毙. Postgres一直在进步: 集成了 JSON和 PLV8. PLV8 引入了 V8 Javascript引

世上本没有路,走的人多了也就成了路。为什么不能在 Postgres上建一个MongoDB 呢?

Postgres 社区在 NoSQL采取一系列动作后并没有坐以待毙. Postgres一直在进步: 集成了 JSON和 PLV8. PLV8 引入了 V8 Javascript引擎 . 操作 JSON也更简单了 (需要验证).

开始前需要做的准备:

  • Postgres 9.2+ (as of this blog entry, 9.2 is in beta) -

  • V8 - https://github.com/v8/v8

  • PLV8 -

  • MongoDB的最低级别是集合. 集合可以用表来表示:

        CREATE TABLE some_collection (
          some_collection_id SERIAL NOT NULL PRIMARY KEY,
          data JSON
        );

    字符型的JSON 被保存在 Postgres 表里,简单易行 (现在看是这样).

    下面实现自动创建集合. 保存在集合表里:

        CREATE TABLE collection (
          collection_id SERIAL NOT NULL PRIMARY KEY,
          name VARCHAR
        );

        -- make sure the name is unique
        CREATE UNIQUE INDEX idx_collection_constraint ON collection (name);

    一旦表建好了,,就可以通过存储过程自动创建集合.  方法就是先建表,然后插入建表序列.

        CREATE OR REPLACE FUNCTION create_collection(collection varchar) RETURNS
        boolean AS $$
          var plan1 = plv8.prepare('INSERT INTO collection (name) VALUES ($1)', [ 'varchar' ]);
          var plan2 = plv8.prepare('CREATE TABLE col_' + collection +
            ' (col_' + collection + '_id INT NOT NULL PRIMARY KEY, data JSON)');
          var plan3 = plv8.prepare('CREATE SEQUENCE seq_col_' + collection);
       
          var ret;
       
          try {
            plv8.subtransaction(function () {
              plan1.execute([ collection ]);
              plan2.execute([ ]);
              plan3.execute([ ]);
         
              ret = true;
            });
          } catch (err) {
            ret = false;
          }
       
          plan1.free();
          plan2.free();
          plan3.free();
       
          return ret;
        $$ LANGUAGE plv8 IMMUTABLE STRICT;

    有了存储过程,就方便多了:

        SELECT create_collection('my_collection');

    解决了集合存储的问题,下面看看MongoDB数据解析. MongoDB 通过点式注解方法操作完成这一动作:

        CREATE OR REPLACE FUNCTION find_in_obj(data json, key varchar) RETURNS
        VARCHAR AS $$
          var obj = JSON.parse(data);
          var parts = key.split('.');
       
          var part = parts.shift();
          while (part && (obj = obj[part]) !== undefined) {
            part = parts.shift();
          }
       
          // this will either be the value, or undefined
          return obj;
        $$ LANGUAGE plv8 STRICT;

    上述功能返回VARCHAR,并不适用所有情形,但对于字符串的比较很有用:

        SELECT data
          FROM col_my_collection
        WHERE find_in_obj(data, 'some.element') = 'something cool'

    除了字符串的比较, MongoDB还提供了数字类型的比较并提供关键字exists .  下面是find_in_obj() 方法的不同实现:

        CREATE OR REPLACE FUNCTION find_in_obj_int(data json, key varchar) RETURNS
        INT AS $$
          var obj = JSON.parse(data);
          var parts = key.split('.');
       
          var part = parts.shift();
          while (part && (obj = obj[part]) !== undefined) {
            part = parts.shift();
          }
       
          return Number(obj);
        $$ LANGUAGE plv8 STRICT;
       
        CREATE OR REPLACE FUNCTION find_in_obj_exists(data json, key varchar) RETURNS
        BOOLEAN AS $$
          var obj = JSON.parse(data);
          var parts = key.split('.');
       
          var part = parts.shift();
          while (part && (obj = obj[part]) !== undefined) {
            part = parts.shift();
          }
       
          return (obj === undefined ? 'f' : 't');
        $$ LANGUAGE plv8 STRICT;

    接下来是数据查询.  通过现有的材料来实现 find() 方法.

    相关阅读:

    CentOS编译安装MongoDB

    CentOS 编译安装 MongoDB与mongoDB的php扩展

    CentOS 6 使用 yum 安装MongoDB及服务器端配置

    Ubuntu 13.04下安装MongoDB2.4.3

    MongoDB入门必读(概念与实战并重)

    《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]

     

    更多详情见请继续阅读下一页的精彩内容:

    linux

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    Repo: Wie man Teamkollegen wiederbelebt
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Welche Version wird im Allgemeinen für Mongodb verwendet? Welche Version wird im Allgemeinen für Mongodb verwendet? Apr 07, 2024 pm 05:48 PM

    Es wird empfohlen, die neueste Version von MongoDB (derzeit 5.0) zu verwenden, da diese die neuesten Funktionen und Verbesserungen bietet. Bei der Auswahl einer Version müssen Sie funktionale Anforderungen, Kompatibilität, Stabilität und Community-Unterstützung berücksichtigen. Die neueste Version verfügt beispielsweise über Funktionen wie Transaktions- und Aggregationspipeline-Optimierung. Stellen Sie sicher, dass die Version mit der Anwendung kompatibel ist. Wählen Sie für Produktionsumgebungen die Langzeit-Support-Version. Die neueste Version bietet eine aktivere Community-Unterstützung.

    Der Unterschied zwischen NodeJS und VueJS Der Unterschied zwischen NodeJS und VueJS Apr 21, 2024 am 04:17 AM

    Node.js ist eine serverseitige JavaScript-Laufzeitumgebung, während Vue.js ein clientseitiges JavaScript-Framework zum Erstellen interaktiver Benutzeroberflächen ist. Node.js wird für die serverseitige Entwicklung verwendet, beispielsweise für die Entwicklung von Back-End-Service-APIs und die Datenverarbeitung, während Vue.js für die clientseitige Entwicklung verwendet wird, beispielsweise für Single-Page-Anwendungen und reaktionsfähige Benutzeroberflächen.

    Erfahrungsaustausch bei der Implementierung eines Echtzeit-Empfehlungssystems mit MongoDB Erfahrungsaustausch bei der Implementierung eines Echtzeit-Empfehlungssystems mit MongoDB Nov 03, 2023 pm 04:37 PM

    Mit der Entwicklung des Internets wird das Leben der Menschen immer digitaler und die Nachfrage nach Personalisierung wird immer stärker. In dieser Zeit der Informationsexplosion werden Benutzer häufig mit riesigen Informationsmengen konfrontiert und haben keine Wahl. Daher ist die Bedeutung von Echtzeit-Empfehlungssystemen immer wichtiger geworden. In diesem Artikel werden die Erfahrungen bei der Implementierung eines Echtzeit-Empfehlungssystems mit MongoDB geteilt, in der Hoffnung, Entwicklern Inspiration und Hilfe zu bieten. 1. Einführung in MongoDB MongoDB ist eine Open-Source-NoSQL-Datenbank, die für ihre hohe Leistung, einfache Skalierbarkeit und ihr flexibles Datenmodell bekannt ist. Im Vergleich zur Biografie

    Wo wird die von mongodb erstellte Datenbank erstellt? Wo wird die von mongodb erstellte Datenbank erstellt? Apr 07, 2024 pm 05:39 PM

    Die Daten der MongoDB-Datenbank werden im angegebenen Datenverzeichnis gespeichert, das sich im lokalen Dateisystem, Netzwerkdateisystem oder Cloud-Speicher befinden kann. Der spezifische Speicherort ist wie folgt: Lokales Dateisystem: Der Standardpfad ist Linux/macOS: /data/db, Windows: C:\data\db. Netzwerkdateisystem: Der Pfad hängt vom Dateisystem ab. Cloud-Speicher: Der Pfad wird vom Cloud-Speicheranbieter bestimmt.

    Was sind die Vorteile der Mongodb-Datenbank? Was sind die Vorteile der Mongodb-Datenbank? Apr 07, 2024 pm 05:21 PM

    Die MongoDB-Datenbank ist für ihre Flexibilität, Skalierbarkeit und hohe Leistung bekannt. Zu seinen Vorteilen gehört: ein Dokumentdatenmodell, das eine flexible und unstrukturierte Speicherung von Daten ermöglicht. Horizontale Skalierbarkeit auf mehrere Server über Sharding. Abfrageflexibilität, Unterstützung komplexer Abfragen und Aggregationsvorgänge. Datenreplikation und Fehlertoleranz sorgen für Datenredundanz und hohe Verfügbarkeit. JSON-Unterstützung für einfache Integration mit Front-End-Anwendungen. Hohe Leistung für schnelle Reaktion auch bei der Verarbeitung großer Datenmengen. Open Source, anpassbar und kostenlos nutzbar.

    Was bedeutet Mongodb? Was bedeutet Mongodb? Apr 07, 2024 pm 05:57 PM

    MongoDB ist ein dokumentenorientiertes, verteiltes Datenbanksystem zur Speicherung und Verwaltung großer Mengen strukturierter und unstrukturierter Daten. Zu den Kernkonzepten gehören die Speicherung und Verteilung von Dokumenten und zu den Hauptfunktionen gehören dynamische Schemata, Indizierung, Aggregation, Kartenreduzierung und Replikation. Es wird häufig in Content-Management-Systemen, E-Commerce-Plattformen, Social-Media-Websites, IoT-Anwendungen und der Entwicklung mobiler Anwendungen eingesetzt.

    Wo sind die Mongodb-Datenbankdateien? Wo sind die Mongodb-Datenbankdateien? Apr 07, 2024 pm 05:42 PM

    Die MongoDB-Datenbankdatei befindet sich im MongoDB-Datenverzeichnis, das standardmäßig /data/db ist und .bson (Dokumentdaten), ns (Sammlungsinformationen), Journal (Schreibvorgangsdatensätze) und wiredTiger (Daten bei Verwendung von WiredTiger) enthält Speicher-Engine) und config (Datenbankkonfigurationsinformationen) und andere Dateien.

    So öffnen Sie Mongodb So öffnen Sie Mongodb Apr 07, 2024 pm 06:15 PM

    Unter Linux/macOS: Erstellen Sie das Datenverzeichnis und starten Sie den Dienst „mongod“. Unter Windows: Erstellen Sie das Datenverzeichnis und starten Sie den MongoDB-Dienst über den Service Manager. In Docker: Führen Sie den Befehl „docker run“ aus. Auf anderen Plattformen: Bitte konsultieren Sie die MongoDB-Dokumentation. Überprüfungsmethode: Führen Sie den Befehl „mongo“ aus, um eine Verbindung herzustellen und die Serverversion anzuzeigen.

    See all articles