开发者社区 > 云存储 > 正文

表格存储中,number是我们主动自增的一个业务标识,Integer我看范围是long,应该是够用的

表格存储中,number是我们主动自增的一个业务标识,Integer我看范围是long,应该是够用的。

我们需要支持范围查询,根据number来做快速的范围查询是否可以? 长尾问题的体现是什么?

目前需要查询number量有 1kw了,比如我查找100-200之间的数据,希望快速支持

展开
收起
提个问题 2023-07-24 17:21:27 92 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在表格存储中,使用 Integer 类型作为 number 字段的数据类型并不会存在问题,因为 Integer 类型范围已经覆盖了 long 类型的范围。同时,如果您需要支持范围查询,可以使用区间查询来实现,例如使用 GetRange 或 BatchGetRow 接口来查询某个范围内的数据。

    长尾问题是指某些数据在出现的频率非常低,但是又不能被忽略或者被认为是噪声的情况。在表格存储中,长尾问题的体现可能是某些数据出现的频率非常低,但是需要被保留,例如某些异常情况、特殊数据等

    2023-07-27 22:47:05
    赞同 展开评论 打赏
  • 在表格存储中,使用自增的业务标识(例如number)并进行范围查询是可行的。对于主键列的数据类型,如果您使用Integer类型来存储自增的业务标识,其范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807,通常足够满足大多数场景的需求。

    要实现范围查询,您可以使用表格存储的条件查询功能,并指定相应的范围条件。例如,对于查询100到200之间的数据,您可以构建一个查询条件如下:

    from ots2 import *
    from ots2.models import *
    
    # 创建OTS客户端
    client = OTSClient(...)
    
    # 构建查询条件
    query_criterion = RangeRowQueryCriterion(
        # 指定分区键和范围
        range_from = [PrimaryKeyInColumn('number', 100)],
        range_to = [PrimaryKeyInColumn('number', 200)],
        # 其他条件(可选)
        limit = 100  # 设置返回结果的数量
    )
    
    # 发起查询请求
    request = GetRangeRequest(
        table_name = 'your_table_name',
        direction = Direction.FORWARD,  # 查询方向,正向或反向
        inclusive_start_primary_key = ['your_partition_key_value'],  # 起始主键
        exclusive_end_primary_key = ['your_partition_key_value'],  # 终止主键
        columns_to_get = [],  # 返回的列(可选,为空表示返回全部列)
        limit = 100,  # 设置返回结果的数量
        column_filter = None,  # 列过滤条件(可选)
        query_criterion = query_criterion  # 查询条件
    )
    
    response = client.get_range(request)
    

    上述示例是使用Python SDK进行范围查询的一个简单示例。您可以根据所使用的编程语言和SDK,参考表格存储的官方文档,了解如何构建并执行范围查询。

    关于长尾问题,它通常指的是在范围查询中,如果查询的范围非常大或者数据分布不均匀,可能会导致查询结果集的某些分区较大,而其他分区较小。这样一来,在处理查询结果时,可能会出现某些分区的响应时间较长,从而影响查询的整体性能。为了解决这个问题,您可以考虑优化分区策略、调整查询范围或增加并行查询等方法来减轻长尾问题的影响。

    总结而言,表格存储支持范围查询,并且您可以使用自增的业务标识作为范围查询的条件。通过合理设计分区键和利用条件查询功能,您可以快速检索符合范围条件的数据。需要注意的是,当查询范围较大或数据分布不均匀时,可能会遇到长尾问题,需要进行相应的优化和调整。

    2023-07-24 22:23:19
    赞同 展开评论 打赏
  • getRange正常是毫秒级,比较长的几百毫秒。,此回答整理自钉群“表格存储技术交流群”

    2023-07-24 17:31:39
    赞同 展开评论 打赏

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

相关电子书

更多
TableStore在社交类场景下的应用 立即下载
表格存储实时数据流Steam的技术揭秘和应用场景 立即下载
表格存储(TableStore) 立即下载