每天进步一点点:如何在LINQPad中使用HafSQL

你知道如何从HIVE链上获取数据嘛?直接访问各个DAPP(比如hive.blog, peakd.com等)无疑是个办法,或者访问区块链浏览器获取一些更底层的数据,又或者我们可以通过API直接从hived节点获取数据。

image.png
(图源 :pixabay)

但当我们想获取一些更为复杂的数据时,以上方法都显得无能为力,比如说统计中文区失联(长时间没有发帖)用户的情况,或者查询HP代理(代理进来),等等等。

这时候就要用到一些比较复杂的工具了,比如说HIVESQL(由@arcange 维护的SQL Server database),长久以来我都在通过LINQPad,访问HiveSQL来获取和分析一些我想要的数据,带给我极大的便利。

对了,好多年前@furion 还提供过 MongoDB来访问区块链数据,但是还简单地学习和了解一下 MongoDB的使用——但那已经是上古时期的事情了。

HAF以及HafSQL

其实,访问HIVE底层数据还有一个选择,那就是使用Hive 应用框架(HAF,Hive Application Framework),简单来讲就是在HIVED和Hive应用(DAPP)之间的一个中间层——它自动地将HIVE区块链上的数据推送至PostgreSQL数据库,方便应用的查询和使用,无比强大!

现在我们在用的很多HIVE杀手级DAPP都是基于HAF构建——所以这些DAPP功能也十分强大,用起来也无比顺滑。

但是对于个人用户,又或者是轻量级DAPP构建者来讲,自己去搭建HAF,很是耗费精力不说,还要耗费大量的金钱(需要大内存+大存储容量的服务器),当然了——还不一定搞得定!

所幸,大佬 @mahdiyari 提供了公共的HAF database,让我们可以零成本迅速地开始使用HAF,详情可以参考:

[Proposal] Public HAF database & HafSQL maintenance

前边说过,我一直使用LINQPad访问HiveSQL,那么LINQPad是否可以访问PostgreSQL数据库呢?以便于我直接使用@mahdiyari 的公共数据库。

我尝试里两种方式,这里分享给大家。

LINQPad添加HafSQL连接:失败的尝试

第一种方式,安装驱动(以失败告终)。

打开LINQPad添加连接的选项,会出现如下界面:
e89d0b1d77ea14cacbc34ee1353728fd.png

点击下边的查看更多驱动
081f297c421ea5ee665c9e0fd51c290b.png

选择安装第一个
ecb190916ea9debbeb1a33d9500a85ed.png

貌似安装成功了
a06f1d500b0c42b6d0d4ae3cbf0577ce.png

但是使用不了
69211b8f00d9c8f9de7e4fbbf4b8d653.png

简单了解了一下,据说是linq2db.LINQPad 最后支持的是 LINQPad 6 / .NET Core 3.1,我用的是LINQPad 7,这就尴尬了。

LINQPad添加HafSQL连接:第二种方法

我就纳闷,LINQPad这么好用的工具怎么能不带PostgreSQL 连接驱动呢?事实上我冤枉它了,它还真带PostgreSQL支持,只是我一时没有找到。

经过我一番探索,总算找到了相应的操作方法,可以直接在LINQPad中连上PostgreSQL数据库啦。

打开LINQPad添加连接的选项,选择Entity Framework Core(实体框架 Core)
039eb51bf1071275907d1dc8272faeff.png

咦,原来可以在这里进行各种配置呀
c0dc408f148d797f39f16dc718693593.png

填入@mahdiyari 提供了公共的HAF database的相应配置
ea577dc56c65cc2f95df2997f6627f1e.png

之后就可以愉快地使用公共的HAF database进行各种查询啦。

查询示例

测试一下查询最新十个被创建的账户

SELECT *
FROM accounts
ORDER BY created_at DESC
LIMIT 10;

我们会得到类似如下数据(不完全截图):
4c849b6c7ab7a7ab37fb446de37aa0b1.png

更多细节以及更多使用方法正在慢慢探索中。

再次感谢大佬@mahdiyari 提供了公共的HAF数据库,大家还没给相应提案投票的,可以考虑去投票支持一下(Public HAF database & HafSQL maintenance #359)提案。

另外大家也可以考虑去投票支持一下@arcangeHiveSQL Proposal - Keep It Free To Use For The Community #329)提案,这个提案一直没通过阈值,我觉得还是挺遗憾的。

(HIVE中文社区已经将治理票投票权代理给我的小伙伴可以不用操作,我早已投票支持了两位大佬的相关提案哦)

相关链接

Sort:  

感谢O哥的分享,让我们每天进步亿点点。

哈哈,一点点就行

👍🏻👍🏻O哥懂得真多

哈哈,我是菜鸟
正是因为不懂才努力学习

O哥厉害👍,谢谢O哥分享😍。

不管我能不能看懂,只要是《每天进步一点点》的帖子,我每次都会认真看两遍,哈哈,主打一个熏陶😄

哈哈,我就是边学边记
相当于错题本

我又来看我的知识盲区了,每天看每天学🙈🙈

一起学习进步

专业的方法,专业的O哥,不懂就是觉得厉害,谢谢O哥分享

HIVE搞技术的我最菜啦

学废了~(¯▽¯~)~
O 哥厉害(¯▽¯)👍

我是一枚小小菜鸟
除了菜什么都没有