Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure URL缩短器键/值分区/行键策略_Azure_Azure Storage - Fatal编程技术网

Azure URL缩短器键/值分区/行键策略

Azure URL缩短器键/值分区/行键策略,azure,azure-storage,Azure,Azure Storage,我期待着创建一个项目的网址缩短服务。这将是一项非常基本的服务,需要存储以下内容: 随机6个字符([A-z][A-z][0-9])的短字符串(唯一)。id/键 长URL。价值 我选择将Azure表存储用于此服务,因为它与我们的堆栈一起工作 当请求带有短字符串(键)时,我只需要查找实体并返回长URL(值) 这只是基本的键/值存储。因为ATS需要一个分区和行键来定义一个实体,所以我试图为分区和行键想出最好的策略 到目前为止,我提出了以下选择: 使用短字符串作为分区键。空(否)行键 使用短字符串的第一个

我期待着创建一个项目的网址缩短服务。这将是一项非常基本的服务,需要存储以下内容:

  • 随机6个字符(
    [A-z][A-z][0-9]
    )的短字符串(唯一)。id/键
  • 长URL。价值
  • 我选择将Azure表存储用于此服务,因为它与我们的堆栈一起工作

    当请求带有短字符串(键)时,我只需要查找实体并返回长URL(值)

    这只是基本的键/值存储。因为ATS需要一个分区和行键来定义一个实体,所以我试图为分区和行键想出最好的策略

    到目前为止,我提出了以下选择:

  • 使用短字符串作为分区键。空(否)行键
  • 使用短字符串的第一个字母定义分区,然后使用剩余的5个字符作为行键。这将创建最多62个分区,从理论上讲,这些分区将在所有分区上均匀分布实体

    • 这两种方法中有一种是好主意吗
    • 每种方法的优缺点是什么
    • 对于简单的键/值对存储,是否有更好的方法
      • 我会选择选项1

        使用缩短的URL作为分区键。这使服务背后的机器能够决定如何对您提供的密钥进行最佳分区。您实际上不需要行键,这样它就可以保持为空,或者,如果您不介意重载行键,可以将长URL放在那里

        具有相同分区键的所有行都必须由同一台计算机处理,因此当您提供较少的分区键时,表服务的负载平衡选项将受到限制。此外,如果使用多行共享的公共分区键(例如短URL的第一个字母),则备份服务器可能必须读取具有该分区键的所有行,并筛选行键以返回目标行

        在处理事务或快速写入数据比快速读取数据更重要时,使用公共分区键有很多优点


        如果我使用Azure表做同样的事情,我会使用选项1中概述的相同方案。

        Thinkable有一个很好的总结。我们还有一篇关于如何最大限度地利用Azure表的博文。在“可伸缩性”部分下查看与您的场景直接相关的讨论