如果您为项目切换到 Cloud Console(而不是 Firebase 控制台),则可以使用 Cloud Shell 作为起点。
在 Cloud Shell 环境中,您会发现 node 和 python 等工具已安装并可用。使用您喜欢的任何一个,您都可以使用Server Client libraries 编写脚本。
例如在 Python 中:
from google.cloud import firestore
import random
MAX_DOCUMENTS = 100
SAMPLE_COLLECTION_ID = u'users'
SAMPLE_COLORS = [u'Blue', u'Red', u'Green', u'Yellow', u'White', u'Black']
# Project ID is determined by the GCLOUD_PROJECT environment variable
db = firestore.Client()
collection_ref = db.collection(SAMPLE_COLLECTION_ID)
for x in range(0, MAX_DOCUMENTS - 1):
collection_ref.add({
u'primary': random.choice(SAMPLE_COLORS),
u'secondary': random.choice(SAMPLE_COLORS),
u'trim': random.choice(SAMPLE_COLORS),
u'accent': random.choice(SAMPLE_COLORS)
})
虽然这是使用静态数据集启动和运行的最简单方法,但它的存在有点不尽如人意。也就是说,使用 Firestore,需要实时动态数据来执行其功能,例如实时查询。对于此任务,使用Cloud Scheduler & Cloud Functions 是定期更新样本数据的一种相对简单的方法。
除了示例生成代码之外,您还将在 Cloud Scheduler 中指定更新频率。例如在下图中,*/10 * * * * 使用标准的 unix-cron 格式定义了每 10 分钟一次的频率:
对于非静态数据,时间戳通常很有用。 Firestore 提供了一种在写入时将来自数据库服务器的时间戳作为字段之一添加的方法:
u'timestamp': firestore.SERVER_TIMESTAMP
值得注意的是,如果没有正确分片,这样的时间戳将在生产系统中成为热点。通常,对同一集合的 500 次写入/秒是您想要的最大值,这样索引就不会成为热点。分片可以很简单,比如每个用户都有自己的集合(每个用户每秒 500 次写入)。但是对于本示例,通过预定的 Cloud Function 每分钟编写 100 个文档绝对不是问题。