什么是MySQL?MySQL为什么有两个版本?
MySQL数据库管理系统由瑞典的DataKonsultAB公司研发,该公司被Sun公司收购,现在Sun公司又被Oracle公司收购,因此MySQL目前属于 Oracle 旗下产品。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,一般中小型网站的开发都选择 MySQL 作为网站数据库。
①MySQL数据库是用C和C++语言编写的,以保证源码的可移植性
②支持多个操作系统例如:Windows、Linux、Mac OS等等
③支持多线程,可以充分的利用CPU资源
④为多种编程语言提供API,包括C语言,Java,PHP。Python语言等
⑤MySQL优化了SQL算法,有效的提高了查询速度
⑥MySQL开放源代码且无版权制约,自主性强、使用成本低。
⑧MySQL历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。
针对不同的用户,MySQL分为两种不同的版本:
MySQL Community Server
- 社区版本,免费,但是Mysql不提供官方技术支持。
MySQL Enterprise Edition
- 商业版,该版本是收费版本,可以试用30天,官方提供技术支持
MySQL Cluster
- 集群版,开源免费,可将几个MySQL Server封装成一个Server。
MySQL Cluster CGE
- 高级集群版,需付费。
MySQL Workbench(GUI TOOL)
- 一款专为MySQL设计的ER/数据库建模工具。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。
选型指南:详解8大支持机器学习的数据库
来源:计算机世界
本文中介绍的这些数据库尽管在方法和功能上存在差异,但是都允许用户在数据所在的位置上构建机器学习模型。
选择平台的首要原则是“靠近数据”,让代码靠近数据是保持低延迟的必要条件。
机器学习,特别是深度学习往往会多次遍历所有数据(遍历一次被称为一个epoch)。对于非常大的数据集来说,理想的情况是在存储数据的地方建立模型,这样就不需要大量的数据传输。目前已经有部分数据库在一定程度上支持这种功能。我们会很自然地问到一个问题,即哪些数据库支持内部机器学习,它们又是如何做到的?下面我将对这些数据库进行探讨。
|Amazon Redshift|
Amazon Redshift为托管的PB级数据仓库服务,旨在让使用现有商业智能工具对数据进行分析的工作变得更加简单且经济高效。其专门针对数据集进行了优化,成本合算下来每年每TB不到1000美元。
Amazon Redshift ML可让SQL用户能够更加轻松地使用SQL命令创建、训练和部署机器学习模型。Redshift SQL中的CREATE MODEL命令可定义用于训练和目标列的数据,然后通过同一区域中加密的Amazon S3 bucket将数据传输给Amazon SageMaker Autopilot以用于训练。
在AutoML训练之后,Redshift ML将编译最佳模型并将其注册为Redshift集群中的预测函数。随后,用户可以通过在SELECT语句中调用预测函数的方式调用模型进行推测。
总结:通过SQL语句,Redshift ML可使用SageMaker Autopilot利用指定数据自动创建预测模型。在这过程中,SQL语句会被提取到S3 bucket中。最佳的预测函数会被注册在Redshift集群中。
|BlazingSQL|
BlazingSQL是一个建立在RAPIDS生态系统顶层上的由GPU加速的SQL引擎,虽然是开源项目,但是提供付费服务。RAPIDS为一套得到了Nvidia支持的开源软件库和API,其使用了CUDA并且采用了Apache Arrow列式内存格式。作为RAPIDS的一部分,cuDF为一个类似于Pandas的GPU数据帧库,主要用途是对数据进行加载、连接、聚合、过滤等操作。
开源工具Dask可将Python套件扩展到多台机器上。此外,Dask还可在同一系统或多节点集群中通过多个GPU分发数据和计算。整合了RAPIDS cuDF、XGBoost和RAPIDS cuML的Dask可用于GPU加速的数据分析和机器学习当中。
总结:BlazingSQL可以在Amazon S3的数据湖上运行GPU加速的查询,然后将生成的数据帧传输给cuDF进行数据操作,最后再使用RAPIDS XGBoost和cuML执行机器学习,或是使用PyTorch和TensorFlow执行深度学习。
|谷歌Cloud BigQuery|
BigQuery是谷歌Cloud托管理的PB级数据仓库。用户可以通过BigQuery对大量数据进行近实时分析。BigQuery ML允许用户使用SQL查询在BigQuery中创建和执行机器学习模型。
BigQueryML支持用于预测的线性回归、用于分类的二元多类逻辑回归、用于数据分割的K-均值聚类、用于创建产品推荐系统的矩阵分解、用于执行时间序列预测的时间序列、XGBoost分类和回归模型、分类和回归模型专用的基于TensorFlow的深度神经网络、AutoML Tables、TensorFlow模型导入。用户可以使用来自多个BigQuery数据集的数据模型进行训练和预测。虽然BigQuery ML不会从数据仓库中提取数据,但是用户可以使用CREATE MODEL语句中的TRANSFORM子句,通过BigQuery ML执行特征工程。
总结:BigQuery ML通过SQL语法将谷歌Cloud机器学习引入到了BigQuery数据仓库,从而不从数据仓库中提取数据。
|IBM Db2 Warehouse|
虽然IBM Db2 Warehouse是一个托管的公有云服务,但是用户可以在本地或在私有云中部署它们。作为一个数据仓库,IBM Db2 Warehouse包含有内存数据处理和用于在线分析处理的列式表格等功能。其Netezza技术提供了强大的分析功能,可高效查询数据。此外,IBM Db2 Warehouse的大量的库和函数可以帮助用户获得所需的精确洞察力。
Db2 Warehouse支持Python、R和SQL中的数据库机器学习。IDAX模块中有分析存储程序,包括方差分析、关联规则、数据转换、决策树、诊断、K均值聚类、K近邻、线性回归、元数据管理、naive贝叶斯分类、主要素分析、概率分布、随机抽样、回归树、序列模式与规则,以及参数和非参数统计等等。
总结:IBM Db2 Warehouse包含一系列数据库内SQL分析,例如一些基本的机器学习功能。此外,IBM Db2 Warehouse对R和Python也提供数据库内支持。
|Kinetica|
Kinetica 流数据仓库(Streaming Data Warehouse)将以往的流数据分析与本地的智能和人工智能整合在了一个单一的平台上,所有这些都可以通过API和SQL进行访问。Kinetica为GPU加速数据库,不仅具有快速、分布式、柱状和内存优先等特点,还整合了过滤、可视化和聚合等功能。
为了实现大规模的实时预测分析,Kinetica将机器学习模型和算法与用户的数据集成在一起,并且允许用户对分析数据管道、机器学习模型、数据工程的生命周期以及流计算功能进行优化。Kinetica为GPU加速的机器学习提供了一个全生命周期解决方案,包括管理Jupyter笔记本,通过RAPIDS进行模型训练,以及Kinetica平台中的自动模型部署和推理。
总结:Kinetica为GPU加速的机器学习提供了一个完整的数据库生命周期解决方案,并且可以利用流数据进行预测。
|微软SQL Server|
微软SQL Server机器学习服务在SQL Server RDBMS中支持R、Python、Java、PREDICT T-SQL命令和rx_Predict存储程序,在SQL Server Big Data Clusters中支持SparkML。在R和Python语言中,微软提供了多个用于机器学习的套件和库。用户可以将经过训练的模型存储在数据库中或是数据库外部。Azure SQL Managed Instance支持Python和R专用的Machine Learning Services进行预览。
R语言可以处理来自磁盘和内存中的数据。SQL Server提供了一个扩展框架,以便R、Python和Java代码可以使用SQL Server数据和函数。SQL Server Big Data Clusters可在Kubernetes中运行SQL Server、Spark和HDFS。当SQL Server调用Python代码时,Azure机器学习也可以被调用,生成的模型将被保存在数据库中以用于预测。
总结:当前版本的SQL Server可使用多种编程语言训练和推断机器学习模型。
|甲骨文数据库|
甲骨文云基础设施(OCI) Data Science 是一款托管无服务器平台,可供数据科学团队使用包括Oracle Autonomous Database和Oracle Autonomous Data Warehouse在内的OCI构建、训练和管理机器学习模型。该平台包含有由开放源码社区和Oracle Accelerated Data Science (ADS) Library开发的以Python为中心的工具、库和套件,支持预测模型端到端的生命周期:
数据采集、分析、准备和可视化
特征工程
模型训练(包括Oracle AutoML)
模型评估、解释和说明(包括Oracle MLX)
Oracle Functions中的模型部署
OCI Data Science还与包括Functions、Data Flow、Autonomous Data Warehouse和对象存储等OCI堆栈进行了整合。
目前支持的模型包括:
Oracle AutoML
Keras
Scikit-learn机器学习库
XGBoost
ADSTuner (超参数优化)
此外,ADS还支持MLX(机器学习可解释性)。
总结:甲骨文云基础设施(OCI)可以托管与其数据仓库、对象存储和函数集成的数据科学资源,从而实现完整的模型开发生命周期。
|Vertica|
Vertica分析平台为可扩展的列式存储数据仓库,其有两种运行模式:Enterprise和EON,前一种模式将数据存储在本地组成数据库的节点内的文件系统中,后一种模式将数据存储在公共的计算节点上。
Vertica使用大规模并行运算处理PB级数据,并通过数据并行进行内部机器学习。该产品有8个用于数据准备的内置算法、3个回归算法、4个分类算法、2个聚类算法以及多个模型管理函数,并具备将已训练的TensorFlow和PMML模型导入至其他地方的功能。在导入了模型之后,用户就可以使用它们进行预测。Vertica 还允许用户使用由C++、Java、Python或R等语言编译的自定义扩展程序。此外,用户还可以使用SQL语法进行训练和推理。
总结:Vertica内置了一套优秀的机器学习算法,并且可以导入TensorFlow和PMML模型。用户既可以使用导入的模型进行预测,也可以使用自己训练的模型进行预测。
|其它选择:MindsDB|
如果用户的数据库不支持内置机器学习,那么他们可以使用MindsDB。该款产品集成了6个数据库和5个商业智能工具,支持的数据库包括MariaDB、MySQL、PostgreSQL、ClickHouse、微软SQL Server和Snowflake。目前MindsDB还正在努力与MongoDB整合,2021年晚些时候还将会与流数据库实现集成。MindsDB支持的商业智能工具包括SAS、Qlik Sense、微软Power BI、Looker和Domo。
MindsDB的功能还包括AutoML、AI表和可解释的人工智能(XAI)。用户可以从MindsDB Studio、SQL INSERT语句或Python API调用中调用AutoML训练。用户可以选择使用GPU进行训练,也可以选择创建时间序列模型。
用户可以将模型另存为数据库表,然后从已保存模型专用的SQL SELECT语句、MindsDB Studio或Python API调用中调用它们。此外,用户还可以通过MindsDB Studio对模型质量实现评估、解释和可视化。
与此同时,用户还可以将MindsDB Studio和 Python API 与本地和远程数据源联接在一起。MindsDB还额外提供了一个可在PyTorch上运行的简化版深度学习框架Lightwood。
总结:MindsDB为许多不支持内置机器学习的数据库带来了机器学习功能。
越来越多的数据库开始在内部支持机器学习。虽然机制各不相同,但是有些机制确实性能更加出众。如果拥有大量数据,且需要为采样子集选择适当的模型,那么上面所列的8个数据库,以及支持MindsDB的其他数据库都可以帮助用户为完整的数据集构建模型,并且不需要担心因数据导出导致费用严重超支。
本文来自【计算机世界】,仅代表作者观点。全国党媒信息公共平台提供信息发布及传播服务。
ID:jrtt
值得你学习了解!揭秘九大前沿编程语言
如今,对于编程语言而言,提供一个丰富的开放式源代码,函数库以及框架为基础语言是用户关注的重点。在一些特定项目情况下,市场主流编程语言尽管有大量资源提供,但并不能有效解决用户的特定问题,用户不得不去寻找适合的语言。通过一些编程语言可以提供额外的功能,帮助代码运行速度更快,摈弃无休止的调整和优化。
以下九种语言应该是每个程序员所关注的技术。它们并不是最好的编程语言,有些甚至仅仅在专门项目应用上提供帮助。但这九种编程语言具备上升空间,是值得每一个开发人员研究和学习,或许有一天这些语言成为你的项目必不可少的。
Erlang语言:提供实时系统功能
Erlang是由瑞典电信设备制造商爱立信所辖的计算机科学研究室开发,目的是可以应付大规模开发活动的程序设计语言和运行环境。Erlang于1987年发布正式版本,erlang是函数式语言,提供了9个9的稳定性和超高并发并发性能,于1998年发表开放源代码版本。
Erlang是运作于虚拟机的解释型语言,在程序设计范型上,Erlang属于多重范型编程语言,涵盖函数式、并行及分布式。循序运行的Erlang是一个及早求值,单次赋值和动态类型的函数式编程语言。特别是在实时系统应用上,如移动电话交换机计费系统。
GO语言:简单、动态
Go语言是谷歌2009发布源编程语言,专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
编译后Go代码的运行速度与C语言非常接近,而且编译速度非常快,就像在使用一个交互式语言。现有编程语言均未专门对多核处理器进行优化。Go就是谷歌工程师为这类程序编写的一种语言。它不是针对编程初学者设计的,但学习使用它也不是非常困难。Go支持面向对象,而且具有真正的封装和反射 等功能,可以被用于网络服务器、存储系统和数据库中。
Groovy语言: Java编程的精华
Groovy是用于Java虚拟机的一种敏捷的动态语言,作为一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。Groovy语言提供程序员来编写简单的程序,充分利用现有的Java代码的能力。
构建在强大的Java语言之上并添加了从Python,Ruby和Smalltalk等语言中诸多特征,例如动态类型转换、闭包和元编程支持。不仅如此,紧密联系到Java JA件,Groovy的代码运行像一个动态类型的脚本语言,可全面进入到静态类型的Java对象的数据。
Ocaml语言:复杂数据层次“魔术师”
OCaml最早称为Objective Caml,是Caml编程语言的主要实现,开发工具包含交互式顶层解释器,字节码编译器以及最优本地代码编译器。Ocaml有一个巨大标准库,使得可以像Python或者Perl语言一样可以方便地开发各种应用程序。
对于程序员来说,OCaml由编程语言社区努力推广,并提供有目标的支持,自动内存管理和设备的便携性。目前可从苹果的App Store获下载OCaml应用程序。通过OCaml语言的应用特性,可以建立一个教代数的网站。
CoffeeScript:JS转译语言
CoffeeScript并非一种语言,受到Ruby、Python与Haskell等语言的启发,增强了JavaScript的简洁性与可读性的转译器。同时新增更复杂的功能,例如列表内涵、模式匹配等。使用CoffeeScript可以体会编程泛型的表达方式,减少逗号、括弧这些只是增强表达能力的一些副作用。
Scala语言:运行JVM上函数程序
Scala运行在JVM上,兼容现有的Java程序,集成面向对象编程和函数式编程的各种特性。Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。
Scala还包含了若干函数式语言的关键概念,包括高阶函数(Higher-Order Function)、局部套用(Currying)、嵌套函数(Nested Function)、序列解读(Sequence Comprehensions)等。Scala是静态类型的,这就允许它提供泛型类、内部类、甚至多态方法(Polymorphic Method)。另外值得一提的是,Scala被特意设计成能够与Java和.NET互操作。
Dart语言:非JS的JavaScript
Dart从设计之初就为配合现代web整体运作而考虑,开发团队也在持续改进Dart向JavaScript转换的快速编译器。JavaScript适用于为网页新增基本的交互性,但如果面对成千上万行代码弱点显而易见。谷歌设计Dart这门新语言的缘由,Dart与 JavaScipt双管齐下,用于优化Web编程开发。
Dart与JavaScript相似,用到了类似于C语言的语法和关键词。最明显的区别在于JavaScript是一种基于原型的编程语言,而Dart和C++、Java类似,需要使用类和接口来声明对象。开发人员可以选用Dart来声明静态类型的变量,与JavaScript相比,HTML5开发者们尝试一下Dart语言在WEB编写代码的速度上更胜一筹。
Haskell语言:简单纯粹的函数编程
对于有20年的发展,Haskell语言是一种标准化的,通用纯函数式编程语言,有非限定性语义和强静态类型。作为函数式编程语言,主要控制结构是函数,具有“证明即程序、命题为类型”的特征。社区在宣传时一直是将其定位为一门通用程序设计语言的。Haskell是一种程序语言。特别是多态类型,懒惰的,纯的函数式语言,与大多数其它编程语言不同。 该语言被命名为Haskell Brooks Curry。它是以数学逻辑为基础的函数式语言,基于lambda演算。
Julia语言
Julia语言:更快速度的Python
科学计算传统上需要最高的性能,但是领域内的专家们在日常工作中更多的会选择慢一些的动态语言。现代语言设计和编译器技术使目标成为可能:最大化的消除性能抉择和为原型设计(prototyping)提供一个富有成效的单一环境并且足够有效率的来运用性能加强的应用。面向科学计算的高性能动态高级程序设计语言,像Python般通用Julia编程语言扮演这个角色:灵活的动态语言,科学和数值计算方面的优异表现,以及比得上传统静态类型语言的优异性能。
Julia的特性包括可选的输入,多重分派(Multiple dispatch)和优异性能,实现了使用类型推断和JIT(just-in-time)编译,使用LLVM执行。它采用多范式的,命令式的特征组合,函数化的并且面向对象的编程方式。同时Julia保持了MATLAB在高水平数值计算方面的轻松表现,但突破在一般编程上的局限,不仅建立在数学编程语言上的血统,而且借鉴了流行的动态语言如Lisp, Perl, Python, Lua和Ruby的优点。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。