RethinkDB:オープンソースリアルタイムデータベース


この投稿は私のブログに掲載されましたbefore
こんにちは.
今日はrethinkdbについて話します.
これは、リアルタイムデータベースのオープンソースソリューションです.

whatsはrethinkdbです


rethinkdbは、ドキュメント指向のデータベースです.これはnoSQLデータベースシステムを使用します.

どこでそれを得るか。


あなたはそれを得るためにRethinkの公式ウェブサイトを使用することができます.
https://rethinkdb.com/
Windowsを使用している場合.このリンクを使用できます.https://rethinkdb.com/docs/install/windows/

始めましょう


私はWindowsとしてWindowsを使用します.しかし、それは様々なシステムで動作します.rethinkdbを抽出しました.exeファイル.下の場所に一つのファイルしかありません.
C:\RethinkDB
そこで、このコマンドを端末で実行します.
C:\RethinkDB\rethink

動く!

管理インターフェイス


RethinkDBは、組み込みのWebベースの管理インターフェイスが付属しています.このアドレスを使って開くことができます.http://localhost:8080/
ポート8080が他のプロセスによって使用する場合、エラーが表示されます.あなたはそれをネットワークに公開することができます.本当にそうするなら、この旗を使ってください.--bind all . それを行うと、RetImkDBはネットワーク上でアクセス可能になります.

ダッシュボード


このページでは、サーバー、テーブル、インデックスなどの統計情報が表示されます.
最初のページは常にダッシュボードになります.クラスタパフォーマンスチャートは、リアルタイムチャートです.

テーブル


このページでデータベースとテーブルを見ることができます.また、データベースやテーブルを作成したり削除したりできます.

サーバ


このページでサーバーを見ることができます.

データエクスプローラ


このページでクエリを作成できます.これは、遊び場のようです.このページを使用する必要はありません.

ログ


ここですべてのログを見ることができます.

新しいデータベースの作成


テーブルページに行きましょう.

その名前は、eコマースです.

データベース名を確認したら、「追加」ボタンをクリックします.

新しいテーブルの作成


同じページにテーブルを追加するデータベースの「表を追加」ボタンを押します.

テーブル名を確認する場合は、「表を作成」ボタンをクリックします.
それはそうでしょう

データを挿入する


私たちの最初の例はそのようになります
const r = require('rethinkdb');

const newProduct = [
  {
    productName: 'iPhone',
    productId: 1,
    amount: 1
  }
];

r.db('ecommerce').table('orders').insert(newProduct);
あなたはそのような出力になります
{
    "deleted": 0 ,
    "errors": 0 ,
    "generated_keys": [
        "3dbdfc12-8bba-442e-ad5b-f0827710a134"
    ],
    "inserted": 1 ,
    "replaced": 0 ,
    "skipped": 0 ,
    "unchanged": 0
}

データの選択


テーブル内のすべてのデータを取得する場合は、このコマンドを使用します
const r = require('rethinkdb');

r.db('ecommerce').table('orders');

フィルタデータ


データフィルタリングはここで少し異なって動作します.だから、我々はfilter メソッド.しかし、その動作はJavaScriptfilter メソッド.
const r = require('rethinkdb');

