我想同时使用SQL Server和Azure表在网站上实现聊天功能。
我想在我的Azure SQL数据库中存储聊天元数据(例如,与谁交谈的人以及何时等等),还希望在SQL Server中保留聊天的GUID,但是将聊天的实际文本存储在Azure表中
那么,这将如何工作?
在阅读了有关Azure表的信息后,我应该
在SQL Server中存储一个GUID,它代表我的Azure表中的分区键吗?
为每条消息存储一个GUID,将除实际消息内容之外的所有内容存储在SQL Server中,因此可能导致数十亿行用于所有聊天。在这种情况下,我想我只会使用/需要1个分区?
????
答案 0 :(得分:2)
通常这将起作用。
1-是的,应该使用可重复的,唯一标识的密钥作为分区密钥
2-数十亿条记录仍然会发生,这取决于您决定存储聊天消息的方式(存储每条聊天行或每隔x分钟或……)。但是我仍然建议使用分区键之类的东西。
SQL Server 2016和Azure SQL具有称为“列存储索引”的功能,该功能极大地改善了查询并优化了写入磁盘的数据大小(不幸的是,此功能仅在Azure的P1层可用)
您是否考虑过使用Cosmos Db-吞吐量会更好。那就是如果您将有很多流量。 Cosmos Db速度非常快,如果您使用分区集合,那么您将拥有相同的功能和无限的存储空间。
我确定您有充分的理由,但是您要为此使用三种不同的存储类型有点奇怪。不会是一种存储类型(SQL,Azure SQL,Azure表存储,Cosmos Db等)吗?