GUI / GitOps / API: 用 Bytebase 实现 SQL 审核

数据库 CI/CD 工具 -- Bytebase 介绍 在本文中,我们首先向读者展示了 Bytebase 的安装部署过程,以及其查询和更改的基本功能。接着,我们体验了 Bytebase 1.14.0 最新版本所带来的 ChatSQL 功能,该功能基于 OpenAI,能够根据我们的问题或需求生成相应的 SQL 语句。最后,我们实践了 Bytebase 的 GitOps 功能,通过结合版本控制系统,可以跟踪数据库结构的变化,方便我们对数据库变更进行审查、协作和回滚操作。 阅读详情

修改数据库中的数据时,确保安全准确至关重要。Bytebase 提供 SQL 审核功能:将 SQL 变更应用到数据库之前,可对其进行评估。SQL 审核可通过 Bytebase GUI、GitOps 工作流或 API 触发。
本教程将使用 Bytebase 的 SQL 审核来改进数据库 Schema 变更流程。使用社区版就足以完成。
可在登录 Bytebase 后,点击头像将语言设置为简体中文。
在这里插入图片描述

准备

请确保已安装 Docker。如果本地没有重要的现有 Bytebase 数据,可以通过 rm -rf ~/.bytebase/data 从头开始。

配置

  1. 复制并粘贴命令,通过 Docker 启动 Bytebase。
docker run --rm --init \
  --name bytebase \
  --publish 8080:8080 --pull always \
  --volume ~/.bytebase/data:/var/opt/bytebase \
  bytebase/bytebase:2.22.2
  
(这里的 2.22.2 可以替换成最新版本)
  1. 注册第一个账户,它将自动获得工作区管理员角色。

  2. 单击左侧菜单安全与策略 > SQL 审核策略, 可以看见已有的默认 SQL 审核策略。
    在这里插入图片描述

  3. 点击编辑,你将被重定向到 SQL 审核策略编辑页面。在这里,你可以为不同的数据库引擎指定不同的策略。这里示例数据库是 PostgreSQL,所以我们将重点讨论 PostgreSQL 策略。

  4. 默认策略是基于 Prod 环境的。也可以点击更改绑定的资源将规则附加到其他环境或项目,或点击更改模版来更改规则。这里按默认示范。
    在这里插入图片描述

  5. 点击更改模板,保留默认 SQL 审核模板。下一步,添加一条规则:强制设置列的默认值,将错误级别设为错误,确认并更新。
    在这里插入图片描述

方式一:在 Bytebase GUI 中触发 SQL 审核

  1. 进入 Sample project。默认的 SQL 审核策略是基于 Prod 环境的,所以在 Prod 环境的数据库上创建一个新表。点击左侧菜单中的数据库 > 数据库,选择 hr_prod,然后点击 Schema 变更。
    在这里插入图片描述

  2. 点击新建表。在左侧栏中选择 Prod hr_prod > public > 表。创建带有列 id 和 name 的新表 t1,注意取消选择非空,然后预览工单。
    在这里插入图片描述

  3. SQL 审核会在工单预览前自动运行。可以看到我们是否违反了所定义的规则。选择仍然继续。
    在这里插入图片描述

  4. 重定向到问题页面后,选择创建、仍然继续。问题已创建,但由于存在一些错误,SQL 审核被标为红色。

  5. 你可以通过这样修改 SQL 代码来解决问题:

CREATE TABLE "public"."t1" (
   "id" integer NOT NULL DEFAULT 0,
   "name" text NOT NULL DEFAULT ''
);

在这里,你首先需要点击左侧菜单上的设置,然后勾选允许修改语句,否则 SQL 将不可编辑。
在这里插入图片描述

方式二:在 GitOps Workflow 中触发 SQL 审核

启动 ngrok
ngrok 是一个反向代理隧道;这里我们需要它来获取公共网络地址,以便从 VCS 接收 webhook。如果要用于生产,我们建议使用 Caddy。
在这里插入图片描述

  1. 在 Docker 中用如下命令运行 Bytebase:
