gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

分类归档数据库

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  
  • 分类归档: "数据库"
  • ( 页面3 )
数据库 3月 25,2022

SQL对比NoSQL 5 关键不同点

在选择现代数据库时,最大的决定之一是选择关系 (SQL) 或非关系 (NoSQL) 数据结构。 虽然两者都是可行的选择,但用户在做出决定时必须牢记两者之间的关键区别。

在这里,我们分解最重要的区别并讨论可用的最佳 SQL 和 NoSQL 数据库系统。

SQL 与 NoSQL 之间的五个关键区别是:

1、SQL 数据库是关系型的,NoSQL 数据库是非关系型的。

2、SQL 数据库使用结构化查询语言并具有预定义的模式。 NoSQL 数据库具有用于非结构化数据的动态模式。

3、SQL 数据库是垂直可扩展的,而 NoSQL 数据库是水平可扩展的。

4、SQL 数据库是基于表的,而 NoSQL 数据库是文档、键值、图形或宽列存储。

5、SQL 数据库更适合多行事务,而 NoSQL 更适合文档或 JSON 等非结构化数据。

数据库架构

在最基本的层面上,这两种技术最大的区别在于 SQL 数据库是关系型的,而 NoSQL 数据库是非关系型的。

数据库模式和查询语言

SQL 数据库使用结构化查询语言并具有用于定义和操作数据的预定义模式。 SQL 是可用的最通用和广泛使用的查询语言之一,使其成为许多用例的安全选择。它非常适合复杂的查询。但是,SQL 可能过于严格。您必须使用预定义的模式来确定您的数据结构,然后才能使用它。您的所有数据都必须遵循相同的结构。这个过程需要大量的前期准备。如果你想改变你的数据结构,这对你的整个系统来说将是困难和破坏性的。

NoSQL 数据库具有用于非结构化数据的动态模式,并且数据以多种方式存储。您可以对数据使用面向列、面向文档、基于图形或 KeyValue 存储。这种灵活性意味着:

您可以创建文档而无需先定义其结构

每个文档都可以有自己独特的结构

语法可能因数据库而异

您可以随时添加字段

数据库扩展

SQL 数据库在大多数情况下是垂直可扩展的。您可以通过添加更多 CPU、RAM 或 SSD 容量来增加单个服务器的负载。 NoSQL 数据库是水平可扩展的。您可以通过分片来处理更高的流量,从而为您的 NoSQL 数据库添加更多服务器。水平扩展比垂直扩展具有更大的整体容量,使 NoSQL 数据库成为大型且频繁变化的数据集的首选。

数据结构

SQL 数据库是基于表的,而 NoSQL 数据库是文档、键值、图形或宽列存储。

SQL 数据库的一些示例包括 MySQL、Oracle、PostgreSQL 和 Microsoft SQL Server。 NoSQL 数据库示例包括 MongoDB、BigTable、Redis、RavenDB Cassandra、HBase、Neo4j 和 CouchDB。

各自理想使用场合

SQL 数据库更适合多行事务,而 NoSQL 更适合文档或 JSON 等非结构化数据。 SQL 数据库也常用于围绕关系结构构建的遗留系统。

SQL 数据库系统

现在您已了解 SQL 和 NoSQL 数据库之间的主要区别,是时候探索适用于您的工作负载的不同选项了。

MySQL

免费和开源

极其成熟的数据库,拥有庞大的社区、广泛的测试和高度的稳定性

适用于所有主要平台

复制和分片可用

涵盖广泛的应用领域

Oracle

商业数据库,更新频繁,管理专业,客户支持优秀

Procedural Language/SQL 或 PL/SQL 是使用的 SQL 方言

适用于大型数据库

简单升级

事务控制

兼容所有操作系统

适用于工作负载要求高的企业和组织

微软 SQL 服务器

由微软开发和管理的商业数据库

Transact SQL 或 T-SQL 是使用的 SQL 方言

仅适用于 Windows 和 Linux

方便使用的

发现错误时难以中途调整

