如何使用 GUID 从 SQL 服务器 table 引用 Azure table 数据
How to reference Azure table data from a SQL Server table using a GUID
我想使用 SQL 服务器和 Azure table 在我的网站上实现聊天功能。
我想在我的 Azure SQL 数据库中存储聊天元数据(例如谁在与谁交谈以及何时交谈等),并在 SQL 服务器中保留聊天的 GUID,但是存储在 Azure Table.
中的聊天的实际文本
那么,这将如何运作?
读完 Azure tables 后,我应该
在 SQL 服务器中存储一个 GUID,代表我的 Azure table?
中的分区键
- 以便用户 A 和用户 B 之间的所有聊天具有相同的 GUID/partition?
- 然后我可以按日期过滤分区获取所有消息!
- 在这种情况下我需要使用行键吗?
- 分区有没有限制,如果我最后有几千甚至几百万怎么办?
为每条消息存储一个 guid,将除实际消息内容之外的所有内容存储在 SQL 服务器中,因此可能导致所有聊天记录有数十亿行。在这种情况下,我想我只会 use/need 1 个分区?
????
通常这会起作用。
1 - 是的,您应该使用可重复的唯一标识键作为分区键
- 分区键可以是 GUID。但也许用户 A 和 B 的 id 的哈希值会更好。然后你仍然可以通过分区键检索,但没有必要将它存储在任何地方。
- 是的,您仍然需要 rowkey,因为这是记录的主键。分区键只是某些记录的分组。
- 分区键没有限制 - 通常应该是经常重复出现的东西,但 should/may 有成千上万个
2 - 数十亿条记录仍然如此,这取决于您决定如何存储聊天消息(存储每个聊天行或每隔 x 分钟或...)。但我仍然建议使用分区键之类的东西。
SQL Server 2016 和 Azure SQL 有一个名为 'Column Store Indexes' 的功能,它极大地改进了查询并优化了写入磁盘的数据大小(不幸的是,这仅适用于 P1 层在 Azure 中)
您是否考虑过使用 Cosmos Db - 吞吐量会更好。那就是如果你会有很多流量。 Cosmos Db 非常快,如果您使用分区集合,那么您将拥有相同的功能和无限存储 space。
我相信你有充分的理由,但你想为此使用三种不同的存储类型有点奇怪。单一存储类型是否可以(SQL、Azure SQL、Azure Table 存储、Cosmos Db、..)?
我想使用 SQL 服务器和 Azure table 在我的网站上实现聊天功能。
我想在我的 Azure SQL 数据库中存储聊天元数据(例如谁在与谁交谈以及何时交谈等),并在 SQL 服务器中保留聊天的 GUID,但是存储在 Azure Table.
中的聊天的实际文本那么,这将如何运作?
读完 Azure tables 后,我应该
在 SQL 服务器中存储一个 GUID,代表我的 Azure table?
中的分区键- 以便用户 A 和用户 B 之间的所有聊天具有相同的 GUID/partition?
- 然后我可以按日期过滤分区获取所有消息!
- 在这种情况下我需要使用行键吗?
- 分区有没有限制,如果我最后有几千甚至几百万怎么办?
为每条消息存储一个 guid,将除实际消息内容之外的所有内容存储在 SQL 服务器中,因此可能导致所有聊天记录有数十亿行。在这种情况下,我想我只会 use/need 1 个分区?
????
通常这会起作用。
1 - 是的,您应该使用可重复的唯一标识键作为分区键
- 分区键可以是 GUID。但也许用户 A 和 B 的 id 的哈希值会更好。然后你仍然可以通过分区键检索,但没有必要将它存储在任何地方。
- 是的,您仍然需要 rowkey,因为这是记录的主键。分区键只是某些记录的分组。
- 分区键没有限制 - 通常应该是经常重复出现的东西,但 should/may 有成千上万个
2 - 数十亿条记录仍然如此,这取决于您决定如何存储聊天消息(存储每个聊天行或每隔 x 分钟或...)。但我仍然建议使用分区键之类的东西。
SQL Server 2016 和 Azure SQL 有一个名为 'Column Store Indexes' 的功能,它极大地改进了查询并优化了写入磁盘的数据大小(不幸的是,这仅适用于 P1 层在 Azure 中)
您是否考虑过使用 Cosmos Db - 吞吐量会更好。那就是如果你会有很多流量。 Cosmos Db 非常快,如果您使用分区集合,那么您将拥有相同的功能和无限存储 space。
我相信你有充分的理由,但你想为此使用三种不同的存储类型有点奇怪。单一存储类型是否可以(SQL、Azure SQL、Azure Table 存储、Cosmos Db、..)?