网络科技

    今日:1003| 主题:246504
收藏本版
互联网、科技极客的综合动态。

[其他] Realm为Node.js发布对象数据库

[复制链接]
心痛heartache 发表于 2016-11-30 07:59:30
54 3

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
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记录请求日志:  
  1. var express = require('express'),
  2.     util = require('util'),
  3.     winston = require('winston');
  4.     RealmWinston = require('./winston-realm').Realm;
  5. var app = express();
  6. // Use custom Winston transport: RealmWinston
  7. // Writes log data to winston.realm
  8. winston.add(RealmWinston, {});
  9. app.get('/', function (req, res) {
  10.   res.send('Hello World!');
  11.   winston.info('Handled Hello World');
  12. });
  13. app.use(function (req, res, next) {
  14.   res.status(404).send('Sorry can not find that!');
  15.   winston.error('404 Error at: ' + req.url);
  16. })
  17. app.listen(3000, function () {
  18.   console.log('Example app listening on port 3000!');
  19. });
复制代码
接下来,日志会被保存到Realm,然后启动另一个Node进程,注册一个Realm监听器:
  1. 'use strict';
  2. var Realm = require('realm');
  3. let winstonRealm = new Realm({
  4.   path: 'winston.realm'
  5. });
  6. // Register listener to print out log messages at error level
  7. winstonRealm.objects('Log').filtered('level = "error"').addListener((logs, changes) => {
  8.   changes.insertions.forEach((index) => {
  9.     let log = logs[index];
  10.     console.log(log.message);
  11.   })
  12. });
复制代码
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
友荐云推荐




上一篇:JetBrains Rider:一款全新的基于IntelliJ和ReSharper的.NET IDE
下一篇:[Possible] JavaScript exploit found against Tor in the wild
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

萱恨 发表于 2016-11-30 09:45:11
围观 围观 沙发在哪里!!!
回复 支持 反对

使用道具 举报

飞绿 发表于 6 天前
女孩从处女到女人只要一次并成功,男孩从处男变男人需要反复的磨练.
回复 支持 反对

使用道具 举报

fpwx0sOl 发表于 6 天前
fpwx0sOl的回帖高端大气上档次
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表