我理解azure表存储中分区键的好处。但是,考虑到我的关系数据库背景,我对如何仅在rowkey中从azure表存储中检索实体感到困惑。据我所知,这是不可能的。这意味着我必须将分区键/ rowkey对存储在某处以获取给定rowkey的实体。我应该只引入一个带有一个任意分区键的“分片”表,这样我可以在给定rowkey的情况下查找分区键吗?
答案 0 :(得分:4)
这是可能的,但会导致表扫描,如MSDN的section中所述。
如果您不需要多个分区,那么如果您的数据规模不大且需要多个分区的可扩展性,那么使用单个分区(例如使用常量)绝对没问题。
另一种可能的方法是使用当前<macrodef name="getsubstring">
<attribute name="src"/>
<attribute name="start"/>
<attribute name="length"/>
<attribute name="result"/>
<sequential>
<loadresource property="@{result}">
<string value="@{src}}" />
<filterchain>
<tokenfilter>
<replaceregex pattern="^.{@{start}}(.{@{length}}).*" replace="\1" />
</tokenfilter>
</filterchain>
</loadresource>
</sequential>
</macrodef>
<property name="prop1" value="nameBLABLABLA" />
<getsubstring src="${prop1}" start="0" length="4" result="p"/>
<echo message="${p}" />
作为RowKey
,这将为您提供高度可扩展的解决方案,但如果您需要查询行范围,则会导致性能下降。
关联的MSDN页面讨论了两者的优缺点,因此我认为根据您对特定问题域的了解,您应该能够找到平衡的解决方案。