标签 数据库 下的文章

 title=

Calcite 是一个数据框架,它允许你创建自定义数据库功能,微软开发者 Atri Sharma 在 Apache 2016 年 11 月 14-16 日在西班牙塞维利亚举行的 Big Data Europe 中对此进行了讲演。

Apache Calcite 数据管理框架包含了典型的数据库管理系统的许多部分,但省略了如数据的存储和处理数据的算法等其他部分。 Microsoft 的 Azure Data Lake 的软件工程师 Atri Sharma 在西班牙塞维利亚的 Apache:Big Data 会议上的演讲中讨论了使用 Apache Calcite 的高级查询规划能力。我们与 Sharma 讨论了解有关 Calcite 的更多信息,以及现有程序如何利用其功能。

Linux.com:你能提供一些关于 Apache Calcite 的背景吗? 它有什么作用?

Atri Sharma:Calcite 是一个框架,它是许多数据库内核的基础。Calcite 允许你构建自定义的数据库功能来使用 Calcite 所需的资源。例如,Hive 使用 Calcite 进行基于成本的查询优化、Drill 和 Kylin 使用 Calcite 进行 SQL 解析和优化、Apex 使用 Calcite 进行流式 SQL。

Linux.com:有哪些是使得 Apache Calcite 与其他框架不同的特性?

Atri:Calcite 是独一无二的,它允许你建立自己的数据平台。 Calcite 不直接管理你的数据,而是允许你使用 Calcite 的库来定义你自己的组件。 例如,它允许使用 Calcite 中可用的 Planner 定义你的自定义查询优化器,而不是提供通用查询优化器。

Linux.com:Apache Calcite 本身不会存储或处理数据。 它如何影响程序开发?

Atri:Calcite 是数据库内核中的依赖项。它针对的是希望扩展其功能,而无需从头开始编写大量功能的的数据管理平台。

Linux.com:谁应该使用它? 你能举几个例子吗?**

Atri:任何旨在扩展其功能的数据管理平台都应使用 Calcite。 我们是你下一个高性能数据库的基础!

具体来说,我认为最大的例子是 Hive 使用 Calcite 用于查询优化、Flink 解析和流 SQL 处理。 Hive 和 Flink 是成熟的数据管理引擎,并将 Calcite 用于相当专业的用途。这是对 Calcite 应用进一步加强数据管理平台核心的一个好的案例研究。

Linux.com:你有哪些期待的新功能?

Atri:流式 SQL 增强是令我非常兴奋的事情。这些功能令人兴奋,因为它们将使 Calcite 的用户能够更快地开发实时流式应用程序,并且这些程序的强大和功能将是多方面的。流式应用程序是新的事实,并且在流式 SQL 中具有查询优化的优点对于大部分人将是非常有用的。此外,关于暂存表的讨论还在进行,所以请继续关注!


via: https://www.linux.com/news/build-strong-real-time-streaming-apps-apache-calcite

作者:AMBER ANKERHOLZ 译者:geekpi 校对:wxy

本文由 LCTT 组织编译,Linux中国 荣誉推出

MariaDB 是 MySQL 数据库的自由开源分支,与 MySQL 在设计思想上同出一源,在未来仍将是自由且开源的。

在这篇博文中,我将会介绍如何在当前使用最广的 RHEL/CentOS 和 Fedora 发行版上安装 MariaDB 10.1 稳定版。

目前了解到的情况是:Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。

在本文中需要注意的是,我们假定您能够在服务器中使用 root 帐号工作,或者可以使用 sudo 命令运行任何命令。

第一步:添加 MariaDB yum 仓库

1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。

# vi /etc/yum.repos.d/MariaDB.repo

根据您操作系统版本,选择下面的相应内容添加到文件的末尾。

在 CentOS 7 中安装

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

在 RHEL 7 中安装

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Add MariaDB Yum Repo

添加 MariaDB YUM 仓库

第二步:在 CentOS 7 中安装 MariaDB