优秀的文档

非常适合需要商业数据库解决方案而无需 Oracle 成本的中小型组织

PostgreSQL

面向对象的数据库管理系统,这意味着它是一个混合 SQL/NoSQL 数据库解决方案

免费和开源

与广泛的操作系统兼容

活跃的社区和许多第三方服务提供商

使用纯 SQL

NoSQL 数据库系统

MongoDB 是非常受欢迎的 NoSQL 数据库,这是有充分理由的。它的特点和好处包括:

免费使用

动态模式

水平可扩展

简单查询的出色性能

在不影响现有行或应用程序性能的情况下添加新列和字段

MongoDB 最适合正在经历快速增长阶段或拥有大量非结构化数据的公司。这个 NoSQL 数据库的鲜为人知的替代品是可用的,例如:

Apache Cassandra

Google Cloud BigTable

Apache HBase

作者 east
Java, 数据库 12月 14,2021

华为大数据平台FusionInsight HD Redis批量删除key方法

spark程序突然跑不起来,排查后发现原来是内存满了。(可以通过redis客户端的 info memory命令查看)

./redis-cli -h 127.0.0.1 -p 6379
info memory

网上查到的批量方案

./redis-cli -h 127.0.0.1 -p 6379 keys "mykeys*" | xargs ./redis-cli -h 127.0.0.1 -p 6379 del

运行后报错。好像在华为的FusionInsight HD集群这种方案行不通。

后来通过阅读源码,在ClusterUtil的类发现可以批量删除key的方法。

  public void batchDelete(String pattern, int tryTimes)
  {
    if (tryTimes <= 0) {
      throw new IllegalArgumentException("tryTimes must be greater than or equal to 0");
    }
    ScanParams scanRarams = new ScanParams().match(pattern).count(1000);
    Set<JedisPool> pools = this.jedisCluster.getServingNodes();
    CountDownLatch latch = new CountDownLatch(pools.size() * tryTimes);
    try
    {
      for (int i = 0; i < tryTimes; i++) {
        for (JedisPool jedisPool : pools) {
          this.threadPool.submit(new DelRunnable(jedisPool, scanRarams, latch));
        }
      }
      latch.await();
    }
    catch (InterruptedException e)
    {
      throw new JedisException(e);
    }
  }

作者 east
数据库 11月 23,2021

对接第三方数据库的数据遇到的坑

对接第三方的数据,根据轮询他们的数据库来对接数据。看到表设计有create_time字段,根据经验主义觉得是写入数据库的时间。于是想到对接数据方案是:如果查询时间小于当前时间,每几分钟查一次。如果查询时间大于当前时间,休眠到查询结束时间等于当前时间。后来发现一个奇怪现象:如果刚运行程序补录数据,发现没有漏数据,如果跑一段时间,追上当前时间,就出现漏数据。由于是采用jdbc框架的,不是很清楚底层,当时怀疑会不会运行久了断开数据库连接。反复修改程序还是出现这种情况,后来问第三方厂家,他们说create_time是服务接收到数据的时间,还要先写临时库,再写目标库。并且查询到第三方的数据库时间是落后标准时间的。

作者 east
数据库 9月 4,2021

利用 Navicat 事件设计器解决多微服务对表不同的需求

在生产实践有一个项目,某个表每天新增数据几百万,甚至上千万条。项目采用多服务,有的同事的微服务只需要调用这个表几天的数据,有的同事只需要最近30天,而我这边的微服务需要查询这个表任意一段时间。

由于mysql访问数据超过上千万的数据性能下降很多,而且有的功能需要一些统计,加上原来项目是用mysql,考虑开发成本,暂时不考虑换乘nosql的方案,例如es、hbase等。于是改造成用shardingsphere每月分表。然而问题产生了,我这边访问的表名是TableA_2021_9这个的,而别的几位同事需要访问TableA。

后来想了一个解决方案,不需要他们也改造代码。方案就是保留原来的TableA,采用navicat事件进行调度,TableA只保留最近30天的数据,并每天运行定时任务,把新产生的数据复制一份到分月表。

