作者归档: Sergei
MariaDB 基金会连续第四年参加谷歌编程之夏!GSoC 中的 MariaDB 组织是所有属于 MariaDB 生态系统项目的伞形组织,包括 MariaDB Server、MariaDB Connectors 或 MariaDB MaxScale。我们建议的项目想法的完整列表在MariaDB Jira中。今年我们获得了 10 个学生名额(去年是 8 个,2014 年是 5 个,2013 年是 3 个)。结果很好,今年的申请者非常优秀。我们的学生选择了这些项目
针对服务器
- MDEV-7773 聚合存储函数
- MDEV-8947 对 2.x 的 Cassandra 连接器支持
- MDEV-4989 在 mysqlbinlog 中支持 GTID
- MDEV-9711 无填充(NO PAD)排序规则
- MDEV-9197 将条件下推到不可合并的视图/派生表
- MDEV-371 blobs 的唯一索引(服务器端实现)和生成哈希的自适应哈希
- MDEV-371 blobs 的唯一索引(在 MyISAM, Aria, InnoDB, 和 XtraDB 中)
学生: Varun Raiko, 导师: Sanja Byelkin 和 Vicențiu Ciorbaru
学生: Charles Muurmu, 导师: Sergey Petrunia
博客: https://cassandrastorageenginev2.wordpress.com/
学生: Becca Tucker, 导师: Lixun Peng 和 Colin Charles
学生: Daniil Medvedev, 导师: Alexander Barkov
学生: Galina Shalygina, 导师: Igor Babaev 和 Sergey Petrunia
博客: http://gsocmariadbshagalla.blogspot.ru/
学生: Sachin Setiya, 导师: Sergei Golubchik
学生: Shubham Barai, 导师: Jan Lindström 和 Sergei Golubchik
- CONC-125 从和到动态列导入和导出常见数据格式
学生: Kris Massey, 导师: Georg Richter 和 Sanja Byelkin
博客: https://connectorcgsoc2016.wordpress.com/
- MXS-1 将 MaxScale 过滤器转换为真实的 Microsoft SQL Server 语法
学生: Lisa Reilly Brinson, 导师: Markus Mäkelä
博客: https://maxscalefiltergsocproject.wordpress.com
- 为 MariaDB MHA 提供 GTID 支持
学生: Charles Dirk, 导师: Colin Charles
博客: https://mariadbmhagtidgsoc2016.wordpress.com/
许多项目有两个导师,以确保学生总能快速得到问题的答案,并且即使其中一位导师在休假,总有人可以提供帮助。……
通常,当人们提到“SSL”或“TLS”时,它指的不是某个特定的协议,而是一系列协议。维基百科文章有详细介绍,但简而言之——SSL 2.0 和 SSL 3.0 已经废弃,不应再使用(著名的 POODLE 漏洞利用了 SSL 3.0 的缺陷)。TLS 1.0 已经有十六年历史了,虽然仍在被使用,但新的安全标准(例如 PCI DSS v3.1)要求使用 TLS 1.1 或更佳的 TLS 1.2。
MySQL 从 2001 年就开始支持 TLS 1.0。这意味着 MariaDB 从第一天起就支持它,并且从未支持较弱的 SSL 2.0 或 SSL 3.0。……
有时用户会提出一些乍一看似乎没有意义的需求。但当你开始询问时,你会意识到用户是对的,你是错的,实际上这是一个完全合乎逻辑且有效的用例。
当我听说有人请求让触发器在基于行的复制(RBR)的从库上工作时,我经历过这样一个时刻。比如,真的吗?在 RBR 中,触发器所做的所有更改都会作为行事件从主库复制到从库。如果触发器在从库上再次触发,它们会重复更改两次。而且,无论如何,假设只有从库上有触发器(为什么?),在基于语句的复制中,触发器本应在从库上正常运行,不是吗?……
让我从一个小故事开始。你坐在客厅壁炉旁,需要从书房拿本书……呃,不对,抱歉,年代不对。你正在建造一个机械臂,它可以帮你开啤酒或冲咖啡,或者为你提供你选择的任何其他饮料……同时你还在建造下一个机械臂。于是,你——一只手拿着烙铁,另一只手拿着 Arduino——让你弟弟从地下室拿一盒特定的电阻(你没想到用完了)。问题是——你弟弟还小,分不清电阻和呼吸器。……
我认为如果我说 MariaDB 或 MySQL 服务器对服务器系统变量的了解远不止其值,这不会让任何人感到惊讶。事实上,每个变量都可以是仅限于会话或全局范围的,可以是只读或可写的,它都有关联的帮助文本(通过 mysqld –help –verbose 打印),某些变量只接受给定字符串集合中的值(自 MariaDB 10.1.0 起,这个允许值的集合也会通过 mysqld –help –verbose 打印),数值变量有有效值的上下界(这些从未在任何地方打印过),等等。我一直觉得没有办法查询这些信息有点浪费。……
MariaDB 和 MySQL 中最流行的插件类型之一是 INFORMATION_SCHEMA 插件类型。INFORMATION_SCHEMA 插件会向 INFORMATION_SCHEMA 中添加新表。有很多 INFORMATION_SCHEMA 插件,因为它们可以用来向用户展示任何内容,并且非常易于编写。
MariaDB 10.1.1 包含九个 INFORMATION_SCHEMA 插件
- Feedback — 显示匿名的服务器使用信息,并可选择将其发送到配置的 URL。
- Locales — 列出编译进服务器的区域设置,由 Roberto Spadim 实现
- METADATA_LOCK_INFO — 列出服务器中的元数据锁。
……
有时需要有条件地执行某些 SQL 语句。如果您从 PHP(或 Java 或其他)应用程序中执行此操作,这很简单。但是,如果您只有纯 SQL 呢?MariaDB 和 MySQL 在 mysql_fix_privilege_tables.sql 脚本(由 mysql_upgrade 工具应用)中使用了两种技术。
- 创建一个包含 IF 语句的存储过程,调用一次然后删除它。这要求用户拥有 CREATE ROUTINE 权限,并且 mysql.proc 表必须存在且可用(这不一定为真——我们正在从 mysql_upgrade 执行此操作,对吧?)。
- 使用动态 SQL,例如
SET @str = IF (@have_csv = ‘YES’,
‘CREATE TABLE IF NOT EXISTS general_log (
event_time TIMESTAMP(6) NOT NULL,
user_host MEDIUMTEXT NOT NULL,
thread_id BIGINT(21) UNSIGNED NOT NULL,
server_id INTEGER UNSIGNED NOT NULL,
command_type VARCHAR(64) NOT NULL,
argument MEDIUMTEXT NOT NULL
) engine=CSV CHARACTER SET utf8 comment=”General log”‘,
‘SET @dummy = 0’);
……