摘要: 在傳統關系型數據庫中設計主鍵時,自增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。minvalue
和maxvalue
一般與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');
- 查看結果
三、References
轉自:https://yq.aliyun.com/articles/570847
交流
如果大家對HBase有興趣,致力於使用HBase解決實際的問題,歡迎加入Hbase技術社區群交流:
微信HBase技術社區群,假如微信群加不了,可以加秘書微信: SH_425 ,然后邀請您。
釘釘HBase技術社區群