【发布时间】:2018-05-18 03:57:01
【问题描述】:
我正在计划一个需要用户身份验证的 Web 应用程序,以及为存储在数据库中的用户显示数据的能力。 (还)不需要用户之间的交互,但是用户应该能够创建对象并查询他们“自己的”对象。例如,我列出了 10 个书名(10 个书对象),User A 应该能够选择一本书并创建一个新对象,称之为userNoteObject,其中包含所选书的名称和一个简短的注释(他/她写道)。
使用基本的伪代码,一本书对象将如下所示:
bookObj = {"id": 1, "name": "book name"}
用户的笔记对象会是这样的:
userNoteObject = {
"id": 1,
"book_name": "random book name",
"owner_userid": "a1b2c3d",
"note": "some random string"
}
使用 MySQL,我将创建三个表,一个用于用户,一个用于userNoteObject-s,另一个用于bookObj-s。每次用户保存笔记时,我都会将其添加到列出已保存笔记的表格中。然后我可以简单地根据用户的owner_userid查询属于X用户的笔记。这是一个非常简单的功能。
在阅读了有关可能性后,我决定使用 Firebase Auth (因为将来我可能需要 Android 和 iOS 兼容性) + Google Cloud Datastore 或 Firebase 实时数据库。但是我对 Firebase 的 Realtime Database 有点害怕,因为我从未使用过类似的数据库。我还希望能够使用 PhpMyAdmin 之类的工具手动修改记录,并且我认为 Cloud Datastore 具有类似的可视化界面。
我熟悉 JSON 处理和创建 JSON 文件,但目前基于 JSON 的数据库对我来说很陌生。因此,我正在考虑,也许其他选择会是更好的选择。我不需要实时数据库功能,这一点非常重要。我会将 X 个条目加载到包含 bookObj-s 的表中,有时还会更新它们。我假设当用户创建userNoteObject 时,它会快速保存,删除userNoteObject 后,我可以使用 Datastore 接近实时刷新页面。但是保存书籍对象的表必须能够轻松存储数百万个条目。
那么重要的事情:
- 一个 db 表应该能够轻松处理数百万条记录
- 尽可能简单的查询
- 数据库的可视化界面(如果可能的话)
- 我不需要动态游戏分数显示/保存等实时功能
其他信息:
- 我想使用 Angular.js
- 我熟悉 Python,如果它可以提供帮助的话
所以我的问题是哪个数据库更适合我的需求?目前我说的是 Datastore,但我对这些服务完全陌生,所以我并不是真的反对实时数据库,但 Datastore 看起来更合适,因为它有一个可视化界面。但是,我也不确定 Datastore 如何与 Firebase 一起使用。如果有第三个选项,比如将两者结合起来,例如用于用户保存对象的实时数据库和用于 Datastore 的静态对象,我也很想听听。我的总体目标是能够尽可能轻松快速地编写和查询数据库,并轻松地将其与 Firebase auth 一起使用。
更新:我刚刚发现了 Firebase 的 Cloud Firestore,所以如果它更有用,我可以使用它。
【问题讨论】:
-
如果您熟悉 SQL 并需要将这些知识映射到 NoSQL 数据库,请观看此视频系列。您需要学习如何以不同的方式对数据进行建模。 youtube.com/…
标签: firebase firebase-realtime-database google-cloud-datastore firebase-authentication