INSERT INNORE INTO tableA_2021_10 SELECT FROM TableA WHERE START_TIME > DATE_ADD (NOW(), INTERVAL -1 DAY) AND START_TIME < NOW()
作者 east
数据库 8月 28,2021

mysql数据去重实践总结

在线上服务器,由于程序的bug,导入很多重复的数据。刚开始想到的思路是直接写SQL进行去重。例始要对login_name这个字段进行去重:

DELETE
FROM
    `oldTable`
WHERE
    login_name IN (
        SELECT
            a.login_name
        FROM
            (
                SELECT
                    login_name
                FROM
                    `oldTable`
                GROUP BY
                    login_name
                HAVING
                    count(login_name) > 1
            ) AS a
    )
AND id NOT IN (
    SELECT
        b.aa
    FROM
        (
            SELECT
                min(id) AS aa
            FROM
                `oldTable`
            GROUP BY
                login_name
            HAVING
                count(login_name) > 1
        ) AS b
);

如果mysql数量一多,用上面的方法操作效率是很低的。这时要用mysql联合索引,可以建立一个表跟oldTable结构一样的表,并对login_name建立联合索引。

alter table newTableadd unique index(login_name);

如果数择量很大,可以根据时间或主键id值进行分批插入。

INSERT IGNORE INTO newTable SELECT * FROM oldTable WHERE START_TIME >= '2021-08-20 00:00:00' AND START_TIME <'2021-08-23 00:00:00'

作者 east
数据库 8月 8,2021

Mysql线上环境遇到的坑

安装mysql很简单,但要设计好,其实并不简单。

在mysql8.0,一开始没在my.cnf设置表大小写不敏感,后面重新修改是不起效果,要重新安装。

lower_case_table_names=1

说明 0:区分大小写,1:不区分大小写

mysql安装在/usr/local目录,但这个分区大小不大,最大分区在/data,后来时间一长,用shell命令 df -h 一查看

在/dev/mapper/centos-root 磁盘100%了

作者 east
数据库 1月 4,2021

mysql主从复制

 
配置Master服务器(主服务器)
1、更改主服务器MySQL配置文件,/etc/my.cnf,检查二进制日志log-bin是否开启了,把server-id设置为1

[mysqld]
log-bin=mysql-bin
binlog_format=mixed
server-id = 1

binlog-ignore-db = db1
#这是不记录binlog,来达到从库不同步mysql库,以确保各自权限
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema
2、创建一个从服务器链接主服务器的帐号 (1)、在命令行下登录mysql:

# mysql -uroot -p
(2)、首先创建一个名为:jp,密码为:123456的帐号

SQL
mysql> grant replication slave on *.* to 'jp'@172.105.218.12 identified by 'east1016';
Query OK, 0 rows affected (0.52 sec)

刷新权限
flush privileges;
作者 east
数据库 1月 4,2021

修改my.ini导致启动不了服务

修改了my.ini,一直出现“本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动”,可以用mysqld –console 命令来查看具体原因。制定配置文件mysqld.exe –defaults-file=”D:/soft/mysql-8.0.16-winx64/my.ini” –initialize –consolewin10 mysql8的配置文件my.ini路径不用双引号basedir =D:\\soft\mysql-8.0.16-winx64datadir =D:\\soft\\mysql-8.0.16-winx64\\data

作者 east

上一 1 2 3

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?
  • C++ 中避免悬挂引用的企业策略有哪些?
  • 嵌入式电机:如何在低速和高负载状态下保持FOC(Field-Oriented Control)算法的电流控制稳定?
  • C++如何在插件式架构中使用反射实现模块隔离?
  • C++如何追踪内存泄漏(valgrind/ASan等)并定位到业务代码?
  • C++大型系统中如何组织头文件和依赖树?

文章归档

  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (43)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (4)
  • 大数据开发 (488)
    • CDH (6)
    • datax (4)
    • doris (30)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (40)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (99)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (34)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (70)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (6)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.