SchemaCrawler 是一个免费的数据库模式发现和理解工具。SchemaCrawler 很好地组合了用于数据治理的有用功能。您可以使用正则表达式搜索数据库模式对象,并以可读的文本格式输出模式和数据。输出用于数据库文档,旨在与其他数据库模式进行差异化。SchemaCrawler 还生成模式图。您可以对数据库执行任何标准脚本语言的脚本。您可以使用lint找到潜在的模式设计问题。
SchemaCrawler 几乎支持所有具有 JDBC 驱动程序的数据库,但为方便起见,它与一些常用 RDBMS 系统的驱动程序捆绑在一起。SchemaCrawler 适用于任何支持 Java SE 8 或更高版本的操作系统。
SchemaCrawler 命令行
SchemaCrawler 附带一组命令行工具,允许将数据库元数据输出为纯文本、 HTML5、 带有嵌入式图表的 HTML5 、JavaScript 对象表示法 (JSON)或YAML。HTML5 输出是有效 XML(可由 XML 工具或 XSLT 操作)和可在浏览器中查看的 HTML 的组合。所有格式都设计为易于区分,或发现与可能以相同格式输出的其他模式的差异。
SchemaCrawler 具有grep功能,允许您使用正则表达式搜索表名和列名。SchemaCrawler 能够创建DOT 格式的实体关系图, Graphviz可以将其转换为模式图。SchemaCrawler 具有强大的脚本编写能力,可以使用 JavaScript、Groovy、Ruby 或 Python。为脚本上下文提供实时连接,以允许您从数据库中进行选择甚至修改。下载时提供了所有这些示例。
SchemaCrawler 与模板引擎集成,例如Apache Velocity、Thymeleaf、Apache <#FreeMarker>和Mustache。您可以编写模板来生成 SQL 脚本或任何其他文本输出。但是,您需要单独下载模板引擎,因为它们不是 SchemaCrawler 下载的一部分。
通过实时在线教程探索 SchemaCrawler 命令行。本教程适用于任何浏览器,无需任何软件或插件。
模式爬虫 API
SchemaCrawler 也是一个 Java API,它使处理数据库元数据就像处理普通的旧 Java 对象一样容易。Java 程序员需要访问数据库元数据
为了动态生成SQL语句
当以编程方式确定给定 RDBMS 的功能时
在数据库中查找表和列的名称和类型时
程序员可以使用 JDBC 获取数据库元数据,但原始 JDBC API 数据库元数据作为结果集而不是 Java 对象返回。此外,程序员仍然负责管理资源、映射到对象结构和处理异常。这使得在涉及元数据时使用 JDBC API 非常麻烦。此外,JDBC API 不是很一致。例如,要查找表的类型,您会查看TABLE_TYPE,它有一个字符串值,但对于过程,PROCEDURE_TYPE它是一个整数。另一个例子是getCatalogs()调用,它返回一个只有一列的结果集,与之相反,getStringFunctions()它返回一个包含函数名称列表的字符串,用逗号分隔。
SchemaCrawler 试图通过提供一致且可用的 API 来解决其中的一些问题。数据库元数据以普通旧 Java 对象 (POJO) 的形式提供。SchemaCrawler API 的一致性和可用性的一些示例是:
Table是一个包含对象集合的Column对象,不需要您进行额外的调用
布尔值是 Java 布尔值,不是整数、字符串,也不是空值与非空值,枚举值是 Java 枚举,不是整数
列表总是返回为java.util.List
您不必担心数据库资源或异常处理
Table您可以使用标准的 Java 编程习惯用法 - 例如,您可以Column使用getParent()
SchemaCrawler 超越了使用 JDBC 提供的功能,还可以提供有关数据库触发器、序列和同义词的信息。
SchemaCrawler 是免费的开源 API,可在多种许可下使用。SchemaCrawler 是用 Java 编写的,使其与操作系统无关。因为它利用了 JDBC,所以它也是独立于数据库的。它故意没有任何特定于 RDBMS 的代码。SchemaCrawler 允许您比较来自不同供应商的两个不同数据库服务器甚至两个不同数据库系统之间的结构。
SchemaCrawler 为以下数据库对象提供元数据:
列数据类型
表和视图
列
主键
索引
表约束
触发器
外键
例程,包括函数和存储过程
序列
同义词
特权和补助
使用python开发中小型的应用程序软件.exe确实比较简洁方便。对于日常经常重复的办公操作,比如表格处理,图片处理,文档处理等等工作,如果将这些操作流程由人工替换成软件来操作,将极大地提高工作效率。
比如每天需要将前一天的产生的数据,以及截止前一天产生的数据,进行整理,并输出所需的图表以及固定模板的word文档,如果由人工处理,可能需要半小时,一小时,两小时的功夫。如果编写一个针对该项工作的应用程序,也就是几秒钟的时间,就可以输出所需的结果,不仅省时,还不会出错。
关键的是,使用python开发这样的具体化的小问题的程序软件,比较快捷简便,还可以做出带GUI的界面来。不需多少时间,就能开发出用户所需的功能,然后pyinstaller打包成exe程序,就可以随心所欲地使用。
12306 这个软件花费了3个亿,很多人说,这个软件界面如此简陋,还经常崩溃,居然要花费3个亿。
但是大家可能不知道,中国最牛的软件系统就是12306。大家可能以为12306随便搜索一下,几趟车就显示出来了,但这背后的计算是超级复杂的;它得根据余票、起止站、身份信息等寻找合适车次,毕竟全国所有车次都得知道,而且还要与各车站售票系统连接,以免出现因为数据时差问题,导致买到一张早已售出的车票。
12306还要在15分钟内完成交易,并且未售出的票,要尽快回到系统余票库,大家要知道,在同一时间内全国起码有百万人同时在购票,12306要实时调动数据,以防止购票人买到相同的票,除此之外,还需要计算卖票之后如何分配下一段区间,以及 线上购票和线下协调相的问题,也就是说线上出了一张票,线下售票系统也要能够做到实时更新;
这还是在有上亿人同时点开12306(春运)查数据、预防黑客、拦截恶意刷票软件、每年多次调图、有新线加入的基础上的;
另外,大家要知道,12306只是一个前端,后端还是要接入铁路原有的售票系统的,而12306崩溃,其实是前端崩溃,或者是前端排队人数太多,排队崩溃,但是真正负责出票的售票系统是没有崩溃的,仍然以每秒几百到上千张的速度出票。大家线下购票的车站窗口,是直接接入这个售票系统的后端,所以很少会崩溃。
12306还有一个高负载导致崩溃的原因,
是查询量,12306每天要处理庞大的查询量,这里面还有很多是无效请求。
2020年春运数据,一天1495亿次,每天就算18个小时,平均每小时83亿次,每秒是230万次。但是请注意,这是平均数,大家抢票都有个集中时间段,比如早上8点放票,那这个时间段的流量可能是10倍于平均流量,那就是2300万次。如此庞大的查询量,对于软件的承载力是一个非常大的考验,这对于技术架构的要求非常高。
我们都知道,网站发生瘫痪主要因为过多的http请求导致的服务器过载,而电商网站为此会采用分布式数据处理的技术手段,但12306显然是无法这样做的,因为这是实时数据,需要实时处理,其需要的技术架构,对于用户量极大的火车票客票系统来说,3.3亿的投入也并不算多。
这不只是靠堆服务器就能解决的事情了,一个优秀的架构设计就非常关键,需要设计非常复杂的分布式机制和多级的缓存来保障服务稳定运行又不会出现异常,与此同时还要进行各类安全风控等等,最后12306是清华和铁科一起搞的,某公司并非核心作用。
做一件大好事,除以14亿就是很小; 做一件小坏事,乘以14亿就很大, 如果发生一例买票出问题情况,那发生的连带效应,是难以估计的。
【避坑!#苹果手机中的App刺客#,你被坑过吗?】
流氓软件是指 “ 免费试用+订阅制 APP ”。它们通常都是大摇大摆上架 App Store,然后依靠 ——“ 免费下载,试用三天后,付费订阅继续使用 ” 的方式来盈利。这类软件,一般是些照片编辑器、手电筒、壁纸、扫描仪等小工具。简单概括它们的特点就是,不好用,也没啥用。
在 2022 年,不仅国外,国内也依然有大把用户中招。比如有一款计算器 APP,和以前的官方版很像,很多人下载时就会误以为是官方 APP。功能没啥特别的,收费却要 58 块钱 / 每月。尤其是,现在很多软件,还存在双重订阅的现象。
比如,我们在某视频平台办会员,就会在平台和 App Store 中出现两个订阅管理。而只取消其中的一个,可能还是不管用的,必须保证两个同时取消,才算放心。这明显不合逻辑,且被坑的人也不在少数,叫一声 APP 刺客,不过分吧。总而言之,无论在苹果还是安卓,总有几颗老鼠屎扰乱软件生态。(差评)