RejectDB: 실시간 데이터베이스 오픈

이 글은 나의 블로그에 발표되었다before
안녕하세요.
오늘 RejectDB에 대해 논의하겠습니다.
이것은 실시간 데이터베이스의 소스 오픈 해결 방안이다.

이게 뭐야?


RejectDB는 NoSQL 기반 문서용 데이터베이스입니다.이것은 우리가 NoSQL 데이터베이스 시스템을 사용할 것이라는 것을 의미한다.

어디 가서 사요?


너는 Rethink의 공식 사이트를 이용해서 그것을 얻을 수 있다.
https://rethinkdb.com/
Windows를 사용하는 경우이 링크를 사용할 수 있습니다: https://rethinkdb.com/docs/install/windows/

시작합시다.


Windows를 운영 체제로 사용할 것입니다.그러나 그것은 각종 시스템에 적용된다.데이터베이스를 추출했습니다.exe 파일.아래 위치에는 파일이 하나밖에 없습니다.
C:\RethinkDB
따라서 터미널에서 이 명령을 실행합니다.
C:\RethinkDB\rethink

얘가 작용했어!

관리 인터페이스


RejectDB는 내장된 웹 기반 관리 인터페이스를 제공합니다.다음 주소를 사용하여 열 수 있습니다. http://localhost:8080/
포트 8080이 다른 프로세스에서 사용되는 경우 오류가 표시됩니다.인터넷에 공개할 수 있습니다.만약 당신이 정말 이렇게 한다면 이 표지판을 사용하세요: --bind all.이렇게 하면 RejectDB는 네트워크에서 액세스할 수 있습니다.

계기판


이 페이지에서 서버, 테이블, 인덱스 등에 대한 통계를 볼 수 있습니다.
첫 페이지는 항상 대시보드입니다.집단 성능 그래프는 실시간 그래프다.

테이블


이 페이지에서 데이터베이스와 테이블을 볼 수 있습니다.또한 데이터베이스나 테이블을 만들거나 삭제할 수 있습니다.

서버


이 페이지에서 서버를 볼 수 있습니다.

데이터 자원 관리자


이 페이지에서 질의를 작성할 수 있습니다.이것은 더욱 놀이터 같다.이 페이지를 사용할 필요가 없습니다.

로그


너는 이곳에서 모든 일지를 볼 수 있다.

새 데이터베이스 만들기


테이블 페이지로 돌아가서 데이터베이스 추가 단추를 누르십시오.

그것의 이름은 전자상거래가 될 것이다.

데이터베이스 이름을 확인하는 경우 추가 버튼을 클릭합니다.

새 테이블 만들기


데이터베이스의 테이블 추가 버튼을 눌러 같은 페이지에 테이블을 추가합니다.

테이블 이름을 확인하려면 [테이블 만들기] 버튼을 클릭합니다.
그래야 한다.

데이터 삽입


우리의 첫 번째 예는 바로 이렇다.
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 방법을 사용할 것이다.그러나 그 동작은 JavaScript의 filter 방법과 다릅니다.
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 값을 나타냅니다.
  • 만약 두 값이 같다면
  • , eq 명령은true로 돌아간다
    ReQL 명령입니다.

    기본 키를 눌러 데이터 필터링


    키를 눌러 데이터를 필터링하려면 이 ReQL 명령을 사용합니다.
    const r = require('rethinkdb');
    
    r
     .db('ecommerce')
     .table('orders')
     .get('3dbdfc12-8bba-442e-ad5b-f0827710a134');
    

    실시간 개요


    만약 우리가 실시간으로 바구니를 업데이트할 것이라고 가정하자.우리 어떡하지?RejectDB의 공식 노드를 사용합니다.JS 드라이버.
    당신은 이곳에서 공식 운전사를 볼 수 있습니다: https://rethinkdb.com/docs/install-drivers/
    우선, 빈 NodeJS 프로젝트를 만들고 이 명령을 사용하여 RejectDB의 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, REJECTDB를 사용할 수 있습니다.
  • 그것은 기초 항목에 있어서 정말 빠르다.나는 큰 프로젝트에서 그것을 시도할 기회가 없다.
  • 프로그래밍 언어가 많은 좋은 드라이버
  • ReQL을 쉽게 이해할 수 있습니다.자바스크립트 자체이기 때문이다
  • 그게 다야.읽어주셔서 감사합니다.

    리소스

  • Ten-minute guide with RethinkDB and JavaScript
  • RethinkDB nedir? (in Turkish)
  • 좋은 웹페이지 즐겨찾기