领域平台

当我们首先开始谈论Realm Platform时,我们需要关注Realm数据库提供的功能,realm是我们可以在本地存储和获取数据的地方,当记录被更改并需要手动更新到服务器时,这是一项繁琐的工作。
由于每个人都需要实时数据,因此Realm Platform进入解决方案,因为即使一秒钟的延迟数据也被标记为过时,Realm Platform是实时同步的解决方案,并提供身份验证和更多功能。

让我们开始吧…

Realm平台是基于noSQL的服务器和客户端组件的组合,这些组件通过快速高效的同步协议进行连接,以启用实时的,已连接的应用程序,响应迅速且性能与网络状态无关的服务。

领域平台具有两个主要组件。

  1. 领域数据库
  2. 领域对象服务器

这两个组件协同工作以自动同步数据。

领域数据库

Realm数据库嵌入在客户端上,是一个功能齐全的,面向对象的跨平台数据库,可将数据持久存储在设备上

Realm数据库是轻量级且高性能的,能够处理非常大的数据负载并在几分之一秒内运行查询。 它基于共享的活动对象,无需编写网络,序列化或对象关系映射代码,即可与Realm Object Server无缝无缝地实时同步数据。

领域对象服务器

Realm的统一数据模型扩展到Realm对象服务器,该服务器在设备上镜像Realm数据库。 它充当移动应用程序体系结构中的中间件组件,并管理数据同步,事件处理以及与旧系统的集成。 Realm Object Server可以实时高效地同时在许多设备上同步数据,并自动解决冲突。

首先,我们需要安装Realm Object Server

要托管Realm对象服务器,这些是受支持的操作系统

  • macOS 10以上
  • Ubuntu 16.04以上
  • RHEL 6+
  • CentOS 7以上

端口要求

领域对象服务器利用TCP上的Web套接字连接来同步数据。 这意味着您将需要确保防火墙允许通过ROS配置为使用的任何端口进行TCP通信。 默认情况下,这是用于HTTP流量的端口9080

快速开始安装

  curl-s https://raw.githubusercontent.com/realm/realm-object-server/master/install.sh | bash 

手动安装

  // Ubuntu 16.04(64位;不支持32位) 
  //建议您以普通用户身份安装服务器。 
  sudoapt获取更新 
  sudoapt-get install build-essential libssl-dev 
  sudoapt-get安装python 
  curl-o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash 
  //强制当前会话知道更改或注销并重新登录 
 来源〜/ .profile 
  nvm安装--lts 
  npm install-g node-gyp 
  npm install-g领域对象服务器 

启动服务器

首先通过执行以下命令行工具创建新的ros实例

  ros init我的应用 

这将为您创建一个基于Typescript的Node项目。 稍后,您可以探索对其进行自定义,但是现在,只需通过以下方式使用默认值启动服务器即可:

从项目文件夹的内部,您需要打开索引文件,该文件可以在src/index.ts找到。您需要粘贴功能标记,如下所示:

  1. 在此处添加您的功能令牌

您需要注册Realm对象服务器后,将在电子邮件ID上获得Feature令牌

 从'realm-object-server'导入{BasicServer,FileConsoleLogger} 
 从“路径”导入*作为路径 
  constserver =新的BasicServer() 
  server.start({ 
  // .. 
  featureToken:'', 
  // .... 
  }) 

2.启动服务器

  cd my-app / 
  npm开始 

升级开发中的服务器

  #在@之后指定特定版本 
  npm install realm-object-server @ latest 

什么是境界?

领域是领域移动数据库容器的实例。 领域可以是本地的,同步的内存中的。 实际上,您的应用程序可以以任何相同方式与任何Realm一起使用。 内存领域没有持久性机制,只能用于临时存储。 同步的Realm使用Realm Object Server透明地将其内容与其他设备同步。 当您的应用程序继续像本地文件一样继续使用同步的Realm时,该Realm中的数据可能会被具有对该Realm写入权限的任何设备更新-因此,该Realm可能代表聊天应用程序中的一个频道,例如,由该频道中的任何用户更新。 或者,它可能是购物车,只能由您拥有的设备访问。

领域对象服务器提供身份验证

认证方式

