【发布时间】:2018-09-09 18:18:19
【问题描述】:
我正在使用 Firestore 创建一个新数据库。我是 NoSQL 的新手,并试图确定为我的数据建模的最佳实践。我知道默认情况下 Firestore 数据很浅(与实时数据库相反),因此嵌套不是问题。也就是说,为或多或少的标准用户对象建模的最佳方法是什么?
选项 1 - 仅限家长级别:
users {
uid {
name: 'Bob',
officeNumber: 1234567890,
faxNumber: 0987654321,
email: 'test@test.com',
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: 'test@test.com',
domain: '@test.com',
social {
facebook: 'bobdylan97',
twitter: 'bobbystwitter',
instagram: 'bobinsta'
}
},
address {
street: '111 N Elm St',
city: 'Brooklyn',
state: 'NY',
zip: 12345
}
}
}
我正在为其构建的公司正在成长,并且可能会在不同的点添加额外的数据,因此扩展是一个潜在的问题。像选项 2 那样对数据进行分组是否有任何问题或顾虑?像这样对数据建模的最佳实践是什么?为查询或组织优化模型的最佳做法是什么?
【问题讨论】:
-
我刚刚偶然发现了另一个问题,这个问题可能比我自己的措辞更好,并解决了我面临的一些问题。 Firestore: Working with nested single queries
-
如果您使用的是 OOP,那么您可以将其存储为 #1 以便于过滤/排序/查询,并且在您的解决方案中,您将拥有一个更像 #2 的 User 对象和一个映射器将 #1 映射到 #2,
标签: json database firebase nosql google-cloud-firestore