2、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。

# yum install MariaDB-server MariaDB-client -y

Install MariaDB in CentOS 7

在 CentOS 7 中安装 MariaDB

3、 MariaDB 包安装完毕后,立即启动数据库服务守护进程,并可以通过下面的操作设置,在操作系统重启后自动启动服务。

# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb

Start MariaDB Service in CentOS 7

在 CentOS 7 中启动 MariaDB 服务

第三步:在 CentOS 7 中对 MariaDB 进行安全配置

4、 现在可以通过以下操作进行安全配置:设置 MariaDB 的 root 账户密码,禁用 root 远程登录,删除测试数据库以及测试帐号,最后需要使用下面的命令重新加载权限。

# mysql_secure_installation

Secure MySQL in CentOS 7

CentOS 7 中的 MySQL 安全配置

5、 在配置完数据库的安全配置后,你可能想检查下 MariaDB 的特性,比如:版本号、默认参数列表、以及通过 MariaDB 命令行登录。如下所示:

# mysql -V
# mysqld --print-defaults
# mysql -u root -p

Verify MySQL Version

检查 MySQL 版本信息

第四步:学习 MariaDB 管理

如果你刚开始学习使用 MySQL/MariaDB,可以通过以下指南学习:

  1. 新手学习 MySQL / MariaDB(一)
  2. 新手学习 MySQL / MariaDB(二)
  3. MySQL 数据库基础管理命令(三)
  4. 20 MySQL 管理命令 Mysqladmin(四)

同样查看下面的文档学习如何优化你的 MySQL/MariaDB 服务,并使用工具监控数据库的活动情况。

  1. 15 个 MySQL/MariaDB 调优技巧
  2. 4 监控 MySQL/MariaDB 数据库的工具

文章到此就结束了,本文内容比较浅显,文中主要展示了如何在 RHEL/CentOS 和 Fefora 操作系统中安装 MariaDB 10.1 稳定版。您可以通过下面的联系方式将您遇到的任何问题或者想法发给我们。


作者简介: Aaron Kill 是 Linux 和开源软件的狂热爱好者,即将成为一名 Linux 系统管理员和网站开发工程师,现在是 TecMint 的原创作者,喜欢使用电脑工作并且热衷分享知识。


via: http://www.tecmint.com/install-mariadb-in-centos-7/

作者:Aaron Kili 译者:beyondworld 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

database analytics platform MapD

麻省理工学院计算机科学与人工智能实验室(CSAIL)的前研究员开发了一款名为 MapD 的数据库分析平台。该平台使用 GPU 而不是 CPU ,可在几毫秒内查询和映射数十亿条数据。

人们通常将 GPU 与图像处理和游戏相关联。然而,现代 GPU 中高效的核心和处理单元也可以用于通用计算应用。以前在 CSAIL 工作的 Todd Mostak 开发了 MapD,它能在毫秒内处理数十亿条数据。

Mostak 声称 他的 MapD 比由 CPU 驱动的传统数据库管理系统的快 100 倍。该平台可以在短时间内处理并可视化大量数据,并且被处理的数据的参数可以很容易地修改。

MapD 将所有数据缓存在多个 GPU 上,而不是存储在某些 CPU 上。每个 GPU 被给予不同的缓冲池以节省时间。通过此过程,系统可以提供比 CPU 驱动的数据库系统快两到三倍的性能。

许多公司客户已经开始使用 Mostak 的 MapD。像 Verizon 这样的电信公司据说也在为其内部研发尝试该数据库分析平台。这家电信公司使用 MapD 分析了 8500 万用户的 SIM 卡更新数据库。

除了 Verizon,MapD 还有如社交媒体公司,金融和广告公司的客户。

由 Mostak 领导的创业公司最近从美国中央情报局的投资部门 In-Q-Tel 筹集了一笔资金。你可以期望在不久的将来在不同的领域中使用 MapD 的各种情况。


