优大网

五大优秀的数据库设计工具

数据库的设计主要是针对一个特定的个环境,为了能够满足有效的数据存储和处理等要求,需要构造最优的数据库模式来建立数据库及其对应系统。数据库设计时根据用户的需求,在特定的数据库管理系统上设计和建立数据库的过程,是软件系统开发过程中的关键技术之一。在数据库领域内,通常把使用数据库的各类系统统称为数据库应用系统。

数据库设计的目的是把软件系统中大量的数据按一定的模型组织起来,以实现方便、及时地存储、维护和检索等功能,是软件系统开发和建设的关键和重要组成部分之一,因此数据库设计往往比较复杂,最佳设计不可能一蹴而就,需要一种“反复探寻,逐步求精”的过程。

数据库的设计离不开数据库工具的使用,所以我给大家推荐五款优秀好用的数据库设计软件吧。

1、数据库设计工具——思迈特软件Smartbi

Smartbi能打通各类数据源,丰富的数据连接能力能够从各种数据源中抓取数据进行分析,除了支持大家常用的oracle、sqlserver、mysql等关系型数据库,各种主流大数据库、非关系型数据库、多维数据库、本地文件如:excel、txt、csv。另外还支持自定义编写接口的java数据源。

Smartbi为用户提供了强大而灵活的数据获取能力,一方面继承了需要掌握sql和存储过程等倾向于技术人员的传统数据集,如有:SQL数据集、原生SQL数据集、Java数据集、存储过程数据集、多维数据集。另外也具备可视化界面让业务人员也能实现数据准备,如:自助数据集、透视分析数据集、即席查询数据集、可视化查询数据集。

2、数据库设计工具——DbVisualizer

DbVisualizer集成了一个易用的界面。用户可以用它来浏览复杂的架构和编辑数据。使用户可以管理数据库服务器的实例、整体安全性、以及会话存储。此外,用户还可以计划和执行各种针对Oracle、MySQL、PostgreSQL和SQL Server的操作。

3、数据库设计工具——Vertabelo

作为一款在线的数据库设计工具,团队成员既可以通过Vertabelo轻松地在项目上开展协作,也可以通过电子邮件与团队成员共享访问的各种权限。目前,Vertabelo提供三种不同的访问级别:所有者、编辑者和查看者。

4、数据库设计工具——DbSchema

DbSchema具有友好的用户界面,可简化数据库的设计。它能够为管理大型数据库提供友好的界面布局,以便用户更专注于数据库的特定功能。

如下图所示,DbSchema界面能够让用户自由地浏览各种视图,在布局中拖放表格,或通过双击的方式来编辑表格中的数据。

5、数据库设计工具——Toad Data Modeler

作为一款数据库建模工具,Toad Data Modeler使用到了自动化且直观的工作流程,并且内置了专业的知识库。随着时间的推移,Toad建立了一个大型开发者社区,并成为了广受欢迎的数据库方案。Toad集成了一套用户界面,它可以帮助用户更好地了解现有的数据库和对应的表之间的关系,进而创建各种逻辑和物理的数据模型。

https://baijiahao.baidu.com/s?id=1700330513497209645&wfr=spider&for=pc

office文件所对应的的 Content-type类型

摘自:https://www.jianshu.com/p/4b09c260f9b2

Grafana 的一些使用技巧

文章目录

  • 数值类型的常用指标含义
    • 总量误区
    • 误差
  • 模板变量
    • 模板变量的写法
    • 新建模板变量
    • 模板变量的隐藏玩法
  • grafana 面板编辑器
    • Metrcis
    • Legend
    • Display
  • 高级函数
    • 聚合单个查询的多条匹配曲线的总量 Combine -> sumSeries
    • 时间线迁移 Transform -> timeShift
    • 去除异常值 Filter -> removeAboveValue
    • 重命名函数
    • 多条曲线数值的聚合 Special -> groupByNode
    • 计算多个 Query 组成的成功率 Calculate -> asPercent
  • 其他
    • 报警
    • statsd 打点的限制
    • 后端查询 grafana 数据
    • 匿名模式
  • 最后

