在开发调试,或者在生产运维过程中,往往需要去Lindorm中查询某条数据。除了使用了 shell来写Get、Scan请求。Lindorm还在集群管理系统中提供了一个简单的SQL查询入口。用户可以使用熟悉的SQL语法来查询Lindorm的表。

从集群管理系统中的SQL查询页面可以进入数据查询系统。在使用前,先要选择要查询的表所在namespace。选中了namespace后,会在页面右边的树形结构中列出这个namespace里所有的表。点击表名可以显示这个表的schema, ROW代表RowKey, COL是预置的列名。用户可以方便地根据这个表的schema来构造select请求。

简单入门

一个典型的SQL查询交互过程如下:

  1. 选择一个namespace,例如default。
  2. 在页面右侧中查看您需要查询的表结构。
  3. 在编辑器中输入您的SQL。
  4. 单击上面的执行按钮,或者通过键盘输入contrl+enter'(Windows)/'command+return' (MacOS)来执行。
  5. 查看编辑器下方的结果表格,如果执行出错,在此处也可看见错误详情。

页面操作过程如下图所示:

说明 集群管理系统的SQL查询页面不支持use namespace语法,只能通过左上角的namespace列表选择/切换namespace。

使用说明

在您执行SQL前,请您务必先阅读下面的几点重要说明,能有效解决您使用时可能遇到的问题或疑惑:

  • 本系统只支持SELECT
  • 为确保数据安全,本系统每次查询仅返回最多100条数据。
  • 对所有varbinary类型的字段进行条件查询时,必须使用HexCode编码的字符串作为value 。
  • ROW字段对应Lindorm的 rowkey,ROWqualifier都是varbinary类型,qualifier如果不属于 family f, 则需要指定 family,例如:select ROW, q1, f1:q2 from ...
  • ROWCOL是 SQL 保留字,查询时需要加反引号;qualifier指定 family 时也需要加反引号。

Binary 编码字符与 HexCode 编码字符的转换

使用 byte[] 形式存储的数据,在 SQL查询 页中返回的查询结果中,varbinary 类型的字段以 BinaryString 的编码形式展示的。

在 varbinary 类型的字段进行条件查询时(即 where 子句中包含如 rowkey 等字段),必须使用 HexCode 编码的字符作为查询条件的 value。例如:查询 rowkey 为 r1 数据,则SQL查询中的 where 子句应该写成 where rowkey='7321'(注:字符串r1的HexCode编码字符为7321)。

为方便用户在查询时进行编码转换,系统在 SQL查询 页面中提供了一个简单的转换工具,只需将您的 Binary 编码字符串输入转换框中,即可在SQL编辑器内看到该字符串相应的 HexCode编码。详情如下图所示:

如果用户想查看 HexCode 编码的查询结果,可以勾选 执行 按钮后的 HexString 单选框,系统会将查询返回的结果中 varbinary 类型的字段都转为 HexCode 编码的字符串。详情如下图所示: