精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:大數據數據庫 → 正文

Realm為Node.js發布對象數據庫

責任編輯:editor005 作者:James Chesters |來源:企業網D1Net  2016-11-30 11:59:44 本文摘自:INFOQ

Realm為Node.js啟動了一個對象數據庫項目,使用這款數據庫,移動開發者可以向客戶端發送預處理的Realm對象。

在宣布開源這款數據庫時,Realm的技術團隊說,使用Realm Node.js“可以像以前那樣跟對象打交道,不同之處在于,在Realm里這些對象可以很容易地被持久化到磁盤上。你不需要把它們序列化成JSON,也不需要通過ORM框架來把它們保存到表里面”。

Realm項目在兩年前啟動,目標是作為SQLite或Core Data的替代方案,可以在iOS和Android平臺上使用,同時支持React Native。Realm Node.js是第一個Node.js對象數據庫。

之所以要為Realm開發一個服務器版本,是因為在Realm移動平臺發布后,Realm技術團隊收到了很多關于為該平臺提供Node接口的呼聲。

Realm Node.js使用多版本并發控制“為多線程和多進程環境提供并發的數據庫訪問”,也就是說,讀進程和寫進程看到的數據庫視圖是一致的。為了做到這點,在數據寫入方完成事務時,Realm使用通知系統來通知數據讀取方。開發者可以使用Realm的通知API和它的通知系統在寫事務完成時通知讀線程。

以下代碼使用Express框架創建HTTP端點,并用Winston記錄請求日志:

var express = require('express'), util = require('util'), winston = require('winston'); RealmWinston = require('./winston-realm').Realm;var app = express();// Use custom Winston transport: RealmWinston// Writes log data to winston.realmwinston.add(RealmWinston, {});app.get('/', function (req, res) { res.send('Hello World!'); winston.info('Handled Hello World');});app.use(function (req, res, next) { res.status(404).send('Sorry can not find that!'); winston.error('404 Error at: ' + req.url);})app.listen(3000, function { console.log('Example app listening on port 3000!');});

接下來,日志會被保存到Realm,然后啟動另一個Node進程,注冊一個Realm監聽器:

'use strict';var Realm = require('realm');let winstonRealm = new Realm({ path: 'winston.realm'});// Register listener to print out log messages at error levelwinstonRealm.objects('Log').filtered('level = "error"').addListener((logs, changes) => { changes.insertions.forEach((index) => { let log = logs[index]; console.log(log.message); })});

Realm的技術團隊解釋說,“監聽器依賴Realm的支持來收集通知,這些通知包含了插入、刪除或修改對象的相關信息。例子里的監聽器監聽一個針對所有錯誤級別日志的查詢,然后把這些日志消息在控制臺上打印出來”。

在JavaScript社區,有些人對這款數據庫提出質疑。Hacker News上有個用戶問了一個問題:”這款數據庫是否具有最新的同步功能?”Realm的產品總監Adam Fish回答說:“這個版本并不包含同步功能,不過它可以跟本地的Realm結合起來使用。我們之所以把它貢獻給Node.js社區,是因為我們認為它能夠提供特殊的價值,比如進程間通信”。

Fish補充說,“很快”會有跟同步功能相關的更新放出。

當被問及Realm Node.js是Realm的純JavaScript實現還是對Realm進程的JavaScript包裝時,Fish解釋說,它仍然使用Realm Core,并通過JavaScript API暴露接口。

最后,有人問:“它的性能怎么樣?很難相信它可以跟SQL媲美。”Fish回答說,目前還沒有正式地拿它跟其它運行在服務器端的SQL數據庫進行過對比,不過Realm跟SQLite可以一比高下。針對Android的數據庫測試基準可以在這里看到。

Realm Node.js可以從NPM獲取,它完全開源,可以自由使用。

查看英文原文:Realm Releases Object Database for Node.js

關鍵字:NodeJSforeach

本文摘自:INFOQ

x Realm為Node.js發布對象數據庫 掃一掃
分享本文到朋友圈
當前位置:大數據數據庫 → 正文

Realm為Node.js發布對象數據庫

責任編輯:editor005 作者:James Chesters |來源:企業網D1Net  2016-11-30 11:59:44 本文摘自:INFOQ

