RethinkDB的实时应用程序
在过去的几年中,对企业应用程序提出了新的要求和期望,这些要求和期望极大地增加了应用程序代码的复杂性。 用户希望动态网站提供即时数据反馈或让多个用户同时处理同一文档。 新的框架和思想也随着要求的发展而发展,以帮助应对新的应用程序功能。
关于新的分布式系统设计(如微服务)和新的客户端框架(如AngularJS)的讨论主导了开发人员的讨论。 这种统治是有道理的。 他们为解决实际问题提供了很好的解决方案。
讨论中被低估的领域之一是持久层。 RethinkDB将提供讨论的火花。
新的应用程序功能使传统的数据存储技术紧张。 对于大多数企业应用程序而言,对整个数据存储使用单个数据库管理系统(例如RDBMS)并不是可行的解决方案。
多语言持久性
作为对这一变化的认可,马丁·福勒(Martin Fowler)在2011年发表了关于多语言持久性的文章。马丁·福勒(Martin Fowler)表示:“任何体面的企业都将针对不同种类的数据采用多种不同的数据存储技术”(MF 2011)。
传统上我们首先开始使用数据库技术并试图强迫其以所需的方式操作数据,但马丁·福勒(Martin Fowler)指出,新技术使我们能够确定我们首先要如何操作数据,然后确定哪种技术可以与之匹配好。
没有一种数据库技术可以为所有数据处理需求提供适当的解决方案。 RDBMS擅长存储数据,但是它不能提供与Elasticsearch相同的可扩展搜索功能。 微服务的另一个好处是,每个微服务都提供了特定的数据需求。 较小的服务边界使查找每种服务数据需求的存储技术变得更加容易。
对实时数据馈送的需求一直在稳定增长。 物联网(IoT),并发内容编辑以及快速变化的共享数据集正在推动对数据存储技术的新需求。 客户端轮询服务器以检查信息是否更改不是可伸缩的解决方案。 轮询会使服务器不堪重负。 更具扩展性的解决方案是在数据更改时将数据“推送”到客户端。 将此功能添加到应用程序服务会增加很多代码和复杂性。
重新思考数据库
RethinkDB的亮点在于提供实时数据提要。 RethinkDB是一个JSON数据库,可将查询结果推送到应用程序。 通过在数据库中具有“推送”功能,它可以大大简化应用程序服务。 通过使用JSON Documents,它使使用任何语言的数据处理变得非常容易。 RethinkDBJavaScript客户端与Node.JS集成良好。
在此示例应用程序中,我将使用:
- RethinkDB作为数据库
- Node.JS作为后端服务器
- 服务器和客户端之间的通信通道的Socket.IO,反之亦然
- 客户端上的jQuery只是为了保持简单。
入门
首先,请按照其网站上的RethinkDB安装说明进行操作 。 您还应该阅读30秒快速入门和10分钟指南 。 Windows用户将需要从RethinkDB源进行构建,因为当前没有可用的安装程序。 Windows安装程序正在开发中。
RethinkDB带有一个Web界面(默认为http:// localhost:8080),该界面允许数据库管理和运行数据查询。
GitHub上提供了示例应用程序的源代码。 该应用程序需要NPM和NODE.JS。 请按照README.md中的说明进行操作。
./db/config.js文件设置数据库和表(如果它们不存在)并包含数据库API。 除此之外,实际上没有任何其他事情可以让RethinkDB使用默认配置在本地运行。 展望未来,我将专注于设置数据反馈接线。 RethinkDB文档很好地解释了所有内容。 :)
这是接收从RethinkDB推送的数据所需的所有代码:
-
相关文章