我正在使用Firestore创建一个新数据库。我是NoSQL的新手,并试图确定建模数据的最佳实践。我知道Firestore数据默认是浅层的(与实时数据库相对),因此嵌套不是问题。那就是说,建立一个或多或少的标准用户对象的最佳方法是什么?
选项1 - 仅限父级:
users {
uid {
name: 'Bob',
officeNumber: 1234567890,
faxNumber: 0987654321,
email: '[email protected]',
domain: '@test.com',
facebook: 'bobdylan97',
twitter: 'bobbystwitter',
instagram: 'bobinsta',
street: '111 N Elm St',
city: 'Brooklyn',
state: 'NY',
zip: 12345,
height: 72,
weight: 200,
hairColor: 'brown',
eyeColor: 'blue'
}
}
选项2 - 嵌套多个级别:
users {
uid {
personal {
name {
first: 'Bob',
last: 'Dylan'
},
attributes {
height: 72,
weight: 200,
hairColor: 'brown',
eyeColor: 'blue'
}
},
contact {
phone {
office: 1234567890,
fax: 0987654321
},
email: '[email protected]',
domain: '@test.com',
social {
facebook: 'bobdylan97',
twitter: 'bobbystwitter',
instagram: 'bobinsta'
}
},
address {
street: '111 N Elm St',
city: 'Brooklyn',
state: 'NY',
zip: 12345
}
}
}
我正在建设的公司正在增长,并且可能会在不同的点添加额外的数据,因此扩展是一个潜在的问题。对选项2中的数据进行分组是否存在任何问题或疑虑?像这样建模数据的最佳实践是什么?优化模型以进行查询或组织是最佳做法吗?
我建议你观看:qazxsw poi
它完美地解释了Firestore的基本概念。
如果您将用户存储在What is a NoSQL Database? - Get to Know Cloud Firestore Ep.1集合中并且users
是文档ID,则选项2应该可以正常工作。
您只存储有关文档中每个用户的相当少量的数据,因此您不应达到1Mb限制。你也可以在这里挤压base64编码的个人资料图片,没有问题。