领域对象服务器中的中心对象是领域用户( SyncUser )。 领域用户标识应用程序最终用户,并与服务器的访问控制功能一起使用,以安全地控制同步哪些数据。

Realm平台提供了内置的身份验证提供程序,该身份验证提供程序支持用户名/密码昵称匿名登录进行开发。

用户名/密码认证

为了协商用户名/密码认证,必须在服务器中定义一个有效的用户名/密码对,或者如果要注册用户,请将注册标志设置为true。

服务器网址

要进行身份验证,您必须提供服务器URL。 这是服务器的基本URL,例如https://myinstance.cloud.realm.iohttp://127.0.0.1:9080

 让auth_url = URL(string:“ https://myinstance.cloud.realm.io”)! 
  let creds = SyncCredentials.usernamePassword(用户名:“用户名”,密码:“密码”,注册:false) 
SyncUser.logIn(with:creds,server:auth_url,onCompletion:{[weakself](user,err)in
 如果让_ =用户{ 
  //用户已登录 
  } if let error = err { 
  fatalError(error.localizedDescription) 
}
}

更改密码

  let newPassword =“ ” 
user.changePassword(newPassword){(错误)在
如果让错误=错误{
// 有些不对劲
}
//否则,密码已成功更改。
}

管理员用户可以更改其他用户密码

  let newPassword =“箭鱼” 
adminUser.changePassword(newPassword,forUserID:“ ”){(错误)在
如果让错误=错误{
// 有些不对劲
}
//否则,密码已成功更改。
}

现在该使用领域对象服务器了

打开一个领域

打开领域时,您向构造函数传递了一个配置对象 ,该对象定义了如何访问它。 配置对象指定Realm数据库的位置:

  • 设备本地文件系统上的路径
  • 具有适当访问凭证(用户/密码,认证令牌)的Realm Object Server的URL
  • 内存领域的标识符
  • 同步类型的可选标识符(如果未指定,Realm将使用基于查询的同步)

因此,打开一个同步的领域可能看起来像这样。 在此示例中,我们假设领域被命名为"settings"

  //创建配置 
让syncServerURL = URL(字符串:“ realms://myinstance.cloud.realm.io/~/Contacts”)!
让config = user.configuration(realmURL:syncServerURL);

//打开远程领域
让境界=尝试! 领域(配置:配置)
//对这个领域所做的任何更改都将在所有设备上同步!

对于安全服务器领域,端点是从领域开始的;对于非安全领域,端点是从领域开始的

每个用户都可以在领域对象服务器中拥有自己的数据库,无论用户指定哪个领域端点,都基于该领域对象服务器对其进行配置。

  //针对特定的用户服务器端点 
领域:// server_end_point /〜/联系人
//`〜`->这指定登录的用户唯一标识符
//创建gLobal领域端点
realms:// server_end_point / Contacts //非管理员用户无法创建全球范围

领域模型

  @objc成员 
类联系人:对象{
动态var名称:字符串?
动态var phoneNumber:字符串?
}
  func insertNewContact(){ 
保护让用户= SyncUser.current else {return}
  let config = user.configuration(realmURL:“ realm:// localhost /〜/ Contacts”,fullSynchronization:true) 
  //使用现有的配置对象打开Realm 
让境界=尝试! 领域(配置:配置)
  //将对象插入领域 
 尝试!  realm.write { 
让contact = Contact()
contact.name =“ abc”
contact.phoneNumber =“ 123456789”
realm.add(联系)
}
  //获取所有Contact对象 
让contactsList = realm.objects(Contact.self)
  } 

现在已将数据插入本地,现在该检查数据是否已同步到服务器了

查看Realm数据已同步

步骤1:安装Realm Studio工具以查看数据

步骤2:通过提供服务器端点和凭据连接到服务器

步骤3:现在,用户可以查看其数据库端点和所有Realm Object服务器用户。

步骤4:选择用户数据库,然后您可以看到数据已同步到服务器。

现在,您可以从服务器更改数据,它将立即反映在应用程序中。

具有同步功能和授权以及Realm Sync Workers的Realm平台是一个有状态的节点应用程序,用于存储领域,提供数据以同步客户端以及合并更改。