docker run --rm --init \
  --name bytebase \
  --publish 8080:8080 --pull always \
  --volume ~/.bytebase/data:/var/opt/bytebase \
  bytebase/bytebase:2.22.2
  1. Bytebase 已在 Docker 中成功运行,你可以通过 localhost:8080 访问它。注册一个管理员账户,它将自动被授予工作区管理员角色。
  2. 登录到 ngrok 控制面板并完成入门步骤以进行安装和配置。如果你希望每次启动 ngrok 时使用相同的域,请转到 Cloud Edge > 域,你会在其中找到与你的账户链接的域 <>.ngrok-free.app。
  3. 运行 ngrok 命令
ngrok http --domain=<<YOURS>>.ngrok-free.app 8080

以特定的域名(8080)启动 ngrok,你将看到下面显示的输出:
在这里插入图片描述

  1. 登录 Bytebase 并单击右上角的设置(齿轮图标)。单击工作空间下的通用。在网络部分粘贴 <>.ngrok-free.app 作为外部 URL,然后点击更新。
  2. 现在,你就可以通过 <>.ngrok-free.app 访问 Bytebase 了。

配置GitOps

  1. 用你的 ngrok 域名访问 Bytebase(不能用 localhost)。点击左侧菜单中的集成 > GitOps,然后按照指令设置 GitHub.com 集成。
  • 在你的 GitHub 库中,点击设置 > 开发人员设置 > 个人访问令牌,并生成一个新令牌。选择所有库作为访问的库,并根据 Bytebase 的指令配置令牌权限。
  • 回到 Bytebase,粘贴个人访问令牌,确认并添加。
    更多细节参考 GitOps 的文档。
  1. 在你的 GitHub 账户中创建库 bb-gitops-814,用于提交 SQL 变更。

  2. 创建另一个项目 Sample Project GitOps,在数据库 > 数据库点击创建数据库。选择 Prod Sample Instance,命名为 gitops_prod,环境选择 Prod,数据库所有者名称为 bbsample,然后创建。

  3. 在项目中,点击集成 > GitOps > 添加仓库。选择 bb-gitops-814 仓库,添加 GitOps 连接器。按照提示的 3 个步骤操作,保留默认设置,点击完成,工作流就设置好了。
    在这里插入图片描述

  4. 返回 GitHub 上的 bb-gitops-814,在 bb-gitops-814/bytebase/ 文件夹下创建文件 202408141500_create_t2.sql,并添加如下的 SQL 命令:

CREATE TABLE "public"."t2" (
   "id" integer NOT NULL PRIMARY KEY,
   "name" text NULL
);
  1. 提交变更。创建新分支并提出修改(Propose Changes)、创建 PR(Create Pull Request)。在新的 PR 页面上,你可以看到 SQL 审核注释。
    在这里插入图片描述

  2. 按如下方式编辑提交并直接提交到分支,你将发现 SQL 审核注释已更新。

CREATE TABLE "public"."t2" (
   "id" integer NOT NULL DEFAULT 0 PRIMARY KEY,
   "name" text NOT NULL DEFAULT ''
);

在这里插入图片描述

  1. 在 GitHub 中合并拉取请求,工单会在 Bytebase 中创建并执行。
    在这里插入图片描述
    在这里插入图片描述

方式三:在 Bytebase API 中触发 SQL 审核

你可以在内部门户或 GitHub 操作中调用 Bytebase API 来触发 SQL 审核。我们在此不详细介绍,但你可以参考 github.com/bytebase 里以下示例:
🐙 例:API
以下示例调用了 Bytebase API 触发包括 SQL 审核在内的 Schema 变更。
在这里插入图片描述

🐙 例:GitHub 操作中的 API
以下示例使用 github 自定义操作调用 Bytebase API,以协调 Bytebase 与 GitHub PR 工作流中的 Schema 迁移。
在这里插入图片描述

总结