via: http://opensourceforu.com/2017/01/gpu-powered-database-analytics-platform-query-billions-data-points/

作者:RAJAT KABADE 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

微软发布了它的下一个版本的 SQL Server 数据库的公众预览版,同时支持 Linux 和 Windows。

在今年 3 月,微软发布过 SQL Server for Linux 的一个内部预览版。同时,微软官方说 SQL Server for Linux 是 SQL Server for Windows 版本的一个子集,将可以运行在 Ubuntu 上或作为 Docker 镜像运行(后来补充说内部预览也支持 Red Hat 的 RHEL)。该公司官方称用户购买的 SQL Server 将可以用在 Windows 服务器或 Linux 上,此后不久还说该版本的 SQL Server for Linux 和 for Windows 实际上是同一个。

不过,就在今天(美国时间 11 月 16 日),微软将 SQL Server Next 定位为既可以运行在 Linux ,也可以运行在 Windows 上的一个产品。

微软官方称,运行在 Linux 上和运行在 Windows 上的 SQL Server Next 基于同一份代码基,“有些功能存在平台差异,比如说 Linux 上的文件路径不同于 Windows”,但是这不是两个完全不同的产品。运行在 Linux 上的 SQL Server Next 拥有“关系型数据库引擎的所有主要功能”,这包括堆内在线事务处理(OLTP)、堆内列存储、透明数据加密、全程加密、行级安全等等。

SQL Server for Linux 的公众预览版支持 Ubuntu、Red Hat 的 RHEL、SUSE 的 SLES,也将很快出现在 Azure 虚拟机中和 Docker Hub 上。不过,微软依旧说,支持 Linux 和 Windows 的 SQL Server 的正式版仍然会要到明年中期才能发布。

Linux 下的 SQL Server 公众预览版可以从微软的 SQL Server on Linux 网站上下载到。

众所周知,使用开源软件的公司不会将其自由而强大的 MariaDB 或 MySQL 数据库方案用 SQL Server 来替代,但是微软的 SQL Server 承诺支持 Docker 容器,并允许选择数据类型和开发语言,对于某些场景来说,使用 SQL Server 可以节省成本,提升性能,并增强灵活性。在今年 3 月份发布内部预览版之后,微软宣布有超过 8000 家公司已经在第一周内注册尝试了 SQL Server for Linux,其中位列财富 500 强里的公司超过一半都参与了试用。

Learn to live with Apache Hive in 12 easy steps

Hive 可以让你在 Hadoop 上使用 SQL,但是在分布式系统上优化 SQL 则有所不同。这里是让你可以轻松驾驭 Hive 的12个技巧。

Hive 并不是关系型数据库(RDBMS),但是它大多数时候都表现得像是一个关系型数据库一样,它有表、可以运行 SQL、也支持 JDBC 和 ODBC。

这种表现既有好的一面,也有不好的一面:Hive 并不像关系型数据库那样执行 SQL 查询。我在 Hive 上花费了大量时间,光是我自己在工作中就为了优化它花费了超过80个小时。不说你也知道,我就像呆在蜂巢(Hive)旁边一样脑袋嗡嗡作响。所以,为了让你免受这种痛苦,我决定将它们写出来,以便让你在你的下一个 Hive 项目中逃离这种折磨。

1、不要使用 MapReduce

不管你是不是觉得 Tez、Spark 或 Impala 能行,但是不要指望 MapReduce。它本身就很慢,比 Hive 还慢。如果你用的是 Hortonwork 的版本,你可以在脚本前面写上 set hive.execution.engine=tez ;用 Cloudera 的话,使用 Impala。如果 Impala 不适用的话,我希望到时候可以使用 hive.execution.engine=spark

2、不要在 SQL 中做字符串匹配