grafana 是一个开源的时序性统计和监控平台,支持例如 elasticsearch、graphite、influxdb 等众多的数据源,并以功能强大的界面编辑器著称。我们在前端监控方面引入 grafana 后取得了一些不错的反馈,但是很多用户由于之前没有接触过 grafana 经常会来询问 grafana 的相关问题,因此希望本文对大家在 grafana 使用方面有所帮助。

grafana 的权限分为三个等级:Viewer、Editor 和 Admin,Viewer 只能查看 grafana 已经存在的面板而不能编辑,Editor 可以编辑面板,Admin 则拥有全部权限例如添加数据源、添加插件、增加 API KEY。

对于普通用户来说,Viewer 权限已经足够,本文接下来的内容主要和 Editor 权限有关。由于篇幅有限,本文作为范例的数据源为 graphite,同时也只介绍最常用的 Graph 图表的配置方法。

数值类型的常用指标含义

  • count_ps
    • 每秒的数量
  • count
    • 每十秒的数量
  • mean_90
    • 去除最高10%的数据后的平均值
  • upper_90
    • 去除最高10%的数据后的最高值

总量误区

这里有一个常见的 grafana 误区,因为经常有用数值类型的 count_ps 来顺便获取每秒打点数量的情况,注意在这种情况下,一段时间内的打点总量需要使用 count_ps 的 avg 平均值来乘以这段时间的秒数来计算,而不是通过界面上的 Total 直接读取。

这是因为,在界面上一条曲线能够展示的点的数量是有限的,grafana 会根据你的窗口宽度来决定返回的点数,因为像一天这样的时间段肯定没办法在界面上展示每一秒的点,毕竟总量为86400个点就算带鱼屏也不可能挤得下。对于无法展示的点,grafana 默认是使用 avg 平均值的行为来修正返回点的值,举个栗子,如下图:

image

上图时间范围是一天,上部分为曲线面板的值,下部分为 面饼图表的值,并且上部分图标的曲线为 count 类型(十秒聚一次),可以看到 avg 平均值为 683,那么总量应该为 682 乘以 6 (如果是count_ps 这里则是60) 乘以 60 (一小时60分钟)再乘以 24 (一天24小时)得到589万,与图片中下部分的582万相近,因此上部分 total 的117万是一个完完全全让人误解的值,可以认为它毫无意义进而直接无视掉。

误差

上文中我们计算出来的589万和界面上的582万其实也有一点误差,不过这是可以接受的,因为 statsd 一般情况下是 UDP 的形式(它其实有 TCP 的形式),所以如果想要完全正确的数据,那么最好把打点相关的数据也入库,从数据库里后置查询出来的才是完全可靠。

模板变量

模板变量能够动态地控制面板中的查询语句,是十分重要的功能。经常可以在面板的左上角发现它们,如下图:

image

模板变量的写法

模板变量支持 $name[[name]] 的写法,针对 graphite 数据源主要使用前者,例如:stats.timers.fe.test.$key.count_ps

新建模板变量

grafana 界面上齿轮按钮 -> Templating -> 点击 New,即可出现类似如下的界面:

image

本段主要介绍 Query 类型的写法。

  • Name
    • 该变量的名称,不支持特殊字符例如$
  • Refresh
    • 可选NeverOn Dashboard LoadOn Time Range Change
    • 如果该变量的值经常动态增加的话则选 On Time Range Change,否则 On Dashboard Load 就足够了,Query 类型千万不要选 Never,否则变量只会在你点进来编辑变量时才会更新
  • Query
    • 查询语句,例如 stats.timers.fe.test.*
    • 编写时 grafana 不会触发请求,需要在输入框外面点击一下,查询到的值就会显示在下边了