Realm為Node.js啟動了一個對象數據庫項目,使用這款數據庫,移動開發者可以向客戶端發送預處理的Realm對象。

在宣布開源這款數據庫時,Realm的技術團隊說,使用Realm Node.js“可以像以前那樣跟對象打交道,不同之處在于,在Realm里這些對象可以很容易地被持久化到磁盤上。你不需要把它們序列化成JSON,也不需要通過ORM框架來把它們保存到表里面”。

Realm項目在兩年前啟動,目標是作為SQLite或Core Data的替代方案,可以在iOS和Android平臺上使用,同時支持React Native。Realm Node.js是第一個Node.js對象數據庫。

之所以要為Realm開發一個服務器版本,是因為在Realm移動平臺發布后,Realm技術團隊收到了很多關于為該平臺提供Node接口的呼聲。

Realm Node.js使用多版本并發控制“為多線程和多進程環境提供并發的數據庫訪問”,也就是說,讀進程和寫進程看到的數據庫視圖是一致的。為了做到這點,在數據寫入方完成事務時,Realm使用通知系統來通知數據讀取方。開發者可以使用Realm的通知API和它的通知系統在寫事務完成時通知讀線程。

以下代碼使用Express框架創建HTTP端點,并用Winston記錄請求日志:

var express = require('express'), util = require('util'), winston = require('winston'); RealmWinston = require('./winston-realm').Realm;var app = express();// Use custom Winston transport: RealmWinston// Writes log data to winston.realmwinston.add(RealmWinston, {});app.get('/', function (req, res) { res.send('Hello World!'); winston.info('Handled Hello World');});app.use(function (req, res, next) { res.status(404).send('Sorry can not find that!'); winston.error('404 Error at: ' + req.url);})app.listen(3000, function { console.log('Example app listening on port 3000!');});

接下來,日志會被保存到Realm,然后啟動另一個Node進程,注冊一個Realm監聽器:

'use strict';var Realm = require('realm');let winstonRealm = new Realm({ path: 'winston.realm'});// Register listener to print out log messages at error levelwinstonRealm.objects('Log').filtered('level = "error"').addListener((logs, changes) => { changes.insertions.forEach((index) => { let log = logs[index]; console.log(log.message); })});

Realm的技術團隊解釋說,“監聽器依賴Realm的支持來收集通知,這些通知包含了插入、刪除或修改對象的相關信息。例子里的監聽器監聽一個針對所有錯誤級別日志的查詢,然后把這些日志消息在控制臺上打印出來”。

在JavaScript社區,有些人對這款數據庫提出質疑。Hacker News上有個用戶問了一個問題:”這款數據庫是否具有最新的同步功能?”Realm的產品總監Adam Fish回答說:“這個版本并不包含同步功能,不過它可以跟本地的Realm結合起來使用。我們之所以把它貢獻給Node.js社區,是因為我們認為它能夠提供特殊的價值,比如進程間通信”。

Fish補充說,“很快”會有跟同步功能相關的更新放出。

當被問及Realm Node.js是Realm的純JavaScript實現還是對Realm進程的JavaScript包裝時,Fish解釋說,它仍然使用Realm Core,并通過JavaScript API暴露接口。

最后,有人問:“它的性能怎么樣?很難相信它可以跟SQL媲美。”Fish回答說,目前還沒有正式地拿它跟其它運行在服務器端的SQL數據庫進行過對比,不過Realm跟SQLite可以一比高下。針對Android的數據庫測試基準可以在這里看到。

Realm Node.js可以從NPM獲取,它完全開源,可以自由使用。

查看英文原文:Realm Releases Object Database for Node.js

關鍵字:NodeJSforeach

本文摘自:INFOQ

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 昭苏县| 南部县| 富裕县| 韶山市| 凤庆县| 游戏| 囊谦县| 搜索| 屏东县| 涞水县| 安阳县| 平江县| 县级市| 左贡县| 娱乐| 富民县| 奉节县| 益阳市| 石阡县| 溧水县| 乐业县| 延庆县| 鹤壁市| 卢湾区| 台南市| 将乐县| 大理市| 灯塔市| 大名县| 育儿| 公主岭市| 来凤县| 武陟县| 石狮市| 延庆县| 壤塘县| 金山区| 阿图什市| 怀化市| 泾川县| 南靖县|