绝不要,特别是在 Hive 中!如果你坚持要在 WHERE 语句中使用 LIKE 匹配,就会产生一个跨产品的警告。本来你的查询可能只用几秒钟,但是使用字符串匹配的话就会变成几分钟。最好的办法是使用那些可以在 Hadoop 中进行搜索的工具,可以试试 Elasticsearch 的 Hive 集成版本Lucidwork 的 Solr,以及 Cloudera Search。关系型数据库这方面表现并不好,但是 Hive 则更糟糕。

3、不要用表连接子查询

你最好创建一个临时表,然后对这个临时表进行连接,而不是让 Hive 自己智能处理子查询。即不要这样做:

select a.* from something a inner join 
  (select ... from somethingelse union b select ... from anotherthing c) d 
  on a.key1 = d.key1 and a.key2 = b.key2 where a.condition=1

而是应该这样:

create var_temp as select ... from somethingelse b 
  union select ... from anotherthing c 
and then 
select a.* from something a inner join from var_temp b 
  where a.key1=b.key1 and a.key2=b.key2 where a.condition=1

一般来说,这会比 Hive 自己处理子查询要快许多。

4、使用 Parquet 或 ORC,但是不要转换使用

也就是说,使用 Parquet 或 ORC 而不要用 TEXTFILE。然而,如果你要把文本数据中导入到更具结构性的数据中,应该做一些转换再导入到目标表中。你不应该用 LOAD DATA 将文本文件加载到 ORC 中,而是应该将其加载到一个文本中。

如果你要创建另外一个表,并最终大多数分析都是对它进行的,那么你就该对该表进行 ORC 化,因为转换到 ORC 或 Parquet 要花费很多时间,并不值得将其放到你的 ETL 处理中。如果你有一个简单的普通文本要导入,也没做过任何优化,你应该将其加载到一个临时表并通过 select create 放到 ORC 或 Parquet 中。不过,这有点慢。

5、开关矢量化试试

在你的脚本前面加上 set hive.vectorized.execution.enabled = trueset hive.vectorized.execution.reduce.enabled = true ,然后试着打开或关闭它们看看。因为最近版本的 Hive 的矢量化有点问题。

6、不要在表连接中使用 structs

我必须承认我大脑里面的 SQL 格式还是 SQL-92 时代的,所以我无论如何都不会想到去用 structs。但是如果你做一些超级复杂的操作,比如在联合主键上使用 ON 语句,那么 structs 就很方便。不幸的是,Hive 对它们很不适应,特别是在 ON 语句上。当然,大多数情况下,在较小的数据集和 yields 下是没错误的。在 Tez 里面,你会得到一个有趣的矢量错误。这个限制并未见于我所知的任何文档,也许这是一个探索你的执行引擎内部的好办法。

7、检查你的容器大小

你也许需要为 ImpalaTez 增加你的容器大小。如果有你的节点大小比较大,“推荐的”容器大小可能就不适用于你的系统。你也许需要确保你的 YARN 队列和常规的 YARN 内存大小合适。你也许应该注意默认的队列并不适合所有的常规使用。

8、启用统计

Hive 在表连接时会做一些蠢事,除非启用了统计。你也可以在 Impala 中使用查询提示

9、考虑 MapJoin 优化

如果你分析你的查询,你可能发现最新的 Hive 已经可以足够智能地进行自动优化了。但是你也许需要再调整一下。

10、如果可以,将大表放到最后

如标题。

11、分区总会帮到你,不管多少

如果你有一个出现在许多地方的东西,比如语句中的日期(但不是日期范围)或重复的地点,你也许应该做分区。分区的基本意思是“拆分到它自己的目录里面”,而不是到一个大的文件中去查找。当你在你的 join/where 语句中仅检索 location=’NC’这样一个小数据集时,Hive 就可以在一个文件中查找。此外,和列值不同,你可以在你的 LOAD DATA 语句中加上分区。另外,要记住,HDFS 并不喜欢小文件

12、使用哈希进行列比较

如果你要在每个查询中比较同样的10个字段,可以考虑使用 hash() 来比较它们的校验值。在一个输出表中展示它们也许很有用。注意,在 Hive 0.12 中,哈希功能比较差,0.13中的哈希更好一些。

