我正在从实体“B”的自动生成ID为实体“A”创建字符串数据存储区ID。我应该在A ID前加上“A-PREFIX”-B.IntID(),还是用B.IntID()+“A-PREFIX?”
我认为我应该从B ID开始,因为它们是均匀分布的,以防止出现热点?
反模式#1:实体密钥的顺序编号
谢谢, 安德鲁
答案 0 :(得分:3)
您根本不需要任何前缀。密钥由实体类型和ID组成。因此,如果两个实体属于不同类型,则它们可能具有相同的ID,并且仍然具有唯一的密钥。
这个例子非常合适(例如Java):
Entity userEntity = new Entity("User");
Long id = datastore.put(userEntity).getId();
Entity loginEntity = new Entity("Login", id);
datastore.put(loginEntity);
请注意,如果您使用Long ID并将其转换为String,则您的密钥将占用更多空间。所以使用Long作为id是一个更好的选择。