精华内容
下载资源
问答
  • 为什么要数据库

    2015-06-17 20:51:00
    l用计算机文件存储数据的缺点:很痛苦, 开发人员需要熟悉操作磁盘文件的方法、必须编写复杂的搜寻算法才能高效的把数据从文件中检索出来、当数据格式发生变化时,需要编写复杂的文件格式升级程序、很难控制并发修改...

    回忆基础班的超市收银系统怎样存储数据的?

    l用计算机文件存储数据的缺点:很痛苦, 开发人员需要熟悉操作磁盘文件的方法、必须编写复杂的搜寻算法才能高效的把数据从文件中检索出来、当数据格式发生变化时,需要编写复杂的文件格式升级程序、很难控制并发修改。举例:启动两个超市收银系统exe软件会出现并发修改同一个文本文件的问题。
    l问题:编程困难而且很多重复性工作,数据量大了后查询非常慢,并发处理很困难。那怎么解决这些问题呢?
    l数据库(其实也是由存储数据的文件文件组成),DBMS(数据库管理系统)对于数据不仅仅是需要存储,更重要的是将数据进行存储以后怎么才能方便快捷的查询、修改。
    l数据库特点:海量存储、查找速度快、并发性问题控制、安全性、数据完整性(保存在数据库中的数据是正确的)。
     

    转载于:https://www.cnblogs.com/hsha/p/4584339.html

    展开全文
  • 今天和同事讨论litepal数据库的问题,同事问了一句为什么要升级litepal的版本,,,蒙住了; 然后赶紧上网看了下郭霖的文章,后面有地址,个人简单的总结一下:当数据库改变的时候,升级版本,老的版本没有马上消失...

    今天和同事讨论litepal数据库的问题,同事问了一句为什么要升级litepal的版本,,,蒙住了;

    然后赶紧上网看了下郭霖的文章,后面有地址,个人简单的总结一下:当数据库改变的时候,升级版本,老的版本没有马上消失,而是将老的版本重命名成一个临时的版本,然后根据最新的表结构申城一个新表,然后在不修改的老版本的数据复制到新的版本中,最后把老的版本删除;郭霖的原文--https://blog.csdn.net/guolin_blog/article/details/39151617

    展开全文
  • 为什么要升级到mysql8

    千次阅读 2020-07-24 17:51:38
    MySQL5.7.X用的好好的,为什么要用MySQL8.0 MySQL8.0.x新特性篇 一、MySQL文档存储(MySQL Document Store) 1、NoSQL + SQL = MySQL MySQL文档存储为用户提供了开发传统SQL关系应用程序和NoSQL无架构文档...

    转自: https://www.jianshu.com/p/7259a2f0e95a

    侵删

    MySQL5.7.X用的好好的,为什么要用MySQL8.0

     

    MySQL8.0.x新特性篇

    一、MySQL文档存储(MySQL Document Store)

    1、NoSQL + SQL = MySQL

    MySQL文档存储为用户提供了开发传统SQL关系应用程序和NoSQL无架构文档数据库应用程序的最大灵活性。这消除了对单独的NoSQL文档数据库的需要。开发人员可以在同一个数据库和同一个应用程序中混合和匹配关系数据和JSON文档。例如,可以在同一个应用程序中查询这两个数据模型,结果可以是表格,表格式的数据模型或JSON格式。

    2、高度可靠,完全一致

    MySQL文档存储为无模式JSON文档提供多文档事务支持和完全ACID合规性。使用InnoDB作为文档存储后面的存储引擎,您可以获得与关系数据相同的数据保证和性能优势。这可确保用户获得完整数据一致性的数

    据可靠性。这也使MySQL文档存储易于管理。

    3、高可用性

    MySQL Document Store利用MySQL Group Replication和InnoDB Cluster的所有优势来扩展应用程序并实现高可用性。文档在高可用性组的所有成员之间复制,并且事务在主服务器之间同步提交。如果一个主人失败,任何主人都可以接管另一个主人,没有停工时间。

    4、在线热备份

    就像文档存储利用Group Replication和InnoDB Cluster一样,它也可以与MySQL Enterprise Backup透明地协同工作。用户可以执行文档的完整,增量和部分备份。所有文档数据都与备份完成时的时间点保持一致。用户还可以灵活地执行时间点恢复,以使用MySQL binlog恢复到特定事务。

    5、安全

    默认情况下,MySQL和文档存储是安全的。此外,MySQL企业版的所有高级安全功能(如透明数据加密(TDE),审计,高级身份验证和防火墙)都有助于最大限度地提高安全性。

    6、报告和分析

    MySQL文档存储为您提供了执行CRUD操作的简便性以及从JSON文档中提取数据的SQL的强大功能。SQL的强大功能以及所有流行的报告和分析工具都可用。

    7、使用方便

    MySQL文档存储提供了多种语言支持的简单易用,流畅的CRUD API,以便组织可以使用他们选择的语言开发基于文档的应用程序。

    8、结构

    MySQL Document Store架构包含以下组件:

    本机JSON文档存储 - MySQL提供本机JSON数据类型,可以高效地存储在二进制文件中,并能够创建可以编制索引的虚拟列。JSON文档会自动验证。

    X插件 - X插件使MySQL能够使用X协议,并使用连接器和命令行管理程序充当服务器的客户端。

    X协议 - X协议是一种基于Protobuf库的新客户端协议,适用于CRUD和SQL操作。

    X DevAPI - X DevAPI是一个新的,现代的异步开发人员API,用于在X协议之上进行CRUD和SQL操作。它将集合作为新的Schema对象引入。文档存储在集合中,并具有专用的CRUD操作集。

    MySQL Shell - MySQL Shell是一个支持MySQL服务器开发和管理的交互式Javascript,Python或SQL接口。您可以使用MySQL Shell执行数据查询和更新以及各种管理操作。

    MySQL连接器 - 以下MySQL连接器支持X协议,使您能够以所选语言使用X DevAPI。

    MySQL Connector / Node.js

    MySQL Connector / PHP

    MySQL Connector / Python

    MySQL Connector / J.

    MySQL Connector / NET

    MySQL Connector / C ++

    二、交易数据字典(Transactional Data Dictionary)

    1、数据字典模式将字典数据存储在transactional(InnoDB)表中。数据字典表mysql与非数据字典系统表一起位于数据库中。

    2、数据字典表在InnoDB名为的单个表空间中创建,该 表空间 mysql.ibd驻留在MySQL数据目录中。该mysql.ibd表空间文件必须位于MySQL数据目录和它的名字不能被修改或由其他表空间使用。

    3、字典数据受同一提交,回滚和崩溃恢复功能的保护,这些功能可保护存储在InnoDB表中的用户数据。

    三、SQL角色(SQL Roles)

    MySQL角色是一组命名的特权。与用户帐户一样,角色可以拥有授予和撤消的权限。可以为用户帐户授予角色,该角色向帐户授予与每个角色关联的权限。这样可以为帐户分配权限集,并为授予个人权限提供了一种方便的替代方法,既可以概念化所需的权限分配,也可以实现它们。

    1、创建角色:

    CREATE ROLE 'app_developer', 'app_read', 'app_write';
    

    2、给角色分配权限

    授权所有权限给app_developer分组

    GRANT ALL ON app_db.* TO 'app_developer';
    

    仅授予‘查’权限给app_read分组

    GRANT SELECT ON app_db.* TO 'app_read';
    

    仅授予‘插入’、‘更新’、‘删除’权限经app_write分组

    GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';
    

    3、创建四个用户,分别是一个开发人员帐户,两个只读访问权限的用户帐户,以及一个读/写访问权限的用户帐户

    CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';
    
    CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass';
    
    CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass';
    
    CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';
    

    4、为3中创建的用户帐户分配所需的权限

    GRANT 'app_developer' TO 'dev1'@'localhost';
    
    GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
    
    GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';
    

    5、撤消角色或修改角色权限

    正如角色可以授予帐户一样,可以从帐户中撤消它们

    REVOKE role FROM user;
    

    修改授予角色的权限

    REVOKE INSERT, UPDATE, DELETE ON app_db.* FROM 'app_write';
    

    6、删除角色

    DROP ROLE 'app_read', 'app_write';
    

    四、默认为utf8mb4(Default to utf8mb4)

    该utfmb4字符集有以下特点:

    支持BMP和补充字符。

    每个多字节字符最多需要四个字节。

    utf8mb4与utf8mb3字符集形成对比 ,后者仅支持BMP字符,每个字符最多使用三个字节:

    对于BMP字符,utf8mb4并 utf8mb3具有相同的存储特性:相同的代码值,相同的编码,相同的长度。

    对于补充字符,utf8mb4 需要四个字节来存储它,而 utf8mb3根本不能存储字符。将utf8mb3列转换为时 utf8mb4,无需担心转换补充字符,因为没有。

    utf8mb4是一个超集 utf8mb3,因此对于诸如以下串联的操作,结果具有字符集 utf8mb4和整理 utf8mb4_col:

    五、公用表表达式(Common Table Expressions)---WITH语法

    公用表表达式(CTE)是一个命名的临时结果集,它存在于单个语句的范围内,并且可以在该语句中稍后引用,可能多次

    1、语法表达式

    <pre class="brush:java;toolbar:false" style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; font-size: 1.2rem; background-color: rgb(149, 179, 215);">
    WITH
      cte1 AS (SELECT a, b FROM table1),
      cte2 AS (SELECT c, d FROM table2) 
    SELECT b, d 
    FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c;</pre>
    

    2、递归公用表达式

    <pre class="brush:java;toolbar:false" style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; font-size: 1.2rem; background-color: rgb(149, 179, 215);">
    WITH RECURSIVE cte (n) AS(
      SELECT 1
      UNION ALL
      SELECT n + 1 FROM cte WHERE n < 5
    )SELECT * FROM cte;</pre>
    

    执行上面语句:生成此结果,包含简单线性序列的单个列:

    六、窗口功能(Window Functions)

    查询中的每一行,使用与该行相关的行执行计算。

    1、查询针对 val列中的CUME_DIST()值集显示每行的 值,以及类似PERCENT_RANK()函数返回的百分比等级值 。作为参考,查询还使用ROW_NUMBER()以下方式显示行号

    2、查询演示 FIRST_VALUE(), LAST_VALUE()以及两个实例NTH_VALUE()

    image

    七、其它

    1、自增变量持久化

    对AUTO_INCREMENT值进行持久化,MySQL重启后,该值将不会改变

    2、加强DDL原子性

    DDL操作的原子性,要么全部成功,要么全部回滚。

    3、参数修改持久化

    在线修改全局参数并持久化,通过加上PERSIST关键字,可以将修改的参数持久化到新的配置文件(mysqld-auto.cnf)中,重启MySQL时,可以从该配置文件获取到最新的配置参数。

    4、group by 不再隐式排序

    对于group by 字段不再隐式排序,如需要排序,必须显式加上order by。

    5、允许跳过锁等待

    select ... for update,select ... for share(8.0新增语法) 添加 NOWAIT、SKIP LOCKED语法,跳过锁等待,或者跳过锁定。

    6、undo空间自动回收

    新增了一个资源组功能,用于调控线程优先级以及绑定CPU核。

    八、附加MySQL8.0的参考手册

     

     

    声明:原创,欢迎转载~! 记得点个关注我哦~!

    展开全文
  • 建立 一、备份数据库 1、备份数据库 备份数据库数据 mysqldump -u root -p --all-databases...1、为什么要删除原有数据库服务 备注:我有尝试过不删除数据库,直接安装,尝试了一下方式: (1)通过 yum install

    前言

        在使用mariadb的数据库(mysql有同样的问题)过程中,发现老版本的数据库的一些问题:

    (1)自增字段是在内存里的,数据库重启后就会丢失,新的自增字段是根据表中已有数据的最大值+1(数据表的如果没有记录,自增字段又从头开始了);

    (2)数据库的主从数据库配置,有部分配置项在重启过程中也会丢失。

        因为公司业务需要,上述数据库问题会使公司业务产生bug,因此决定对公司在用的mariadb 10.1.40数据库进行升级

    在官网中 https://mariadb.com/kb/en/auto_increment-handling-in-innodb/

    可以看到AUTO_INCREMENT Values是在mariadb10.2.3之后改为持久化的,再加上其他的一些问题,公司决定将数据库升级至最新的稳定版本 mariadb 10.5.9

    一、备份数据库

    1、备份数据库

    备份数据库数据

    mysqldump -u root -p --all-databases > /home/alldb.sql
    

    数据库data目录也可以备份一份

    2、备份配置

    cp /etc/my.cnf /etc/my.cnf.bak

    3、停止数据库运行

    service mysql stop

    二、删除数据库

    1、为什么要删除原有数据库服务

    备注:我有尝试过不删除数据库,直接安装,尝试了一下方式:

    (1)通过 yum install 命令安装新版本,会提示有原有老版本,无法安装。

    (2)通过 yum update 命令更新版本,通过日志可以看到正常下载了新的安装包,但是在安装时会提示执行预执行的脚本发生错误,无法安装。

    (3)官网查看maridb 更新操作   https://mariadb.com/kb/en/upgrading/   也是说明需要先 uninstall 然后再 install 新版本。

    2、 删除老版本数据库

    yum remove MariaDB-server
    //如果有其他组件,也可以一并删除
    yum remove MariaDB-client  //  等等

    三、安装新版本数据库

    建议使用MariaDB官方推荐的stable稳定版:

    https://downloads.mariadb.org/mariadb/
    http://yum.mariadb.org/

    1、添加MariaDB yum源

    vim /etc/yum.repos.d/MariaDB.repo
    
    # MariaDB 10.5 CentOS repository list
    # http://yum.mariadb.org/
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.5/centos7-amd64/
    gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck = 1

    2、清除yum源缓存并建立数据源

    yum clean all 
    yum makecache

    3、安装MariaDB新版本

    yum install mariadb mariadb-server
    yum install mariadb mariadb-client
    

    4、启动新版MariaDB

    service mysql start 
    
    // 启动后查看状态
    
    service mysql status

    5、升级已有数据库

    mysql_upgrade -uroot -p --force
    

    6 、配置开机自启动

    systemctl enable mariadb
    

    7、登录并检查数据

    mysql -uroot -p
    

    四、数据和配置恢复

    1、恢复配置

    查看配置是否丢失,如果出现丢失,拿最开始备份的配置恢复

    vim /etc/my.cnf

    2、恢复用户和数据

    登录查看用户、存储过程、数据等,出现丢失,用户可以重新创建、数据拿最初的备份恢复

    mysql -u root -p </home/alldb.sql
    

     

    展开全文
  • 本文记录了我之前初到一家创业公司,从零开始到用户超千万,系统压力暴增的情况下是如何一步步优化MySQL数据库的,以及数据库架构升级的演变过程。升级的过程极具技术挑战性,也从中收获不少。希望能够小伙伴们...
  • 今天给大家带来的分享为《平安产险核心DB升级记》,为什么选择“数据库升级”这个主题来分享呢?首先,一方面我是做数据库出身的,另一方面,我认为数据库升级是一个相对复杂的系统化工程。在这中间,它几乎运用...
  • 为什么要维护升级 1.1 现状和出现的问题 如果你开发一个的项目,没有用到数据库,那么你不用维护数据库。 如果你开发一个项目,用到数据库了,但是从不用修改,那么数据库的维护也相对的简单。 当你开发一个...
  • iPhone/iPad应用开发数据库升级

    千次阅读 2012-03-12 18:03:32
    为什么数据库要升级? 由于需求变动或增加,原来的数据库结构设计不满足现有的需求(当然,如果一开始就考虑到了,那数据库升级就是多此一举了)。 数据库升级的对象? 1、用户已经在使用旧产品,新...
  • 有次面试,面试官问了关于增加字段更新数据库升级的问题,我是这么回答的,我说可以做一个数据库迁移拷贝,每次更新版本判断一下,面试官表示很不解,为什么要这么复杂化,重复问了好几次,也许在等我更好的答案;...
  • 数据库供应商通常每个月都会发布一些有bug /安全性修补程序的补丁,我们为什么要关心?新的版本可能对关于安全漏洞和黑客入侵系统的修复,所以除非安全性不被关注,否则您可能希望在您的系统上安装最新的安全修补...
  • 为什么要终身学习,持续学习? 为什么要终身学习,持续学习?中国人有一句老话叫,活到老,学到老。大概是说总有新的知识产生,需要持续学习。回到大龄程序员焦虑这个话题,学习仍然是破解的不二法门。 我们来看对于...
  • 日行千里,全凭“车”况,为什么我们要升级平台 历经一个半月的时间,不管是叫工业互联网平台还是叫工业大数据平台,从1.0版本升级到2.0版本,升级部分包括:客户端(网关)、服务端(数据接收、数据处理、计算...
  • 由于工作的需要,我使用...为什么要使用Medoo 非常的轻量 未压缩只有 34KB。 简单 非常的容易学习,快速上手。 强大 支持各种常见的SQL查询。 兼容 支持各种数据:MySQL, MSSQL, SQLite, MariaDB, Oracle,...
  • 数据库供应商通常每个月都会发布一些有bug /安全性修补程序的补丁,我们为什么要关心这些?因为,新的版本可能对安全漏洞或黑客入侵系统进行修复,所以除非不关注安全性能,否则,您会希望在您的系统安装上最新的...
  • 数据库封装

    2017-12-19 11:45:18
    一、为什么封装数据库?  其实封装数据库的原因和封装网络连接的原因是相同的。在这我们就简单的说一下原因:类似于网络连接,数据库创建和操作的方式也是很多了:不同数据库有不同的API,像MySQL,SQLite等,在...
  • 首先得先明白,为什么要分层,分层的目的就是为了增加代码的复用以及日后的升级维护,都写appcode,就破坏了这种结构 ASP.NET 动态编译使您能够在部署 Web 应用程序之前修改源代码,而不必显式编译代码。如果您修改...
  • 因为后期做无限分级板块,比如现在有一级Category美食饮品、广告印刷,那么可以在一级Category上细分,如美食饮品可以细分蛋糕甜点、火锅、小吃快餐等。所以在Category表中增加parent属性,表明该类别的上一...
  • 为什么要分库分表

    2018-11-08 20:48:40
    1.为什么要分库分表  1)随着业务的不断增长,数据库中表越来越多,同时表中的数据量也越来越大,业务总量达长到一定程度以后,数据库进行增删改查的开销就会显著增加,并且数据库的承载能力毕竟是有限的(受限于...
  • 先少说两句,为什么需要主数据库与备用数据库角色的切换,例如需要对数据库进行升级操作,人为切换(switchover)数据库是不会丢失的。还有一种是failover,也就是主服务器挂挂了,这种情况就需要角色切换一下了。 ...
  • 数据库分区分表

    2020-06-13 16:18:28
    为什么要分库分表和读写分离? 类似淘宝网这样的网站,海量数据的存储和访问成为了系统设计的瓶颈问题,日益增长的业务数据,无疑对数据库造成了相当大的负载,同时对于系统的稳定性和扩展性提出很高的要求。随着...
  • 数据库初学者入门

    2013-08-13 15:39:01
    对于从没接触过数据库的...为什么需要数据库1)几乎所有的应用软件后台都要要数据库2)数据库存储数据占用空间小,容易持久保存3)存储比较安全存放在MDL和LDf这连个文件,4)容易维护和升级5)数据库移植比较容易6)简化对...
  • 我是一个Linq的初学者,我是从LinqToSql入手的学习也不深入。但是就我现在短短的学习经历来说我对微软的Linq...当然做到高度抽象了,也就是说抓住所有数据容器的共性又兼顾特点。这个应该说难度是有的。用Linq...
  • 数据库和模板

    2008-09-27 22:12:09
    1.为什么要有模板? Notes数据库是个文档型数据库,集成了包含设计、权限、数据、索引等各类信息。  那么如何开发数据库,应用到现有数据,并且可以对其进行升级维护呢?直接修改设计,不仅因为测试不及时不能保证...
  • 开发工具与关键技术:SQL 数据库 作者:陈芝番 撰写时间:2019.2.14 关于火车数据库的分析 1.数据归类 原则:独立和完整性,互不干扰 ... 为什么要系统拓展:管理的升级,需求,技术的升级 3.一般地...
  • 怀揣着“让天下没有难用的数据库”的理念。经历了近半年,超过40...为什么要做云数据库管家? 1.“让天下没有难用的数据库” 这句话是阿里云RDS人一直怀揣的理想!阿里云云数据库拥有着全中国最专业的DBA团队。作为...
  • android sqlite数据库使用

    热门讨论 2011-09-17 00:25:56
     每个应用程序都使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库--SQLite,本文介绍的就是如何你的Android应用程序创建和操作SQLite数据库。  数据库支持每个应用程序无论...
  • 终于要升级

    2007-04-06 10:35:37
    最近在忙SAP升级,是将原来的Oracle 7.3.4转到MS SQL数据库,你要问为什么要O转M?一言概之,人家便宜啊!顾问设计的升级路线是:Oracle 7.3.4, MS SQL 7, MS SQL 2000, 2005数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 682
精华内容 272
关键字:

数据库为什么要升级