赞
踩
MongoDB引擎是只读表引擎,它允许从远程MongoDB集合读取数据(SELECT查询)。引擎仅支持非嵌套的数据类型。不支持INSERT查询。
- CREATE TABLE [IF NOT EXISTS] [db.]table_name
- (
- name1 [type1],
- name2 [type2],
- ...
- ) ENGINE = MongoDB(host:port, database, collection, user, password [, options]);
Engine Parameters
host:port
— MongoDB server address.
database
— Remote database name.
collection
— Remote collection name.
user
— MongoDB user.
password
— User password.
options
— MongoDB connection string options (optional parameter).
在ClickHouse中创建一个表,允许从MongoDB集合中读取数据:
- CREATE TABLE mongo_table
- (
- key UInt64,
- data String
- ) ENGINE = MongoDB('mongo1:27017', 'test', 'simple_table', 'testuser', 'clickhouse');
要从SSL安全的MongoDB服务器读取:
- CREATE TABLE mongo_table_ssl
- (
- key UInt64,
- data String
- ) ENGINE = MongoDB('mongo2:27017', 'test', 'simple_table', 'testuser', 'clickhouse', 'ssl=true');
查询
- SELECT COUNT() FROM mongo_table;
-
- ┌─count()─┐
- │ 4 │
- └─────────┘
您还可以调整连接超时:
- CREATE TABLE mongo_table
- (
- key UInt64,
- data String
- ) ENGINE = MongoDB('mongo2:27017', 'test', 'simple_table', 'testuser', 'clickhouse', 'connectTimeoutMS=100000');
该引擎允许将ClickHouse与Redis集成。对于Redis采用的kv模型,我们强烈建议您只通过点的方式进行查询,例如其中k=xx或其中k在(xx,xx)中。
- CREATE TABLE [IF NOT EXISTS] [db.]table_name
- (
- name1 [type1],
- name2 [type2],
- ...
- ) ENGINE = Redis(host:port[, db_index[, password[, pool_size]]]) PRIMARY KEY(primary_key_name);
引擎参数
必须指定primary,它只支持主键中的一列。主键将以二进制形式序列化为Redis密钥。
主键以外的列将以二进制形式按相应顺序序列化为Redis值。
关键字等于或筛选中的查询将优化为Redis中的多关键字查找。如果查询没有筛选关键字,则会进行全表扫描,这是一项繁重的操作。
在ClickHouse中创建一个表,允许从Redis读取数据:
- CREATE TABLE redis_table
- (
- `k` String,
- `m` String,
- `n` UInt32
- )
- ENGINE = Redis('redis1:6379') PRIMARY KEY(k);
Insert
INSERT INTO redis_table Values('1', 1, '1', 1.0), ('2', 2, '2', 2.0);
Query
SELECT COUNT(*) FROM redis_table;
- ┌─count()─┐
- │ 2 │
- └─────────┘
SELECT * FROM redis_table WHERE key='1';
- ┌─key─┬─v1─┬─v2─┬─v3─┐
- │ 1 │ 1 │ 1 │ 1 │
- └─────┴────┴────┴────┘
SELECT * FROM redis_table WHERE v1=2;
- ┌─key─┬─v1─┬─v2─┬─v3─┐
- │ 2 │ 2 │ 2 │ 2 │
- └─────┴────┴────┴────┘
Update
请注意,主键无法更新。
ALTER TABLE redis_table UPDATE v1=2 WHERE key='1';
Delete:
ALTER TABLE redis_table DELETE WHERE key='1';
Truncate:
异步刷新Redis数据库。此外,Truncate支持SYNC模式。
TRUNCATE TABLE redis_table SYNC;
Redis引擎也支持扫描查询,例如where k>xx,但有一些限制:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。