以上就是我的12点经验,我希望这些能够帮到你,让你从 Hive 的嗡嗡声中逃离出来。

简介

PostgreSQL 是一款强大的,开源的,对象关系型数据库系统。它支持所有的主流操作系统,包括 Linux、Unix(AIX、BSD、HP-UX,SGI IRIX、Mac OS、Solaris、Tru64) 以及 Windows 操作系统。

下面是 Ubuntu 发起者 Mark Shuttleworth 对 PostgreSQL 的一段评价。

PostgreSQL 是一款极赞的数据库系统。刚开始我们在 Launchpad 上使用它的时候,并不确定它能否胜任工作。但我是错了。它很强壮、快速,在各个方面都很专业。

— Mark Shuttleworth.

在这篇简短的指南中,让我们来看看如何在 Ubuntu 15.10 服务器中安装 PostgreSQL 9.4。

安装 PostgreSQL

默认仓库中就有可用的 PostgreSQL。在终端中输入下面的命令安装它。

sudo apt-get install postgresql postgresql-contrib

如果你需要其它的版本,按照下面那样先添加 PostgreSQL 仓库然后再安装。

PostgreSQL apt 仓库 支持 amd64 和 i386 架构的 Ubuntu 长期支持版(10.04、12.04 和 14.04),以及非长期支持版(14.10)。对于其它非长期支持版,该软件包虽然没有完全支持,但使用和 LTS 版本近似的也能正常工作。

Ubuntu 14.10 系统:

新建文件/etc/apt/sources.list.d/pgdg.list

sudo vi /etc/apt/sources.list.d/pgdg.list

用下面一行添加仓库:

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

注意: 上面的库只能用于 Ubuntu 14.10。还没有升级到 Ubuntu 15.04 和 15.10。

对于 Ubuntu 14.04,添加下面一行:

deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

对于 Ubuntu 12.04,添加下面一行:

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

导入库签名密钥:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

更新软件包列表:

sudo apt-get update

然后安装需要的版本。

sudo apt-get install postgresql-9.4

访问 PostgreSQL 命令窗口

默认的数据库名称和数据库用户名称都是 “postgres”。切换到 postgres 用户进行 postgresql 相关的操作:

sudo -u postgres psql postgres

示例输出:

psql (9.4.5)
Type "help" for help.
postgres=#

要退出 postgresql 窗口,在 psql 窗口输入 \q 退出到终端。

设置 “postgres” 用户密码

登录到 postgresql 窗口,

sudo -u postgres psql postgres

用下面的命令为用户 postgres 设置密码:

postgres=# \password postgres 
Enter new password: 
Enter it again: 
postgres=# \q

要安装 PostgreSQL Adminpack 扩展,在 postgresql 窗口输入下面的命令:

sudo -u postgres psql postgres

postgres=# CREATE EXTENSION adminpack;
CREATE EXTENSION

psql 窗口输入 \q 从 postgresql 窗口退回到终端。

创建新用户和数据库

例如,让我们创建一个新的用户,名为 “senthil”,密码是 “ubuntu”,以及名为 “mydb” 的数据库。

sudo -u postgres createuser -D -A -P senthil

sudo -u postgres createdb -O senthil mydb

删除用户和数据库

要删除数据库,首先切换到 postgres 用户:

sudo -u postgres psql postgres

输入命令:

$ drop database <database-name>

要删除一个用户,输入下面的命令:

$ drop user <user-name>

配置 PostgreSQL-MD5 验证

MD5 验证 要求用户提供一个 MD5 加密的密码用于认证。首先编辑 /etc/postgresql/9.4/main/pg\_hba.conf 文件:

sudo vi /etc/postgresql/9.4/main/pg_hba.conf

按照下面所示添加或修改行

[...]
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24          md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
[...]

