zoukankan      html  css  js  c++  java
  • [Phoenix] 七、如何使用自增ID

    摘要: 在传统关系型数据库中设计主键时,自增ID经常被使用。不仅能够保证主键的唯一,同时也能简化业务层实现。Phoenix怎么使用自增ID,是我们这篇文章的重点。

    在传统关系型数据库中设计主键时,自增ID经常被使用。不仅能够保证主键的唯一,同时也能简化业务层实现。Phoenix怎么使用自增ID,是我们这篇文章的重点。

    一、语法说明

    1. 创建自增序列

    CREATE SEQUENCE [IF NOT EXISTS] SCHEMA.SEQUENCE_NAME
    [START WITH number]
    [INCREMENT BY number]
    [MINVALUE number]
    [MAXVALUE number]
    [CYCLE]
    [CACHE number]
    • start用于指定第一个值。如果不指定默认为1.
    • increment指定每次调用next value for后自增大小。 如果不指定默认为1。
    • minvaluemaxvalue一般与cycle连用, 让自增数据形成一个环,从最小值到最大值,再从最大值到最小值。
    • cache默认为100, 表示server端生成100个自增序列缓存在客户端,可以减少rpc次数。此值也可以通过phoenix.sequence.cacheSize来配置。

    示例

    CREATE SEQUENCE my_sequence;-- 创建一个自增序列,初始值为1,自增间隔为1,将有100个自增值缓存在客户端。
    CREATE SEQUENCE my_sequence START WITH -1000
    CREATE SEQUENCE my_sequence INCREMENT BY 10
    CREATE SEQUENCE my_cycling_sequence MINVALUE 1 MAXVALUE 100 CYCLE;
    CREATE SEQUENCE my_schema.my_sequence START 0 CACHE 10

    2. 删除自增序列

    DROP SEQUENCE [IF EXISTS] SCHEMA.SEQUENCE_NAME

    示例

    DROP SEQUENCE my_sequence
    DROP SEQUENCE IF EXISTS my_schema.my_sequence
    
    

    二、案例

    1. 需求

    对现有的书籍进行编号并存储,要求编号是惟一的。存储书籍信息的建表语句如下:

    create table books(
      id integer not null primary key,
      name varchar,
      author varchar
    )SALT_BUCKETS = 8;

    由于自增ID作为rowkey, 容易造成集群热点问题,所以在创建表时最好通过加盐的方式解决这个问题

    2.通过自增ID,实现唯一编码,并简化实现。

    • 创建自增序列,初始值为10000,自增间隔为1,缓存大小为1000.

      CREATE SEQUENCE book_sequence START WITH 10000 INCREMENT BY 1 CACHE 1000;
    • 通过自增序列,写入数据信息。

      UPSERT INTO books(id, name, author) VALUES( NEXT VALUE FOR book_sequence,'DATA SCIENCE', 'JHONE');
      UPSERT INTO books(id, name, author) VALUES( NEXT VALUE FOR book_sequence,'Effective JAVA','Joshua Bloch');
    • 查看结果
      Screen_Shot_2018_03_27_at_17_25_19

    三、References

    https://phoenix.apache.org/sequences.html

    转自:https://yq.aliyun.com/articles/570847

     


    交流

    如果大家对HBase有兴趣,致力于使用HBase解决实际的问题,欢迎加入Hbase技术社区群交流:

    微信HBase技术社区群,假如微信群加不了,可以加秘书微信: SH_425 ,然后邀请您。

     

     

    ​  钉钉HBase技术社区群

  • 相关阅读:
    PO BO VO DTO POJO DAO DO这些Java中的概念分别指一些什么?
    前端面试题汇总(待续)
    vue lottie vue-lottie : 使用教程
    webstorm 换行时 代码不对齐
    webstorm 导出编辑器配置.editorconfig
    vue 查看dist文件里的结构
    vue-cli 生产打包
    element form 校验数组每一项
    typescript无法识别vue中的$refs
    mac 10.14.5 [vue create的时候 mkdir没有权限]
  • 原文地址:https://www.cnblogs.com/hbase-community/p/8853573.html
Copyright © 2011-2022 走看看