r.db('ecommerce').table('orders').filter(r.row('productName').eq('iPhone'));
出力フィルはこうです.
{
"amount": 1 ,
    "id": "3dbdfc12-8bba-442e-ad5b-f0827710a134" ,
    "productId": 1 ,
    "productName": "iPhone"
}
  • r.row 現在訪問されているドキュメントを参照します.
  • r.row('productName') フィールドの値を参照するproductName を返します.
  • The eq コマンドは2つの値が等しいならtrueを返す
  • これらはREQLコマンドです.

    主キーによるフィルタデータ


    プライマリキーでデータをフィルタリングする必要がある場合は、このREQLコマンドを使用します.
    const r = require('rethinkdb');
    
    r
     .db('ecommerce')
     .table('orders')
     .get('3dbdfc12-8bba-442e-ad5b-f0827710a134');
    

    リアルタイムフィード


    それで、我々がリアルタイムでバスケットを更新すると言いましょう.どうすればよいでしょうか.RethinkDBの公式ノードを使います.この例のためのJSドライバ.
    ここで公式ドライバを見ることができます.https://rethinkdb.com/docs/install-drivers/
    まず、空のNodeJSプロジェクトを作成し、このコマンドを使ってRethinkDBのJavaScriptドライバをインストールします.
    npm install rethinkdb
    
    indexというファイルを作成します.jsそのようなコードを書きます
    const r = require('rethinkdb');
    
    const rethinkDbConnectionObject = {
        host: 'localhost',
        port: 28015
    };
    
    r.connect(rethinkDbConnectionObject, (err, conn) => {
        if (err) {
            console.error('Error:', err);
            return;
        }
    
        console.log('RethinkDB works');
    
        r.db('ecommerce').table('orders').changes().run(conn, (err, cursor) => {
            if(err) {
                console.error('Error:', err);
                return;
            }
    
            cursor.each((err, row) => {
                if(err) {
                    console.error('Error:', err);
                    return;
                }
    
                console.log(row)
            });
        });
    });
    
    コマンドを実行します.
    node index.js
    
    さて、データを挿入するために遊び場に戻りましょう.
    const newProduct = [
      {
        productName: 'Vestel',
        productId: 5111,
        amount: 2
      }
    ];
    
    r.db('ecommerce').table('orders').insert(newProduct);
    
    我々のクライアントサイドプロジェクトは、我々が現在リアルタイムに挿入した新しいデータを得ました.我々が以前に始めたスクリプトは、この出力を示します
    RethinkDB works
    {
      new_val: {
        amount: 2,
        id: '4d79cf49-e661-49c6-a74a-21d7502bd85b',
        productId: 5111,
        productName: 'Vestel'
      },
      old_val: null
    }
    
    すべての注文の量を更新したいとしましょう
    r.db('ecommerce').table('orders').update({ amount: 1 });
    
    そのような出力が見えます
    {
      new_val: {
        amount: 1,
        id: '4d79cf49-e661-49c6-a74a-21d7502bd85b',
        productId: 5111,
        productName: 'Vestel'
      },
      old_val: {
        amount: 2,
        id: '4d79cf49-e661-49c6-a74a-21d7502bd85b',
        productId: 5111,
        productName: 'Vestel'
      }
    }
    {
      new_val: {
        amount: 1,
        id: 'b126f221-f7fd-43e8-b0b8-1ff472a08981',
        productId: 51,
        productName: 'Xaomi'
      },
      old_val: {
        amount: 6,
        id: 'b126f221-f7fd-43e8-b0b8-1ff472a08981',
        productId: 51,
        productName: 'Xaomi'
      }
    }
    {
      new_val: {
        amount: 1,
        id: '69507d9a-2680-478f-a68b-85fe5035744c',
        productId: 3,
        productName: 'Huawei'
      },
      old_val: {
        amount: 2,
        id: '69507d9a-2680-478f-a68b-85fe5035744c',
        productId: 3,
        productName: 'Huawei'
      }
    }
    {
      new_val: {
        amount: 1,
        id: 'acbac94b-2947-448c-8a43-02bb0b2fe9b8',
        productId: 2,
        productName: 'Samsung'
      },
      old_val: {
        amount: 5,
        id: 'acbac94b-2947-448c-8a43-02bb0b2fe9b8',
        productId: 2,
        productName: 'Samsung'
      }
    }
    
    期待通りに働きました.

    結論

  • ソケットを使いたくない場合.ioは、rethinkdbを使用できます.
  • それは、基本的なプロジェクトのために本当に断食です.私は大きなプロジェクトのためにそれを試みる機会がなかった.
  • それは多くのプログラミング言語の良いドライバーを持って
  • reqlを簡単に理解できます.Javascript自体だから
  • 以上です.読書ありがとう.

    資源

  • Ten-minute guide with RethinkDB and JavaScript
  • RethinkDB nedir? (in Turkish)