精华内容
下载资源
问答
  • No-SQL正淘汰SQL

    千次阅读 2020-02-18 16:52:00
    全文共1631字,预计学习...该企业家声称,MongoDB和Redis 这样受欢迎的 No-SQL 数据库,会慢慢地将基于SQL的数据库淘汰。因此,身为数据科学家,学习SQL是“抱残守缺” 看到他的邮件我非常震惊,他是怎么得出这么...

    全文共1631字,预计学习时长5分钟

    来源:Pexels

     

    No-SQL正淘汰SQL?

     

    上周,朋友给我转发了某成功企业家的邮件,里面宣称“SQL已经过时了”。

     

    该企业家声称,MongoDB和Redis 这样受欢迎的 No-SQL 数据库,会慢慢地将基于SQL的数据库淘汰。因此,身为数据科学家,学习SQL是“抱残守缺”

     

    看到他的邮件我非常震惊,他是怎么得出这么离谱的结论的?但这也令我好奇......别人会不会也这样误解了呢?该企业家有大量拥趸,他本人也直言不讳:新的数据科学家收到建议别再学习SQL了吗?

     

    可能其他人也认为SQL正在被淘汰,在此,我想公开向该企业家作出回应。

     

    在从事数据科学的职业生涯里,学习SQL非常有必要。No-SQL无法撼动学习SQL的意义。

     

    基本上,有两个理由可以保证SQL在未来几十年都不会过时。

     

    理由1:No-SQL数据库不会取代Presto、Redshift、BigQuery等分析数据库

     

    不论应用程序使用的是MySQL这样的SQL后端,还是像MongoDB那样的No-SQL后端,该后端中的数据最终都会被加载到专门的分析数据库中,比如Redshift、Snowflake、BigQuery或 Presto。

    分析数据库平台的示例体系结构:SQL和NoSQL

     

    公司为什么把数据转移到Redshift这样的专栏存储中?因为专栏存储能更快地运行分析查询,不论是NoSQL还是像MySQL这样的行存储数据库。事实上,我敢打赌,专栏存储数据库的普及速度与NoSQL数据库一样快。

     

    因此,像NoSQL以及其他数据库还有匹配的应用程序,它们的技术通常与数据科学家无关,因为他们不使用数据库应用程序。当然也有一些例外,将在后文讨论。

     

    理由2:NOSQL数据库的优势并非不支持SQL语言

     

    事实证明,如果支持基于SQL的查询引擎是有意义的,那么No-SQL存储可以实现它。类似地,SQL数据库也可以支持NoSQL查询语言,但是它们选择不支持。

     

    那么,为什么专栏存储数据库有意选择提供SQL接口呢?

     

    他们做出这样的选择,是因为SQL语言在表达数据操作指令上非常强大。

     

    以一个简单的查询为例,它是NoSQL数据库下MongoDB的计算集合中的文档数量。

     

    注意:MongoDB中的文档类似于行,而集合则类似于表。

     

    db.sales.aggregate( [
     {
       $group: {
          _id: null,
          count: { $sum: 1 }
       }
     }
    ] )

    将其与等效SQL进行比较。

     

    select count(1) from sales

     

    显而易见,对于想要提取数据的人来说,SQL语言是更好的选择。NoSQL数据库支持不同的语言,因为在数据库接口的应用程序库方面,正确构造SQL比较困难。

     

    前文提到过,应用程序数据库的技术与数据科学家无关,但是这一规则有一些例外。我的第一家公司实际上没有像Redshift那样的分析数据库,所以必须直接查询应用程序的数据库。更准确地说,是在查询应用程序数据库的读副本。

     

    该公司的应用程序还使用了No-SQL数据库Redis,而且不止一次我需要直接从Redis提取数据,所以确实需要学习Redis的NoSQL API的一些组件。

     

     

    因此,在主要应用程序专门使用NoSQL数据库的环境中,学习哪种SQL可能都无关紧要。但在非常罕见情况下,随着公司的成长,他们几乎肯定会投资建立一个支持SQL的分栏存储分析数据库。

     

    感谢阅读!希望对大家有帮助~

    留言 点赞 关注

    我们一起分享AI学习与发展的干货
    欢迎关注全平台AI垂类自媒体 “读芯术”

    (添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

    展开全文
  • elasticsearch(es-sql)的安装和使用

    千次阅读 2018-09-13 15:34:49
    (如果搭建的是6.2.4版本的可以去这个地址去下载,有es的安装包以及es-sql、kibana、nodejs、sql-query等: https://download.csdn.net/download/weixin_38411472/10664023) 一.elasticsearch的安装文档: 1....

    elasticsearch的搭建和插件使用

    (如果搭建的是6.2.4版本的可以去这个地址去下载,有es的安装包以及es-sql、kibana、nodejs、sql-query等:
    https://download.csdn.net/download/weixin_38411472/10664023

    一.elasticsearch的安装文档:

    1.安装java(因为es底层是Java写的)

    2.Es官网下载地址(选择需要的环境,我使用的是6.2.4的):

    https://www.elastic.co/downloads/elasticsearch

    3.在解压后的config/elasticsearch.yml文件添加以下内容:

    cluster.name: elasticsearch                      #es的集群名字
    node.name: node-1                             #节点名字
    path.data: /mnt/ESData/data                   #数据存储地址
    path.logs: /mnt/ESData/logs                   #日志存储的地址
    network.bind_host: 10.0.0.0                   #主机地址
    network.publish_host: 10.0.0.0                #主机地址
    network.host:10.0.0.0                         #主机地址
    http.port: 9200                               #端口号
    node.master: true                             #是否可选master
    node.data: true                               #是否存储元数据
    discovery.zen.minimum_master_nodes: 1         #极端的数量
    bootstrap.memory_lock: false                  #是否锁住使用内存
    bootstrap.system_call_filter: false           #性能配置
    http.cors.enabled: true                       #性能配置
    http.cors.allow-origin: "*"                   #性能配置
    indices.fielddata.cache.size:  20%            #缓存数据达到比例后删除缓存数据
    

    4.在解压后的config/jvm.options中修改以下配置

    -Xms10g
    -Xmx10g
    注意:如果不修改此配置在写入一定的数据之后再写入数据的时候就会非常的慢,所以需要根据服务器对的配置将此增加
    

    5.在启动之前需要在root用户下修改系统配置

    1.在vi /etc/security/limits.conf中增加
            * soft nofile 65536
            * hard nofile 65536
            * soft  nproc 200000
            * hard  nproc 200000
    
    2.在vi /etc/security/limits.d/20-nproc.conf中修改下面的值
        *          soft    nproc     400000
    3.在vi /etc/sysctl.conf末尾增加
        vm.max_map_count=655360
    4.重启服务器即可
    

    6.修改好以上配置文件需要创建普通用户

    1.创建用户:useradd es
    2.添加密码(如果测试使用则不需要):passwd es
    3.给所有需要的文件添加用户权限:chown -R es:es /path/to/logs/
    (包括es的解压目录和日志、元数据的存储目录等)
    

    7.在普通用户下的解压目录后的bin目录下启动即可:

    第一次后台启动:./elasticsearch
    如果没有问题后台启动:nohup ./elasticsearch &
    

    8.访问ip:9200如果出现一下信息则安装成功:

    {
      "name" : "node-1",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "loD4xWIrQYuKxIE5axLCXg",
      "version" : {
        "number" : "6.2.4",
        "build_hash" : "ccec39f",
        "build_date" : "2018-04-12T20:37:28.497551Z",
        "build_snapshot" : false,
        "lucene_version" : "7.2.1",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    二.ES的插件kibana的搭建

    1.在es安装和启动成功后、下载对应的版本

    2.解压后在config/kibana.yml中添加以下内容即可:

    server.port: 5601                                 端口号
    server.host: "10.0.0.0"                      主机ip
    elasticsearch.url: "http://10.0.0.0:9200"    连接的es地址
    kibana.index: ".kibana6"                          生成索引
    

    3.在bin目录下启动即可

    第一次后台启动:./kibana
    如果没有问题后台启动:nohup ./kibana &
    

    4.访问IP:端口显示如下则安装成功:

    如果没有报错则安装成功
    

    5.在dev tools中的常用的命令:

    1.查看es中的所有索引:get _cat/indices
    2.删除索引:delete index_name
    3.查看某个索引的内容:get index_name/_search
    4.详细的内容在我文档有记录,后面会有地址
    

    三.Es-sql的安装和使用:

    1.安装nodejs环境:

    1.解压后执行以下命令:
    sudo ln -s /mnt/hadoop/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node
    sudo ln -s /mnt/hadoop/node-v8.9.3-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm 
    注意:如果是在普通用户下需要将/usr/目录权限改成普通用户
    如:chown -R es:es /usr/ (es是普通用户的名字)
    2.配置环境变量(普通用户下直接添加到vi ~/.bash_profile即可):
    export PATH=/usr/local/bin/node:$PATH
    3.配置完环境变量source一下:
    source ~/.bash_profile
    4.检查是否配置成功:
    node -v (出现版本号则成功)
    npm -v (出现版本号则成功)   
    5.安装映像
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    6.执行npm install express --save命令进行测试,没有出现error则安装成功:
    

    2.配置es的es-sql文件:

    下载elasticsearch-sql-6.2.4.0并解压,修改名字为sql。放在es解压目录的plugins文件中即可。重启es则sql安装完毕
    

    3.下载安装es-sql服务:

    1.下载es-sql-site-standalone文件(我的安装包里都有),并解压该文件
    2.解压后进入site-server中执行以下命令安装es-sql服务端的依赖环境:
    npm install express --save(需要在这个目录再次执行)
    3.在site_configuration.json文件中可以修改访问端口(默认如下):
    {
        "port":8080
    }
    

    4.启动该服务

    第一次:node node-server.js(如果卡住则配置成功,否则报错)
    第二次后台启动: nohup node node-server.js &
    

    5.浏览其访问(如下图则安装成功):

    如果出现sql查询的页面说明安装成功,里面有一个需要填写url的地方,当es添加完sql配置,并重启完。添加es的地址即可。
    

    如果以上哪里出现问题可以在评论中留言,如果哪里的说明有错误也可以提出。以下地址有详细的搭建说明和一些简单的常用命令,以及es与mysql的对比等知识点:
    https://download.csdn.net/download/weixin_38411472/10664583

    展开全文
  • Elasticsearch-Sql+Mybatis+SpringBoot集成

    千次阅读 热门讨论 2018-12-21 10:54:19
    Elasticsearch-Sql+Mybatis+SpringBoot集成本文介绍了springboot如何集成elasticsearch-sql+mybatisrest方式使用es-sqlJDBC方式用springboot+mybatis访问 本文介绍了springboot如何集成elasticsearch-sql+mybatis ...

    本文介绍了springboot如何集成elasticsearch-sql+mybatis

    大家好!ElasticSearch(下面用es作为缩减)作为开源界搜索和数据分析的宠儿,受到了很多公司的青睐,无论是查询速度,还是扩展性,容错性都是很不错的,而且配合官方的logstashkibana,以及filebeat,更是如虎添翼,但是es的transport client的api是解析非常困难,而且大家又习惯了sql语法,所以在es5.x版本以后已经有elasticsearch-sql的插件,在6.4版本以后,这个插件无需安装,自带的功能。下面给大家介绍一下es-sql的使用方法

    rest方式使用es-sql

    下面我给大家简要看一下如何用rest方式来执行es-sql

    1. curl
      POST /_xpack/sql?format=txt
      {
       "query": "select sum(money) from trade "
      }
      
    2. 学习链接地址https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-rest.html

    JDBC方式用springboot+mybatis访问

    1.maven依赖引入

             <dependency>
                <groupId>org.elasticsearch.plugin</groupId>
                <artifactId>x-pack-sql-jdbc</artifactId>
                <version>6.4.3</version>
            </dependency>
    
        如果引入失败,将jar包下载下来,用下面的方式引入,将jar包下载下来,到本地文件夹,然后引入
    
            <dependency>
              <groupId>org.elasticsearch.plugin</groupId>
              <artifactId>x-pack-sql-jdbc</artifactId>
              <version>6.4.3</version>
              <systemPath>${project.basedir}/../lib/x-pack-sql-jdbc-6.4.3.jar</systemPath>
              <scope>system</scope>
          </dependency>
    
    1. mybatis config文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
           PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
           "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
       <settings>    <!-- 开启二级缓存 -->
           <setting name="cacheEnabled" value="true"/>
    
           <!-- 打印查询语句 -->
           <setting name="logImpl" value="STDOUT_LOGGING" />
           <setting name="useColumnLabel" value="false" />
       </settings>
    </configuration>
    

    -比较重要的地方

    <setting name="useColumnLabel" value="false" />
    

    这句话一定要添加

    1. application.yml添加一下配置
    spring:
     datasource: 
       es: 
         url: jdbc:es://host地址:9200
         driver-class-name: org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcDriver
         mapperLocations: classpath:mapper/es/*.xml
         configLocation: classpath:config/mybatis.cfg.xml
    

    4.EsDruidDataSourceConfig 类,我用的是druid连接池,你们在用的时候需要把这个连接池在pom文件中引入一下

    import com.alibaba.druid.pool.DruidDataSource;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    
    import javax.sql.DataSource;
    
    /**
    * @program: 
    * @description: es 数据源配置
    * @author: sunyf
    * @create: 2018-11-16 19:15
    **/
    @Configuration
    @MapperScan(basePackages = {"cc.youshu.eurekaclient.dao.es"}, sqlSessionFactoryRef = "esSqlSessionFactory")
    public class EsDruidDataSourceConfig {
    
       @Value("${spring.datasource.es.configLocation}")
       private String configLocation;
    
       @Value("${spring.datasource.es.mapperLocations}")
       private String bigdataMapperLocations;
    
       @Value("${spring.datasource.es.url}")
       private String esUrl;
       
       @Bean(name = "esDataSource")
       public DataSource esDataSource() {
           DruidDataSource dataSource = new DruidDataSource();
           dataSource.setDriverClassName("org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcDriver");
           dataSource.setUrl(esUrl);
           return dataSource;
       }
    
       /**
        * SqlSessionFactory配置
        *
        * @return
        * @throws Exception
        */
       @Bean(name = "esSqlSessionFactory")
       public SqlSessionFactory bigdataSqlSessionFactory(@Qualifier("esDataSource") DataSource dataSource) throws Exception {
           SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
           sqlSessionFactoryBean.setDataSource(dataSource);
    
           PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
           //配置mapper文件位置
           sqlSessionFactoryBean.setMapperLocations(resolver.getResources(bigdataMapperLocations));
           sqlSessionFactoryBean.setConfigLocation(resolver.getResource(configLocation));
           return sqlSessionFactoryBean.getObject();
       }
    
    }
    
    1. 至此已经引入完毕,下面就是和你们正常的一样,写一个mapper文件,然后启动springboot项目,下面是我的mapper文件
    
    
    import org.apache.ibatis.annotations.Mapper;
    
    /**
    1. @program: youshu_stat
    2. @description: trade表数据库接口
    3. @author: sunyf
    4. @create: 2018-11-16 18:08
    **/
    @Mapper
    public interface RwTradeMapper {
       Long testSql();
    }
    

    -下面是我的mapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="cc.youshu.eurekaclient.dao.es.RwTradeMapper">
    <select id="testSql" resultType="java.lang.Long">
        select trade_no  from rw_trade limit 1
    </select>
    </mapper>
    
    1. 最后我给出来我的测试类
    import cc.youshu.eurekaclient.EurekaClientApplication;
    import cc.youshu.eurekaclient.dao.es.RwTradeMapper;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.annotation.Rollback;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    
    /**
    * @program: youshu_stat
    * @description: 测试
    * @author: sunyf
    * @create: 2018-11-16 18:16
    **/
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes = EurekaClientApplication.class)
    public class ApplicationTests {
    
       @Autowired
       private RwTradeMapper rwTradeMapper;
    
       @Test
       @Rollback
       public void testRwTradeMapper() throws Exception {
           Long s= rwTradeMapper.testSql();
           System.out.println("输出订单号为"+s);
       }
    
    }
    

    使用es-sql需要是购买x-pack,本人提供破解的6.4.0版本jar包,其他步骤,网上教程一堆,jar包地址https://download.csdn.net/download/qq_34748569/10866788

    你可以找到更多关于 es-sql的信息 https://www.elastic.co/products/stack/elasticsearch-sql.

    展开全文
  • Elasticsearch 的查询语言(DSL)语法很复杂,查询的功能(filter/query/match/agg/geo)各种...而 Elasticsearch-SQL 插件可以使用传统 SQL 语法查询 Elasticsearch,使用起来非常不错。 Elasticsearch-SQL 项目地址:...
  • go-sql-driver/mysql开源库 github地址 https://github.com/go-sql-driver/mysql 安装 go get github.com/ go -sql-driver/mysql 导入包 import ( "database/sql" "fmt" _ ...
  • sqldeveloper-4.0.0.13.80 no jre

    热门讨论 2014-03-10 17:09:59
    sqldeveloper-4.0.0.13.80-no-jre.zip oracle官方数据库管理工具,免费,绿色
  • 打开cmd命令行 输入命令 go get github.com/go-sql-driver/mysql 回车执行这条命令 在下图的路径下 就会产生一个文件夹 数据库驱动就自动下载在这个文件夹下(在你自己安装目录 Go\bin 下) 这样就会发现 我们...
  • Unable to start T-SQL Debugging
  • https://www.cnblogs.com/wt645631686/p/9151539.html
  • sqldeveloper-4.1.3.20.78-x64

    热门讨论 2016-05-25 08:56:56
    sqldeveloper-4.1.3.20.78-x64
  • 使用命令行对数据库进行备份时的产生错误的解决办法 解决办法有三: 第一种方法:删除my.ini [client]下的 no-beep 参数;... 备份文件保存的位置 //xxx.sql 第三种方法:使用mysql直接备份 mysq...
  • SqlServer2008T-Sql收缩数据库日志文件

    千次阅读 2016-12-14 14:47:29
    SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。 实例代码: ---------------------------------数据库日志文件收缩-------------- USE [master] --简单模式 ALTER DATABASE DBName ...
  • 用户登录页面--SQL注入

    千次阅读 2020-01-23 13:29:45
    攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令 SQL注入不是Web或数据库服务器中的缺陷,而是由于编程实践较差且缺乏经验而导致的。 动态拼接的SQL指令最易受攻击。 如...
  • Spark-SQL--Thrift的安装及使用

    千次阅读 2016-06-09 15:39:54
    安装及使用 ...在Spark-SQL的安装及使用.md的基础上,继续对hive-site.xml进行配置,如下<?xml version="1.0" encoding="UTF-8"?> <!--Autogenerated by Cloudera Manager--> <name>hive.metasto
  • 今天做Webservice项目时,传递datatime类型的数据时,提示java.sql.timestamp does not have a no-arg default constructor~~~~ 百度一下,好像是java.sql.Timestamp 无法和xml绑定。这个时候我们要写一个继承自...
  • Spark-sql 运行提示too many open files

    千次阅读 2015-06-17 10:58:24
    设置/etc/security/limits.conf 在结尾# End of file下添加 ...* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 解释:nofile---最大文件打开数  nproc---最大进程数
  • Python学习之GUI--SQL数据库连接

    万次阅读 2018-06-24 19:41:29
    在进行SQL数据库连接之前,我们需要先了解一下pymssql库。有关pymssql的解释推荐大家去官网学习。网上有关这方面的知识大部分是实例为主,不利于学习。另一方面,经过他人咀嚼过的知识也总是差那么点味道。 ...
  • postgresql分页查询-sql详细操作步骤

    千次阅读 2020-07-07 10:53:24
    postgresql之分页limit查询sql PostgreSQL 中的 limit 子句用于限制 SELECT 语句中查询的数据的数量。 – pageSize:每页显示条数 – pageNum:从第几条开始查询 – - pageNum= (pageSize-1)*页数 下面会有详细解释 ...
  • MySQL自增-SQL实现

    千次阅读 2019-08-29 09:57:20
    MySQL自增-SQL实现
  • (2)登录并连接到SQL Server2012 (3)利用对象资源管理器建立名为Study的数据库文件,主文件名为study.mdf,日志文件名为Study.ldy。它们的保存路径在第(1)步中建立的文件夹 (4)利用对象资源管理器在已经建立...
  • Oracle优化10-SQL_TRACE

    千次阅读 2016-12-14 20:25:35
    思维导图概述当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起来就好好像卡在什么地方一样,该如何入手呢?是不是恨不得钻进去看下到底发生了什么? 好在Oracle提供了...
  • 错误信息:请在mysql配置文件修sql-mode或sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 解决办法(最有效,以MySQL5.7为例):修改配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf 并在该配置文件...
  • Oracle-SQL Explain Plan解读

    万次阅读 2016-11-30 19:57:07
    基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划。常用方法1.Explain Plan For SQL•不要实际执行SQL语句,...
  • sqldeveloper中文版

    热门讨论 2018-06-25 17:51:04
    Oracle sqldeveloper 中文破解版,是一款很不错的数据库界面操作软件
  •  NO ACTION:如果有一个相关的外键值在子表中,删除或更新父表中主键值不允许。  例如,创建stu表,其中stno列作为外键,与已建立的以stno列作为主键student表创建表间参照关系: USE stsc CREATE...
  • spark-submit提交程序运行时报错User class threw exception: java.sql.SQLException: No suitable driver, 写入oracle代码如下: /*写入Oracle,采用追加模式*/ dataFrame.write().format("jdbc") .option(...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 515,901
精华内容 206,360
关键字:

no-sql