• 大数据量简单数据查询设计思考


          今天去面试一家企业,出了一道题,说他们的数据格式是以不同企业、产品类型、产品、批次、编码的形式需要存储,但是量级在10亿以上。问什么样的方式进行检索最快。希望提升性能。另外,支持多种角度,比如按企业、按产品类型、按具体的编码等角度查询。都希望尽快出结果。

          对于这种结构明晰的数据,我觉得是有一定的规则可循的。比如按照以下格式:

          企业(8位码)+产品类型(6位码)+产品编号(8位码)+批次(5位吗)+编码(15~35位码),这样可以对所以数据进行规范化。并对这些数据进行索引。

          如果是按照企业查询,那么仅对前八位进行查询即可。当然对所有企业也会有单独的存储或者建立单独的索引。

          如果是知道企业和产品,则可以定位前22位。当然对于产品类型与产品的关联也会进行单独的索引。

          如果知道具体的编码,则更方便,直接查询23位以后的若干位。

          然后将定义规则的统一码,放到Cassandra中,并以统一码为key值。那么定位起来是相当快的。Cassandra对于一次写入,多次读取的场景是很适合的。并且数量级在50亿以下。性能上没有问题,facebook做过测试。在此量级下,性能是很快速的。

          在Cassandra的value中,可以存储一定的查询信息,也可以存储对应具体的存储位置。这样更利于具体数据的定位。

          具体数据的存储,可以按照横纵向划分后的固定格式,存储到关系型数据库中。

          当然,对于数字的某个区间,应该还有更快的查询方法,还有优化的潜质。欢迎大家拍砖。

  • 相关阅读:
    HBase 文件读写过程描述
    Kafka 部署指南-好久没有更新博客了
    《Python高性能编程》——列表、元组、集合、字典特性及创建过程
    Ansible常用功能
    vim内替换文件内容
    线程队列-queue
    Python多进程
    python多线程知识-实用实例
    夜间模式的实现
    本地通知的实现
  • 原文地址:https://www.cnblogs.com/a311300/p/2057426.html
Copyright © 2020-2023  润新知