现在,你已学会如何在 Bytebase GUI、GitHub 或通过 API 触发 SQL 审核。更多详情请参阅 Bytebase.com 官网上的 SQL 审核(SQL Review)文档(https://www.bytebase.com/docs/sql-review/overview/)。现在,你已学会如何在 Bytebase GUI、GitHub 或通过 API 触发 SQL 审核。更多详情请参阅 Bytebase.com 官网上的 SQL 审核(SQL Review)文档。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

Bytebase 2.0 - 把 DevOps 带进数据库 近期 AI 领域的突破让大家都很兴奋,但回到日常的工作中,开发者们还是需要处理许多的琐事。其中之一就是和数据库打交道,一件繁琐但又需要格外仔细的工作,不然就容易造成 #删库跑路 的事故。2 年前,我们启动了 Bytebase 来解决这个问题,并且把项目开源在了 GitHub 上。相比于全球范围内的友商 Liquibase,Flyway,还是国内的 Yearning,Archery,Bytebase 的增长速度也都是更快的。 阅读详情

相关推荐

数据库管理审计工具Bytebase快速部署

Bytebase 是一个开源数据库 DevOps 工具,它是用于在整个应用程序开发生命周期中管理数据库的 GitLab/GitHub。由于 GitLab/GitHub 为团队提供了 GUI 和协作工作区来管理代码,因此 Bytebase 在管理数据库方面也做了类似的工作.

weixin_44151123的博客 1364

如何使用 Bytebase 快速实现 SQL 自动化

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !​数据库在每个企业都占据的非常重要的位置,它存储着一个公司的命脉。对于数据库的管理也非常的复杂多变,很多公司都有专业的DBA团队在管理。但是,不论有无DBA,对数据库的操作都不会变少,而且都面临着相同的问题:不是在提数就是在修数的路上不是在审核SQL就是在审核SQL的路上不是在找历史记录就是在找历史记录的路上不是在备...

easylife206的专栏 2674

基于宝塔的 Bytebase 可视化安装、配置、部署教程

Bytebase是一款使用Go语言开发的开源数据库管理软件,旨在为DBA(数据库管理员)、开发人员和平台工程师提供一个基于Web的协作工作区,用于管理数据库的整个生命周期。本文将介绍如何在宝塔面板上可视化安装、部署、配置Bytebase教程。

Bytebase的博客 1199

Bytebase试用与对比

简介 官网介绍:Bytebase 是为 DBA 和开发人员进行数据库表结构 (schema) 变更而设计的团队协作工具。用户可以通过一个工作流 (pipeline),来推进 schema 在多个环境中的变化。同时用户也可以把 schema 保存在 VCS 中 ,再由新的 schema 文件提交来触发工作流。 由前Google和前蚂蚁员工创立的,刚刚首轮融资300万美元,此类软件之前使用过navicat,treesoft,Yearning,阿里内部的idb,阿里云的DMS,还有我在公司云原生数据库平台上自研

zhangjikuan的专栏 1万+

用 Bytebase 实现批量、多环境、多租户数据库的丝滑变更

现在,你已学会如何使用部署配置和数据库分组在 Bytebase 中运行批量更改。动手试试吧!💡 更多资讯,请关注 Bytebase 公号:Bytebase。

Bytebase的博客 1992

Bytebase 3.5.0 - 手动发布功能调整至社区版

新安装 https://www.bytebase.com/docs/get-started/self-host/升级 https://www.bytebase.com/docs/get-started/upgrade/弃用慢查询、多租户功能;弃用原有的内置 GitOps 功能,并改进 GitOps 工作流。在工单创建之前可以查看到来自 SQL 检查结果的预估影响行数。扩展 API 以允许更新 Plan 的数据库分组部署。API 支持分页和过滤。,使其仅适用于现有表和。

Bytebase的博客 688

如何构建企业级数据库自动化运维体系:Bytebase深度集成指南

Bytebase是一款面向开发、安全、DBA和平台工程团队的高级数据库DevSecOps解决方案,被誉为数据库领域的GitHub/GitLab。本文将详细介绍如何通过Bytebase构建企业级数据库自动化运维体系,帮助团队实现数据库变更管理、安全合规与高效协作的全流程自动化。 [![Bytebase数据库DevSecOps解决方案架构图](https://raw.gitcode.com/GitH

gitblog_01076的博客 1101

Python爬虫实战:5分钟搞定微信公众号文章阅读数、点赞数抓取(附完整代码)

本文详细介绍了如何通过Python爬虫技术自动化抓取微信公众号文章的阅读数和点赞数。文章从数据源分析入手,分步讲解了获取文章列表与提取单篇统计数据的完整流程,并提供了应对平台风控的策略与工程化整合方案,帮助开发者高效、合规地完成数据采集任务。

ansible6ops的博客 1337

代码全开源!数据库工具届的瑞士军刀,替代多款工具的一站式数据库开发平台

Bytebase 目前支持了市面上所有主流的数据库。它收口了人对数据库的所有操作。通过一站式的解决方案,整合了各种零散的数据库工具,使得组织能通过统一的入口来变更、查询、保护和治理无论是云上还是云下的各种数据库。💡 更多资讯,请关注 Bytebase 公号:Bytebase。

Bytebase的博客 1749

Fluent后台计算中Journal文件的自动化编写与优化实践

本文深入探讨了Fluent在Linux/Unix环境下进行后台计算时,Journal文件的自动化编写与优化实践。Journal文件作为Fluent后台计算的“灵魂”,是实现仿真流程自动化、保证计算可重复性与准确性的关键。文章从基础脚本骨架搭建、命令简写技巧,到进阶的参数化研究与批量计算实现,提供了详实的实战指南,帮助工程师大幅提升仿真效率。

postgres8guard的博客 758

2025年VSCode AI插件实战:如何用Devika+Continue+Tabby三件套10倍提升开发效率

本文详细介绍了2025年VSCode AI插件Devika、Continue和Tabby的三件套组合,如何通过智能开发工作流10倍提升开发效率。从项目架构生成到上下文感知辅助,再到本地化智能编码,这套方案实现了从需求分析到代码生成的全流程自动化,特别适合中大型项目开发。

weixin_26911099的博客 272

Bytebase:一款开源的数据库管理软件

总的来说,Bytebase作为一款开源、易用的数据库管理软件,以其丰富的功能和安全性能受到了广泛的关注和应用。相信随着数据库管理需求的不断增长,Bytebase将在未来发挥越来越重要的作用,为用户提供更便捷、高效的数据库管理解决方案。在未来的发展中,Bytebase有望进一步加强与其他数据库和开发工具的集成,提供更加全面的数据库管理解决方案。随着信息技术的不断发展,数据库管理软件的需求也日益增长。未来,Bytebase将继续致力于提供更加丰富和便捷的数据库管理功能,满足用户对数据库管理的不断变化的需求。

LuLaaa_的博客 963

手把手教你:在openEuler 22.03上离线搞定OpenSSH 9.8升级(CentOS 7.9通用)

本文详细介绍了在openEuler 22.03和CentOS 7.9系统上离线升级OpenSSH 9.8的完整流程,包括准备工作、离线包获取、安装步骤、服务管理及回滚方案。特别针对无外网环境的企业服务器,提供安全可靠的离线升级解决方案,帮助运维人员有效提升系统安全性。

weixin_30682415的博客 192

Bytebase:让数据库管理和协作变得无缝

到这里,我要说一下这段时间Bytebase使用下来的感受,这款工具是唯一被收录的产品。技术背景和实力都挺靠谱的,具备海外和国内工作经验,视角更加全面,目前已经有很多公司在进行相关落地。在云原生的今天,传统的 DB 管理工具对云原生场景下很难提供更为全面的治理能力,对于开发人员来说,更希望像管理代码一样管理 SQL,这就引入了Bytebase的GitOps实践。传统 SQL 和代码是分离的,对于管理人员需要对他们进行两套不同的管理模式,这带来了一定的管理成本和出错可能性。

口中冰的博客 802

CUPED (Controlled-experiment using Pre-Experiment Data) 论文学习笔记

CUPED是一种用于提升A/B测试灵敏度的方差缩减技术。它通过利用实验前用户行为数据(协变量X)构建调整后的指标Y_cuped=Y-θ(X-E[X]),其中θ=Cov(Y,X)/Var(X)。这种方法能在保持处理效应估计无偏的前提下,将方差降低1-ρ²倍(ρ为前后指标相关性)。CUPED的核心优势在于:不改变平均处理效应的估计,但能显著提升统计功效,使得实验更容易检测到微小但真实的效应,同时减少所需样本量或实验周期。该技术特别适用于用户异质性大、指标方差高的场景。

pursuit的博客 2149

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

Bytebase 突破百万下载!

在过去的两年中,Bytebase 的用户群体已经扩大到全球各地,包括南美洲的中央银行、中东的电子商务平台、东南亚的电信集团、非洲的支付网关、欧洲的电子邮件提供商,甚至是美国一家害虫控制供应商,我们的影响力甚至延伸到了遥远的斐济群岛!我们的初心不变:打造一个一站式平台,负责各种不同数据库的变更、查询、安全和治理。作为数据库即代码(database-as-code)方法论的开创者,Bytebase 也是 X as Code 类目下增长最快的开源项目之一。,免费注册云账号,立即体验 Bytebase。

Bytebase的博客 649

SQL面试题——最大连续登陆问题

最大连续登陆是我们计算比较常用的指标,我们可以将其当成一个经典的SQL模型,后面我们也会陆续总结出其他的模型,你还知道其他的比较经典的SQL 吗?欢迎分享,或者你还知道其他的关于计算连续的指标?最大连续登陆重要的是计算思想,最大连续才是关键,登陆只是一个场景,要学会举一反三。

9013

Bytebase数据库 Schema 变更管理工具

Bytebase是面向DevOps团队的基于 Web 的、零配置、无依赖的数据库架构更改和版本控制管理工具。

每天都要开心呀(#^.^#) 2189

STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度

详细介绍了STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度。

kevin1499的博客 5594

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

浅谈ByteBase

Bytebase的使用十分简单,在这里给出如何使用Bytebase创建工作流的步骤: 1.首先,你需要在Bytebase中创建一个项目,并将你的数据库和数据库服务器添加到项目中。在此之前,你需要进行数据库管理员和项目管理员的登录。 2.确认数据库连接成功后,你可以在Bytebase项目中管理数据库的各种对象,例如数据库表、列、索引、外键等。在需要对数据库进行修改时,你可以创建工作流。 3.点击“创建工作流”按钮,在弹出的窗口中输入工作流的名称和描述等基本信息,并选择需要执行的操作。

ruiqianyun2010的博客 1722

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

bytebase 使用

数据库 CI/CD 工具 -- Bytebase 介绍

qq_27164239的博客 2304

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

扔掉 Navicat、DBeaver、DataGrip,来试试这款吊炸天的开源数据库管理工具,吹爆!...

戳下方名片,关注并星标!回复“1024”获取2TB学习资源!大家好,我是民工哥!我们做 IT 行业的,工作始终绕不开数据库,所以,一款得心应手的、好用实用的数据库管理软件也是至关重要的。前面也推荐了不少有收费、开源的软件,大家可以点击文末Tools专栏查看,好不好用,只能看使用者的使用习惯与适合不适合。今天再来给大家推荐一款号称最强的开源数据库管理软件:Bytebase!这款软件有很多功能与 ...

民工哥的博客 3779

使用 K8s 部署 Bytebase,快速实现 SQL 自动化

Bytebase团队把它定位成面向开发者可靠的数据库CICD,它不仅仅是数据库管理工具,更是连接开发和DBA的桥梁。它到底具有什么样的能力呢?SQL审核SQL纠错SQL编辑器GitOps备份恢复多租户管理上面仅仅是简单的部署和使用,了解基本的功能。但是目前仅仅停留在数据库管理上,如何打通Gitlab和Bytebase,本篇文章还没有实践,下篇文章补上。💡 你可以访问官网https://bytebase.com,免费注册云账号,立即体验Bytebase。

Bytebase的博客 726

Bytebase的SQL审核体验(基于MySQL库

按官网上的描述,Bytebase是一款为DevOps团队准备的数据库CI/CD工具,专为开发者和DBA打造。唯一被CNCF Landscape收录的Database CI/CD产品。其核心理念就是,像管理代码一样管理SQL。而对于SQL脚本的管理,其中最重要的部分就是SQL审核。Bytebase支持针对 SQL 代码的审查,同时也支持提交的数据变更的审查;以 pull request 作为审查流程触发器;提供多种审查标准,包括大小写、变量名检查以及 SQL 注释存在等等;

cxzhq2002的杂记 803

Bytebase 搭建及如何对接 ClickHouse

Bytebase 是一个数据库 CI/CD 工具,提供 SQL 审核、变更、留档、回滚等功能,本文对 Bytebase 的使用做个简要说明。

一只努力的微服务 1912
上一篇: 用 Postgres 就好
下一篇: 什么是数据库 DevOps?
Bytebase
博客等级 码龄5年 1348粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值