Realm为Node.js发布对象数据库

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获取,它完全开源,可以自由使用。

本文转自d1net(转载)

时间: 2024-09-25 06:13:23

Realm为Node.js发布对象数据库的相关文章

机器学习成功检测糖尿病性视网膜病变,Realm为Node.js发布对象数据库

[12.01资讯速递]本次播报内容有:JetBrains Rider:一款全新的基于IntelliJ和ReSharper的.NET IDE:华为发布业界首个物联网建网方法论:英特尔人工智能论坛在京召开:首个基于Android 7.0的OxygenOS Beta版更新:Spark for Mac正式上架Mac App Store:交大教授训练机器看脸识罪犯:成功使用机器学习来检测糖尿病性视网膜病变:SpaceX计划构建太空互联网:人工智能vs人类智能:人机结合才是未来:Realm为Node.js发

node.js操作mongoDB数据库示例分享_node.js

连接数据库 复制代码 代码如下:  var mongo=require("mongodb");  var host="localhost";  var port=mongo.Connection.DEFAULT_PORT;  var server=new mongo.Server(host,port,{auto_reconnect:true});//创建数据库所在的服务器服务器  var db=new mongo.Db("node-mongo-exampl

【软件周刊第 31 期】Node.js 发布 v8.0.0 正式版;Qt 5.9 正式发布,长期支持版本

摘要: 软件周刊(05.28 - 06.03):本周热门软件更新 - Node.js 发布 v8.0.0 正式版:npm v5.0.0 正式发布,改进了稳定性:Qt 5.9 正式发布,长期支持版本:Dotty 0.1.2-RC1 发布,Scala 的下一代编译器:Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本 Node.js 发布 v8.0.0 正式版 新版带来了一系列重大的变化和新功能,Node.js v8 将在 2017 年 10 月进入长期支持(LTS)版本阶段.

Node.js操作mysql数据库增删改查_node.js

关于node.js操作mysql数据库的相关介绍请阅读全文吧.下文介绍的非常详细,具体内容如下所示:  安装mysql模块 npm install mysql 数据库准备 mysql server所在的机器IP地址是192.168.0.108,登录账户就用root@123456 在mysql中创建test数据库 在test数据库中创建一张users表 操作 连接数据库 var mysql=require('mysql'); var connection = mysql.createConnect

node.js连接mongoDB数据库 快速搭建自己的web服务_node.js

一.写在前面   人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二.安装node.js   接触过后端开发的人都知道,首先要安装服务.作为新手,肯定是选择最简单的可视化安装了(傻瓜式下一步,其它的方式等熟悉相关操作后自然就会了的),通过官网http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是w

Node.js自定义对象事件监听与发射

一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者设计模式来实现把事件监听器添加到对象以及移除,之前写OC那块的时候也有些观察者设计模式,在OC中也经常用到:通知中心.KVO,也很容易理解. .addListener(eventName,callback):将回调函数附加到对象的监听器中.当eventName的事件被触发时,回调函数被放置在事件队列

Node.js 之对象池

大家都知道用Node.js搭建一个简单的http服务器是多么简单的事情,打开记事本贴几句脚本,ctrl+s一下,node  server.js  一个http服务器就这样跑起来了,别看它简单,但性能丝毫不差.   var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn')

node.js应用Redis数据库

node.js下使用Redis,首先: 1.有一台安装了Redis的服务器,当然,安装在本机也行 2.本机,也就是客户端,要装node.js 3.项目要安装nodejs_redis模块 注意第 3 点,不是在本机安装就行了,而是说,要在项目中安装(引用). 方法是,DOS窗口,在项目目录下,输入 npm install redis 这样就将nodejs_redis下载一份,放到当前目录下了.看看,多了一个文件夹:node_modules\redis   编写以下代码,保存到当前目录下\hello

nodejs-node.js连接oracle数据库

问题描述 node.js连接oracle数据库 由于需要用node.js连接数据库,在GITHUB上看到Node-oracle这个东西,但是不知道怎么用,我的环境是win7,如果有谁用过请告诉我好吗 解决方案 最近正好尝试win7下 node.js 连接 oracle, 已成功连上并能执行增/删/改/查的sql. 请移步查看博文: http://my.oschina.net/zenglingfan/blog/164390 或者在 google 里搜索 <Windows7 下 Node.js 连接