[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技術社區群


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM