Realm为Nodejs发布对象数据库

  百度应用运维团队一直追求高质量的产品可用性和用户体验,追求最经济的硬件和带宽成本,追求高效的产品迭代速度,追求无人值守的场景化运维,追求帮助业务核心能力的构建。百度应用运维平台经历了基础运维平台、开放运维平台到现在的智能化运维平台这几个阶段。本次将分享百度对于运维下一幕的思考——AIOps,以及AIOps在百度具体业务场景下的实践落地。

  随着MySQL数据库使用越来越重度,流行度越来越高,同时伴随着使用场景的丰富、云化的普及和智能化的发展,对原本为单机设计的MySQL带来了很多架构上的挑战,包括:性能、成本、安全、容灾,高可用、合规、规模运营等方面,在诸多过去设计层面不被重视的问题。本演讲会从架构演化角度来看现有MySQL技术和产品的变化趋势和解决实践。

  2017年已经成为过去,在AI领域又太多里程碑值得纪念,总结2017是为了更好的迈向2018,所以AI前线年之初为各位读者奉上这样一本迷你书,涵盖了来自全球AI和大数据领域技术专家的年终总结与趋势解读,同时还有世界知名技术大厂的年终技术总结与趋势预测。

  由Ron Meyer和Ronald Meijers共同撰写的Leadership Agility一书描述了一系列领导力风格,他们可用它们来拓展领导技能和增强领导力敏捷性。读者可从中了解各种领导力风格的优点和缺点,学会根据实际的场景选择合适的领导力风格。

  参与物联网项目的人已经意识到,在客户需求与供应商提供设备间存在着很大的差距。Mikael Hakansson介绍了确保物联网成功的五个关键领域,其中包括企业所有权、团队技能、设备板载、处理变更能力以及全面测试。

  亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知。

  Realm为Node.js启动了一个对象数据库项目,使用这款数据库,移动开发者可以向客户端发送预处理的Realm对象。

  在宣布开源这款数据库时,Realm的技术团队说,使用Realm Node.js“可以像以前那样跟对象打交道,不同之处在于,在Realm里这些对象可以很容易地被持久化到磁盘上。你不需要把它们序列化成JSON,也不需要通过ORM框架来把它们保存到表里面”。

  之所以要为Realm开发一个服务器版本,是因为在Realm移动平台发布后,Realm技术团队收到了很多关于为该平台提供Node接口的呼声。

  Realm Node.js使用多版本并发控制“为多线程和多进程环境提供并发的数据库访问”,也就是说,读进程和写进程看到的数据库视图是一致的。为了做到这点,在数据写入方完成事务时,Realm使用通知系统来通知数据读取方。开发者可以使用Realm的通知API和它的通知系统在写事务完成时通知读线程。

  以下代码使用Express框架创建HTTP端点,并用Winston记录请求日志:

  接下来,日志会被保存到Realm,然后启动另一个Node进程,注册一个Realm:

  Realm的技术团队解释说,“依赖Realm的支持来收集通知,这些通知包含了插入、删除或修改对象的相关信息。例子里的监听一个针对所有错误级别日志的查询,然后把这些日志消息在控制台上打印出来”。

  在JavaScript社区,有些人对这款数据库提出质疑。Hacker News上有个用户问了一个问题:”这款数据库是否具有最新的同步功能?”Realm的产品总监Adam Fish回答说:“这个版本并不包含同步功能,不过它可以跟本地的Realm结合起来使用。我们之所以把它贡献给Node.js社区,是因为我们认为它能够提供特殊的价值,比如进程间通信”。

  最后,有人问:“它的性能怎么样?很难相信它可以跟SQL媲美。”Fish回答说,目前还没有正式地拿它跟其它运行在服务器端的SQL数据库进行过对比,不过Realm跟SQLite可以一比高下。针对Android的数据库测试基准可以在这里看到。

  我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。

相关阅读