模板变量中的 Query 其实也支持模板变量,例如stats.timers.fe.test.$key.* 这样的语句,会在 $key 变量变化时自动刷新值,是不是有一点 MVVM 的感觉。这个功能用来联动多个模板变量可以大幅度减少 grafana 一次查询的时间。

模板变量的隐藏玩法

模板变量甚至可以用在 grafana 的跳转中,这是连文档中都没有提及的一个隐藏玩法,在 Link 或者 Dashboard 里 URL 中任意位置填入 $name ,那么在用户点击该链接跳转时 grafana 同样会替换该变量来让你跳到正确的链接去。这和其他系统整合起来能够做到很不错的用户体验,例如跳转到 kibana 那边去查询日志。

kibana 和 grafana 的时间范围格式并不一样,可以使用这篇文章 中的 chrome 插件来解决。

另外,Custom 模板变量可以允许用户在变量下拉框中自行输入值,也是一个经常用到的值,配合模板变量会和当前链接中的 querystring 部分的var-${name} 同步,配合起来可以轻松地从第三方系统中跳转到正确的 grafana 面板中来

grafana 面板编辑器

以 Editor 权限的账号进入到任意面板中,点击某个图表继而点击小弹窗中的 Edit 按钮,即可进入图表的编辑器界面。对于编辑器本文只介绍图表的重要配置,Metrics,Legend 和 Display

Metrcis

image
  • 编辑模式
    • 上图箭头指向的 toggle editor mode 可以控制编辑模式,关闭则需要手动输入查询语句,开启则是如上图的可以在界面上动态增删改的模式。
  • 数据源
    • Panel data source 一定要选对,否则查不到对应的路径,并且很有可能冒出来 Mock 数据让人一脸懵逼。
image

开启动态编辑模式时可以在点击上图中每个框框,这时 grafana 会自动加载该位置在数据源中的值,并且你也可以在这里选择模板变量来动态控制。

image

点击尾巴上的加号,会冒出来对应数据源的函数,可以做一些高级的功能,这个也是本文下半部分的重点,稍后再做介绍。graphite 的函数比较多,其他数据源会少一些。

Legend

Legend 主要控制曲线的名称和值的展示,比较简单,这里列出一下他们的含义

  • As Table
    • 是否以表格形式展示
  • To the right
    • 是展示在图表右边还是在下面
  • Width
    • 默认不填会自动伸缩,否则强制限定宽度
  • Min
    • 面板时间段内的最小值
  • Avg
    • 面板时间段内的平均值
  • Total
    • 面板时间段内的值的总量,如上文所说获取数值类型的总量时这个 Total 是一个很让人误解的参数
  • Max
    • 面板时间段内的最大值
  • Current
    • 面板时间段内的当前值

Display

Display 控制图表的点和线的展示,有一些比较重要的参数

  • Draw Modes -> Lines
    • 是否绘制点之间的线段
  • Draw Modes -> Points
    • 是否绘制点
  • Hover info -> Mode
    • 悬浮面板上展示的方式,值为 All serires(展示该时间点的所有线段的值)和 single(只展示鼠标指着的那一条线段)
  • Hover info -> Sort Order
    • 悬浮面板上线条的排序,一般选择 Decreasing
  • Stacking & Null value -> Null value
    • 这个比较重要,需要根据点的密度来动态决定,如果点少很容易让人误解两个点中间也存在点。
    • 点多时,选择 connected
    • 点少时,选择 null

高级函数

以 graphite 为例子,打点路径中的 KEY 只支持大小写字母、数字、中划线和下划线,这会导致前端的路径(经常包含 # 和 :path)存不下来,因此我们只能提前转译,例如将 # 转译为 ANCHOR,将 :path 转译为 PATH ,再将 / 转译为 -,这样在变量模板中展示的就是比较怪异的前端路径,不过好在我们有函数,可以