【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

  • 2016-11-29
  • 本文字数:1509 字

    阅读完需:约 5 分钟

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.realm
winston.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 level
winstonRealm.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

2016-11-29 18:002550
用户头像

发布了 322 篇内容, 共 134.3 次阅读, 收获喜欢 144 次。

关注

评论

发布
暂无评论
发现更多内容

1周开发上线“中医舌诊”元服务,5天吸引超2万付费用户

最新动态

优化模型之标注错误篇

矩视智能

深度学习 工业机器视觉

亮相数字科技出海峰会,火山引擎边缘云助力数字化出海“加速度”

火山引擎边缘云

CDN 加速 火山引擎 内容分发 火山引擎边缘计算

四问复合索引,让你的数据查询速度飞起

华为云开发者联盟

后端 华为云 图数据库 华为云开发者联盟 企业号9月PK榜

手把手教你用 Milvus 和 Towhee 搭建一个 AI 聊天机器人!

Zilliz

Milvus AIGC Towhee ChatGPT LLM

高效视频处理工具 Topaz Video AI 激活最新版附激活码

mac大玩家j

Mac软件 视频处理软件 视频修复工具

应用架构的演进:亚马逊的微服务实践

亚马逊云科技 (Amazon Web Services)

Serverless DevOps 微服务

一步教会你如何获取1688商品详情

Noah

API 开发

低功耗引擎Cliptrix有什么价值

Onegun

物联网 IoT

软件测试/测试开发丨利用人工智能自动找Bug

测试人

人工智能 程序员 软件测试 bug ChatGPT

腾讯云数据库再获顶会认可,论文入选VLDB2023

Geek_2d6073

专业的动画交互设计 Principle 免激活版

胖墩儿不胖y

Mac软件 交互设计工具 动画交互设计

PDF Squeezer mac(pdf文档大小压缩软件) v4.3.7永久激活版

mac

苹果mac Windows软件 PDF Squeezer 文件压缩软件

软件测试/测试开发丨探索AI与测试报告的完美结合,提升工作效率

测试人

人工智能 程序员 软件测试 ChatGPT

适合企业的跨隔离网文件摆渡的四种方式及优缺点

镭速

跨网文件交换 跨隔离网文件摆渡

Sovit2D组态设计 Web Scada烟气脱硫工艺流程

2D3D前端可视化开发

物联网 组态软件 工业控制 工业自动化 烟气脱硫

Mate 60系列搭载方舟引擎,华为游戏中心解锁飞驰游戏体验

最新动态

代码检查过程中为什么需要涉及到编译呢?

华为云开发者联盟

开发 华为云 华为云开发者联盟 代码检查 企业号9月PK榜

一文了解企业如何实现文件自动化实时同步

镭速

文件同步

微软考虑引入小型核反应堆;诺基亚推出“网络即代码”平台丨RTE开发者日报 Vol.58

声网

SQL还是NoSQL?架构师必备选型技能

树上有只程序猿

nosql sql 业务

用智能文字识别技术赋能古彝文数字化之路

dvlinker

人工智能 深度学习 合合信息 古彝文 智能文字识别技术

聚焦华为全联接大会:和鲸科技与华为携手助推交叉学科应用型数据科学人才培养

ModelWhale

华为 人才培养 数据科学 高等教育 交叉学科

等保二级测评国家收费标准是多少?统一的吗?

行云管家

网络安全 等保 等级保护 等保测评 等保二级

DEFI/DApp/DAO/IDO/LP子母币/单双币/机枪池流动性代币质押项目挖矿系统开发

l8l259l3365

龙蜥社区与您相约 2023 KubeCon

OpenAnolis小助手

开源 容器 云原生 龙蜥社区 kata

企业即时通讯解决方案,WorkPlus助力高效沟通与协作

WorkPlus

企业即时通讯

【网络安全】2023年堡垒机品牌大全

行云管家

网络安全 等保 堡垒机 等级保护

区块链数字货币交易所开发方案,交易平台搭建

V\TG【ch3nguang】

Java第一个程序——Hello,World!

小齐写代码

JDK的配置验证

小齐写代码

Realm为Node.js发布对象数据库_JavaScript_James Chesters_InfoQ精选文章