其中, 192.168.1.0/24 是我的本地网络 IP 地址。用你自己的地址替换。

重启 postgresql 服务以使更改生效:

sudo systemctl restart postgresql

或者,

sudo service postgresql restart

配置 PostgreSQL TCP/IP 配置

默认情况下,没有启用 TCP/IP 连接,因此其它计算机的用户不能访问 postgresql。为了允许其它计算机的用户访问,编辑文件 /etc/postgresql/9.4/main/postgresql.conf:

sudo vi /etc/postgresql/9.4/main/postgresql.conf

找到下面一行:

[...]
#listen_addresses = 'localhost'
[...]
#port = 5432
[...]

取消该行的注释,然后设置你 postgresql 服务器的 IP 地址,或者设置为 ‘*’ 监听所有用户。你应该谨慎设置所有远程用户都可以访问 PostgreSQL。

[...]
listen_addresses = '*'
[...]
port = 5432
[...]

重启 postgresql 服务保存更改:

sudo systemctl restart postgresql

或者,

sudo service postgresql restart

用 phpPgAdmin 管理 PostgreSQL

phpPgAdmin 是基于 web 用 PHP 写的 PostgreSQL 管理工具。

默认仓库中有可用的 phpPgAdmin。用下面的命令安装 phpPgAdmin:

sudo apt-get install phppgadmin

默认情况下,你可以在本地系统的 web 浏览器用 http://localhost/phppgadmin 访问 phppgadmin。

要访问远程系统,在 Ubuntu 15.10 上做如下操作:

编辑文件 /etc/apache2/conf-available/phppgadmin.conf,

sudo vi /etc/apache2/conf-available/phppgadmin.conf

找到 Require local 的一行在这行前面添加 # 注释掉它。

#Require local

添加下面的一行:

allow from all

保存并退出文件。

然后重启 apache 服务。

sudo systemctl restart apache2

对于 Ubuntu 14.10 及之前版本:

编辑 /etc/apache2/conf.d/phppgadmin:

sudo nano /etc/apache2/conf.d/phppgadmin

注释掉下面一行:

[...]
#allow from 127.0.0.0/255.0.0.0 ::1/128

取消下面一行的注释使所有系统都可以访问 phppgadmin。

allow from all

编辑 /etc/apache2/apache2.conf:

sudo vi /etc/apache2/apache2.conf

添加下面一行:

Include /etc/apache2/conf.d/phppgadmin

然后重启 apache 服务。

sudo service apache2 restart

配置 phpPgAdmin

编辑文件 /etc/phppgadmin/config.inc.php, 做以下更改。下面大部分选项都带有解释。认真阅读以便了解为什么要更改这些值。

sudo nano /etc/phppgadmin/config.inc.php

找到下面一行:

$conf['servers'][0]['host'] = '';

按照下面这样更改:

$conf['servers'][0]['host'] = 'localhost';

找到这一行:

$conf['extra_login_security'] = true;

更改值为 false

$conf['extra_login_security'] = false;

找到这一行:

$conf['owned_only'] = false;

更改值为 true

$conf['owned_only'] = true;

保存并关闭文件。重启 postgresql 服务和 Apache 服务。

sudo systemctl restart postgresql

sudo systemctl restart apache2

或者,

sudo service postgresql restart

sudo service apache2 restart

现在打开你的浏览器并导航到 http://ip-address/phppgadmin。你会看到以下截图。

phpPgAdmin

用你之前创建的用户登录。我之前已经创建了一个名为 “senthil” 的用户,密码是 “ubuntu”,因此我以 “senthil” 用户登录。

phpPgAdmin

然后你就可以访问 phppgadmin 面板了。

phpPgAdmin

用 postgres 用户登录:

phpPgAdmin

就是这样。现在你可以用 phppgadmin 可视化创建、删除或者更改数据库了。

加油!


via: http://www.unixmen.com/install-postgresql-9-4-and-phppgadmin-on-ubuntu-15-10/

作者:SK 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出