前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redash里面真的含金量很高!

Redash里面真的含金量很高!

作者头像
Python进击者
发布2023-03-15 12:41:37
9070
发布2023-03-15 12:41:37
举报
文章被收录于专栏:JAVAandPython君JAVAandPython君

大家好,我是Kuls。

今天继续跟大家聊聊redash。

其实这个开源项目在可视化领域还是挺火的,我当前所处的公司,似乎也看到过它的身影。除此之外,我也有搜到过相关的公司专门做redash二次开发的。

这说明了这个开源项目还是非常有竞争力的,能够让很多商业化公司对其进行商业化。

对于我们技术人员来说,肯定是能从中学习到很多的东西的。

有关于它的文件结构我在之前的文章中有说过,那么今天主要来跟大家讲讲它的总体架构以及一些里面重要的模块

大家可以看到下面这张图(自己瞎画的),其实我们可以看到主要有三层后端、前端、应用层。

在后端里面主要有个Server层,我们大部分二次开发的代码都是在这个部分来进行编写的。其次就是数据引擎,这一部分也是整个系统的核心部分,这一部分主要就是引入了MySQL、MangoDB、postgresql等等几十种上百种的数据引擎,有了这些引擎我们就能够非常方便的通过应用层输入数据配置相关信息,通过数据引擎来获取到相关数据。在后端层中还有个任务队列也是比较重要的,他主要做的事情是处理一些查询任务以及定时任务。

在前段层中主要就是一些基本功能的页面编写以及一些可视化组件的编写,例如一些拖拉拽的组件等等。

应用层就是面向我们用户的一些概念,例如里面有仪表盘、查询片段、提醒事项等等。

因为我们公众号大部分的朋友其实还是属于后端或者测开、爬虫之类的,所以我们主要需要了解的就是后端层的一些东西。

大家可以看到上面这张图,我们可以看到整个开源项目底层的数据库都是使用的PostgreSQL来进行存储的,所以不会玩PostgreSQL的,得提前简单学学相关命令了。

其次就是里面会涉及到celery这个框架,可以看看网络上是怎么介绍它的。

Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。

它是一个任务队列,专注于实时处理,同时还支持任务调度。

其实除了图片上的一些东西,我觉得这个项目的授权鉴权其实也非常非常值得借鉴,其中这些代码主要集中在authentication当中。

cas_auth是我自己玩的,统一认证中心相关的内容。例如account.py里面主要就是一些账户相关的基本操作,大家可以理解成一个工具类,提供了一些发送邮件,邀请他人等功能。然后底下这些就是不同的认证方式了。

其中有cas、google_oauth、jwt、Idap、saml等认证,所以如果你是一个Python开发,然后很想去了解相关的内容,我觉得完全可以参考这个项目来。

如果你想要去了解一下命令行的开发,这个项目里面也有。

主要集中在cli的文件夹中,当做成了一个大系统、大项目,其实很多时候都需要去开发一些命令行来进行一些初始化的操作。

举一个里面的例子:

代码语言:javascript
复制
@manager.command(name="list")
@click.option(
    "--org",
    "organization",
    default=None,
    help="The organization the user belongs to (leave blank for " "all organizations).",
)
def list_command(organization=None):
    """List currently configured data sources."""
    if organization:
        org = models.Organization.get_by_slug(organization)
        data_sources = models.DataSource.query.filter(models.DataSource.org == org)
    else:
        data_sources = models.DataSource.query
    for i, ds in enumerate(data_sources.order_by(models.DataSource.name)):
        if i > 0:
            print("-" * 20)

        print(
            "Id: {}\nName: {}\nType: {}\nOptions: {}".format(
                ds.id, ds.name, ds.type, ds.options.to_json()
            )
        )

这其实就是一个列出数据源命令列表的命令行,其实很简单,但是没做过,你不一定能想得到。

好了,今天就写这么多了,redash打算写一个系列,所以每篇不说多了,说多了也没人看。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档