6.10. SQL 缓存存储

SQL 缓存存储可让您从现有数据库表中加载数据网格缓存。数据网格提供两种类型的 SQL 缓存存储:

数据网格从单个数据库表中加载条目。
查询
数据网格使用 SQL 查询从单一或多个数据库表加载条目,包括来自这些表格中的子列,并执行插入、更新和删除操作。
提示

访问代码教程,以尝试在操作中尝试 SQL 缓存存储。请参阅 远程缓存的 Persistence 代码指南

SQL 表和查询存储:

  • 允许对持久性存储进行读写操作。
  • 可以是只读并充当缓存加载程序。
  • 支持与单个数据库列或多个数据库列的复合对应的键和值。

    对于复合键和值,您必须为数据网格提供描述键和值的 Protobuf 模式(.proto 文件)。通过使用 Data Grid Server,您可以使用 Data Grid Console 或命令行界面(CLI)添加 模式

注意

SQL 缓存存储不支持过期或分段。

6.10.1. 密钥和值的数据类型

数据网格通过 SQL 缓存存储从数据库表中的列加载键和值,并使用适当的数据类型自动加载。以下 CREATE 语句添加名为"books"的表,它含有两个列,即 isbntitle

带有两个列的数据库表

CREATE TABLE books (
    isbn NUMBER(13),
    title varchar(120)
    PRIMARY KEY(isbn)
);

当您将这个表与 SQL 缓存存储搭配使用时,Data Grid 会将一个条目使用 isbn 列作为键,标题 列作为值。

6.10.1.1. 复合键和值

您可以将 SQL 存储与包含复合主键或复合值的数据库表搭配使用。

要使用复合键或值,您必须为 Data Grid 提供描述数据类型的 Protobuf 模式。您还必须在 SQL 存储中添加 架构 配置,并指定键和值的消息名称。

提示

数据网格建议使用 Protobuf 处理器生成 Protobuf 模式。然后,您可以通过 Data Grid Console、CLI 或 REST API 上传远程缓存的 Protobuf 模式。

复合值

下表包含 标题和 作者 列的复合值:

CREATE TABLE books (
    isbn NUMBER(13),
    title varchar(120),
    author varchar(80)
    PRIMARY KEY(isbn)
);

Data Grid 使用 isbn 列作为密钥在缓存中添加条目。对于值,Data Grid 需要 Protobuf 模式来映射 title 列和 作者 列:

package library;

message books_value {
    optional string title = 1;
    optional string author = 2;
}
复合键和值

下表包含复合主键和复合值,每个列有两个列:

CREATE TABLE books (
    isbn NUMBER(13),
    reprint INT,
    title varchar(120),
    author varchar(80)
    PRIMARY KEY(isbn, reprint)
);

对于键和值,Data Grid 需要一个 Protobuf 模式,用于将列映射到键和值:

package library;

message books_key {
    required string isbn = 1;
    required int32 reprint = 2;
}

message books_value {
    optional string title = 1;
    optional string author = 2;
}

6.10.1.2. 嵌入式密钥

protobuf 模式可在值中包含键,如下例所示:

带有嵌入式键的 protobuf 模式

package library;

message books_key {
    required string isbn = 1;
    required int32 reprint = 2;
}

message books_value {
    required string isbn = 1;
    required string reprint = 2;
    optional string title = 3;
    optional string author = 4;
}

要使用嵌入的密钥,您必须在 SQL 存储配置中包含 embedded-key="true" 属性或 embeddedKey (true) 方法。

6.10.1.3. SQL 类型到 Protobuf 类型

下表包含 SQL 数据类型到 Protobuf 数据类型的默认映射:

SQL 类型protobuf type

int4

int32

int8

int64

float4

浮点值

float8

double

numeric

double

bool

bool

char

字符串

varchar

字符串

文本,tinytext,mediumtext,longtext

字符串

bytea,tinyblob,blob,mediumblob,longblob

bytes

其他资源