Tag: Firestore

Firestoreで作るオフライン动作対応のiOSアプリ

2017年10月3日に,GoogleからFirebase实时数据库の后継にあたるCloud Firestoreが発表されました。 Cloud Firestoreのご绍介:アプリ用の新しいドキュメントデータベース baseの记事はプロダクトマネージャー,Alex Dufetel Fire Firebase博客の记事“ Cloud Firestore简介:我们针对…的新文档数据库” developer-jp.googleblog.com Cloud Firestore | 火力基地 使用我们灵活的,可扩展的NoSQL云数据库来存储和同步数据,以进行客户端和服务器端开发。 firebase.google.com 今,実际に开発中の未リリースのiOSアプリに导入していて色々知见が贮がきていてのですが,本记事では特にFirestoreのオフライン动作サポート周りについて焦点を当てていきます。 2017/12/01时点で,Firestoreはまだベータ版なのでプロダクション利用は慎重に検讨することをおすすめします。 初步き:Firestoreをざっと绍介 本主题の前にFirestoreをざっと绍介します。GoogleDevelopersGoogleログによると次のように绍介されています。 世界规模でアプリデータを简タを格纳して同时できるようにデザインされており,ベータ版として利用できるようになりました。 Firebaseサービス配下には元々似たものとして实时数据库があります(というより,Googleに2014年に买收される前はこれこそがFirebaseでした)。数据库に比べて,主に次の点で优れています。 保存できるデータ型が増えた クエリ・ソートの强化 スケーラビリティが青天井に 自动マルチリージョン わりにクション构造がネストしていても重くならない(代わりに适宜明示的に取得处理が必要) コストは概ね安い(ただし,料金体系ががらりと変わっているため使い方次第で逆転もあり得る) タータ构造が,实时数据库ではJSONツリーでしたが,Firestoreではドキュメ指向指向データベース(Datastoreをラップしたもの)に変わったことが大きく影响しています。で强化・再设计した感じで,とても良い买收后の流れだったと感心しています(・‿・`) (Facebookに买收されたあと消灭したParseとは対照的。) 次の记事・资料を见るとイメージが涌くかと思います。 Cloud Firestoreは进化したFirebase实时数据库— Qiita Firebase RTDB + GCP数据存储= Firestoreについて第一印象— Qiita Firebaseの新しいデータベース— Slideshare 实时数据库はちょくちょく辛いところがあったようですが,Firestoreは痒いところに届くようになって,通常のモバイルアプリの多くのユースケースは何とかなると感じています(ただしデータ构造设计は重要)。 ,より包括的・実践的な记事は后日こちらに书きました。 Cloud Firestoreの勘所所ート1 Cloud Firestoreの概要 medium.com Cloud Firestoreで,従来のローカルデータベースタベ现していたものと同等のオフライン动作サポート可能か? して本题の,Firestoreで作るオフライン动作対応のiOSアプリについてです。 仆が今开発中のアプリでは,そういったお驯染みのローカルデータベースを使わずに,データ周りはFirestoreにすべて頼るようにしました。この际,最も気になったのは,本当にFirestoreのオフライン动作サポートで,従来のローカルルータベスと同等のユーザー体験を担保できるかという点でした。 オフライン动作が具体的に指すもの […]

Realm.io与Google Firebase的比较-安全性的观点

Realm.io与Google Firebase的比较-安全性的观点 本文是一系列简短文章之一,在这些文章中,我试图将Google Firebase产品与Realm Cloud平台的功能进行比较。 这两种产品都为移动应用程序提供了实时数据库功能。 两者都称为后端即服务(mBAAS)。 本文重点介绍Firebase和Realm Cloud之间的安全模型差异。 有关Realm.io的更多信息,请参见: 领域:在短时间内创建响应式移动应用程序 Realm是一个移动平台,是SQLite和Core Data的替代品。 建立离线优先,反应灵敏的移动体验… 境界 有关Google Firebase的更多信息,请访问: 火力基地 Firebase是Google的移动平台,可帮助您快速开发高质量的应用程序并发展业务。 firebase.google.com 在过去的七年中,我一直是iOS开发人员,自2015年以来,我广泛使用Firebase和Realm对象数据库。在加州圣塔莫尼卡市Needly,Inc担任移动架构师的同时,我帮助开发了Troop Team产品和WorkCoin市场产品。 这两种产品都依靠Firebase作为后端,并使用Realm作为本地对象数据库。 今天,我正在管理一家名为Cosync,Inc的新创公司,该公司正在围绕Realm Cloud平台开发协作平台。 Realm.io是一家有趣的公司。 它由Alexander Stigsen和Bjarne Christiansen于2011年成立,旨在为iOS和Android提供移动数据库。 该公司获得了风险投资,并在2015年成功筹集了2,000万美元。早期,基于云的移动应用程序需要缓存大量数据,而不必每次需要时都访问网络。 即使Apple和Google都在其开发框架中提供了本地数据库, 通过诸如Core Data之类的模块,Realm是解决此问题的第一个真正的跨平台解决方案。 此外,Realm已免费提供给开发社区,并且很容易在Objective C,Swift或Java中启动和运行,具体取决于移动设备。 我大约三年前开始使用它。 如今,全球Realm安装量已超过20亿,Realm开发人员超过10万。 在雷达下谈论! 他们只有33名员工。 Realm公司发布了名为Realm Platform的数据库的付费服务器版本,该版本在2017年是一个完整的后端即服务解决方案。它们的托管解决方案非常经济实惠,三个Realm实例的起价约为每月30美元-Realm实例是可以分配给单个移动应用程序的完整数据库。 在大多数情况下,这三个实例对应于移动应用程序的开发,登台和生产数据库。 定价基于已安装的客户端实例和带宽使用情况的组合。 像Google的Firebase一样,价格随使用情况而定。 但是与Firebase不同,客户可以根据需要选择将Realm Platform托管在自己的服务器上。 这非常强大,因为它可以满足许多对安全敏感的客户的需要,因为这些数据是由Google托管的,因此无法使用Firebase。 但是,更重要的是,大多数将Firebase用作后端实时数据库的应用程序开发人员也将Realm用作本地数据库来缓存网络数据。 这通常需要在Firebase和Realm之间在两个方向上都有些复杂的翻译层,每个开发人员都必须编写该翻译层。 如果开发人员使用Realm平台而不是Firebase,那么这个额外的翻译层(我可以证明是许多错误的来源)就消失了。 在安全性方面,Firebase和Realm均提供了锁定数据的机制。 这两种产品均在服务器端提供NoSQL实时数据库,以服务登录到各种客户端设备的用户。 简而言之,问题如下。 实时数据库由符合模式的表的集合组成,每个表包含许多属性,这些属性描述属于该表的对象的类型。 数据库实例包含许多注册用户,其中一些可以在客户端设备上登录,这些用户访问表中的对象。 […]

Swift和Firestore:查询具有今天日期的字段

我天真地尝试执行以下操作。 让ref = Firestore.firestore()。collection(“ posts”) 让今天= Date() 让queryRef = ref.whereField(“ created”,isEqualTo:今天) 不幸的是,它没有返回任何结果,我想它正在为我们的日期字段寻找完全匹配的结果。 注意:希望实际上是这样。我并没有过多地关注它是否应该返回非空结果。 😅 经过几次Google搜索,我想到了这个: 让日历= Calendar.current 让组件= calendar.dateComponents([。year,.month,.day],来自:Date()) 让开始= calendar.date(来自:组件)! let end = calendar.date(byAdding:.day,value:1,to:start)!let queryRef = ref .whereField(“ created”,isGreaterThan:start) .whereField(“ created”,isLessThan:end) 现在,我得到了预期的结果。 ☺️ 我们可以快速将其重构为CollectionReference上的方法…… 然后在呼叫站点: 让queryRef = queryRef.whereField(“ created”,isDateInToday:date)