查看原文
其他

您见识过实时数据库吗?

2016-08-10 DevRel 谷歌开发者


https://v.qq.com/txp/iframe/player.html?vid=e031884k3ar&width=500&height=375&auto=0


历史回顾

实时数据库是我们在四年多以前为 Firebase 引入的第一项功能。由云托管的 JSON 数据库在当时还算新鲜事物,因此,该功能立即备受瞩目。然而,真正让 Firebase 数据库与众不同的还是其提供单一、易用的 API,能够在不同的客户端之间即时同步数据。 


实时数据库采用统一的编程接口,极大地简化了应用开发工作。借此,可以轻松构建实时协作应用。

 什么是实时数据库?
实时数据库实际上只是您实时管理的一个大型 JSON 对象。这意味着,它实际上只是一个树形结构的值集合。




这样可以实现简单而灵活的数据建模。此数据库无架构,这意味着,您不必早早地受到某个固定结构的约束。不过,如果您担心数据验证问题,则可使用实时数据库附带提供的一种规则语言,其规则由服务器负责执行,可用于验证对数据库的每次写入操作的数据结构。 
Firebase 数据库真正的独特之处在于其实时同步。大多数传统数据库采用请求/响应的工作模式。您编写一个查询,然后要求数据库为您提供该查询的结果。如果您再次需要该结果,或者希望检查该结果的更新,您需要再次执行该查询。 
我们的数据库则与此不同。我们的数据库在数据发生变化时会主动告诉您。您对我们的数据库下达指令:如果树中此位置的数据发生变化,请通知我。这样可以轻松地监控更改并使这些更改在所有用户之间保持同步。
 
 实时事件


Firebase 数据库依靠同一个 API 为您的应用提供数据的当前值以及对该数据的任何更新。 


iOS

refHandle = postRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in  let postDict = snapshot.value as! [String : AnyObject]  // …
})


网站

firebase.database().ref('posts/' + postId).on('value', function(snapshot) {    var post = snapshot.val();    // …
});


Android

mPostReference.addValueEventListener(new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot dataSnapshot) {        // Get Post object and use the values to update the UI        Post post = dataSnapshot.getValue(Post.class);        // …    }    @Override    public void onCancelled(DatabaseError databaseError) {        // Getting Post failed, log a message        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());        // …    }
});


随后,您的应用会在其用户界面中显示该数据并允许用户处理该数据。就是这么简单。



 当您离线时将会如何

是否遇到过在您的网络连接断开时所使用的应用无法响应的情况?大多数开发者都希望,无论网络状况如何,其应用都能保持工作。


有鉴于此,Firebase 数据库为应用中显示的所有数据建立了一个内部缓存。当网络连接临时断开时,应用会通过该缓存继续工作。


当连接断开时,Firebase 数据客户端会保留一个本地写入操作队列。您的应用会继续工作,能够继续响应请求,所有这一切都不必编写任何额外的代码。 


Firebase 平台的强大之处在于其集成了我们的全部功能。我们仍在不断增加新的集成,这里只是介绍了您已经可以使用的几个集成示例。


让您的用户登录您的应用,然后让他们按照其身份安全地访问数据。将用户文件存储在 Firebase 存储中,然后使用实时数据库将文件状态和可用性同步到该应用的所有其他用户。使用 Firebase Analytics 跟踪哪些文件最受欢迎并邀请其他用户协作处理那些文件。


有了 Firebase,几乎一切皆有可能,构建应用也变得前所未有的简单。


8.9 Google Doodle:2016 年 Doodle 水果游戏 - 第 5 天


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存