[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

目录
相关文章
|
11月前
|
分布式计算 安全 Hadoop
Hadoop安全性和数据保护机制
【8月更文第28天】随着大数据技术的普及,Hadoop已成为处理大规模数据集的核心技术之一。然而,随着数据价值的增加,数据安全问题变得越来越重要。本文将深入探讨Hadoop的安全模型以及如何实施访问控制、数据加密等措施来保障数据安全。
936 0
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之表增加字段,提示创建表失败:DDL execute error, OdpsException: ODPS-0130071:[1,60] Semantic analysis exception - column,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
305 2
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之如何批量修改表名
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
缓存 分布式数据库 API
hbase查询速度很慢
hbase查询速度很慢
794 1
|
分布式数据库 Hbase
[Phoenix] 二、数据类型
目前Phoenix支持22种简单数据类型和1个一维Array的复杂类型。
10302 1
|
SQL 弹性计算 Cloud Native
分布式事务 GTS 的价值和原理浅析
GTS 今年双 11 的成绩 今年 2684 亿的背后,有一个默默支撑,低调到几乎被遗忘的中间件云产品——GTS(全局事务服务,Global Transaction Service),稳稳地通过了自 2014 年诞生以来的第 5 次“大考”。
4418 59
分布式事务 GTS 的价值和原理浅析
|
存储
Keil 5报错error C216: subscript on non-array or too many dimensions
Keil 5报错error C216: subscript on non-array or too many dimensions
914 0
|
SQL Oracle 关系型数据库
|
SQL Java 数据库连接
[Phoenix] 九、分页查询
所谓分页查询就是从符合条件的起始记录,往后遍历“页大小”的行。对于Phoenix的分页查询,怎么使用?性能怎么样?需要注意什么?将会在文章中通过示例和数据说明。
7768 0
|
SQL 分布式数据库 索引
Phoenix入门到精通
此Phoenix系列文章将会从Phoenix的语法和功能特性、相关工具、实践经验以及应用案例多方面从浅入深的阐述。希望对Phoenix入门、在做架构设计和技术选型的同学能有一些帮助。
32945 0