分布式数据库-CrateDB架构分析与源码阅读之常用命令

CrateDB的官方文档位于 https://crate.io/docs/crate/reference/en/latest/ ,对整体结构、配置参数以及最佳实践等讲的都很好,个人认为是我看过的讲的最清楚的官方文档之一(也可能是我比较喜欢这种风格的文档,我很喜欢类似于kafka、hbase的这种官方文档,但有人就觉得接受不能),所以推荐有想入手看英文文档的朋友可以看一下。

如果只想上手使用,想快速熟悉SQL语句,可以直接看SQL页面,对着你想用的语法ctrl+F即可:https://crate.io/docs/crate/reference/en/latest/sql/index.html    ,如果还没有执行SQL的shell,可以看一下我的搭建部署的那篇博客,那里面有搭建单节点,下载使用client的详细步骤。

常用命令

下面会按照常规使用的顺序介绍CrateDB常用命令:

创建用户:CREATE USER root with(password='123456');

是的,CrateDB并不会自动创建root账户,root也并不算保留关键字,你可以自己创建一个root账户,但别像我这样弄个root 123456啥的。

 

赋予权限:GRANT ALL PRIVILEGES TO root;

创建table: create table test3(id int, name string, attr1 geo_point, attr2 geo_shape);

插入数据:insert into test3 values(0, 'hello', [1.0,2.0], 'LINESTRING(2.0 4.0, 2.0 8.0)');

查询数据:  select * from test3;

更新数据:update test3 set id = id+1;

删除数据:delete from test3 where id<3;

删除数据表:drop table test3;

清空数据表:truncate table test3;

group by: select sum(id) as total from test3 group by name;

order by: select distinct id from test3 order by id;

 

大对象存储——Blob相关操作:

上传blob文件之前首先需要创建一个关联的blob表:

create blob table tablename clustered into 3 shards with (number_of_replicas=1);

然后需要计算sha1值并结合sha1值和关联的blob表上传:

shasum 1.pdf
curl -u name:passwd -isSX PUT '127.0.0.1:4200/_blobs/blobtablename/sha1val' --data-binary "@./1.pdf"

将命令中的用户名密码,sha1值sha1val,blobtablename,data路径替换为实际路径

总体来说,Create的语法类似于postgresql,但并不完全兼容,比如exists语法就不能支持; 空间函数会少很多等等。说实话,去改sql层的语法对于CreateDB并不容易,首先sql parser这一层用的是antlr,这个就需要一定的学习成本;另外analyze的时候大量用了guice做依赖注入,初学者想要迅速上手还是有一点点难度的;再之后每个类型的statement都有分发成ExecutionPhase的逻辑,这就需要对CreateDB底层分发逻辑有一些研究了,有想实际应用、进行二次开发的可以一起交流。

你可能感兴趣的:(#)