PostgreSQL与MySQL的最佳开源数据库之争

一文读懂数据库发展史 本文力求以简单易懂的语言描述出数据库发展史,尽量避免出现复杂的概念介绍。数据库演进史如图1所示: 图1 数据库演进 一、穿孔纸带和文件系统 在现代意义的数据库出现之前(20世纪60年代),人们通过人工和文件系统的方式来存储、管理数据。在人工管理时期,人们常使用穿孔纸带来管理数据(图2),虽然穿孔纸带因不具备电子化特征、不能被称为数据库,但其代表着人们在数据存储结构上思考和实践的结果,有必要单独提及。 图2 穿孔纸带 随着数据量的增多以及计算机... 阅读详情

转自:http://down.chinaz.com/server/201108/982_1.htm

[摘要]为企业选择一个适合的数据库,需要做一个相当长远的打算,因为如果日后改变选择,将付出非常艰难又昂贵的代价。所以必须第一次就做出正确的选择。

  为企业选择一个适合的数据库,需要做一个相当长远的打算,因为如果日后改变选择,将付出非常艰难又昂贵的代价。所以必须第一次就做出正确的选择。MySQL和PostgreSQL是两个最受欢迎的开源数据库,它们往往是数据库管理员准备进行新的部署时最终的两个候选。本文通过对这两个开源数据库的概述及对比,为您选择满足企业需求的数据库提供帮助。

  PostgreSQL

  PostgreSQL (发音为Post-gress-cue-ell)宣称自己是世界上最先进的开源数据库。PostgreSQL的狂热者认为它的性能跟Oracle不分上下,而且没有高成本的负担。PostgreSQL拥有着悠久的历史,可以追溯到1985年,由加州大学伯克利分校最早开发,是Ingres数据库的衍生。

  PostgreSQL是100%社区驱动的开源项目,由全球范围内千人以上的社区贡献者共同维护。PostgreSQL提供了一个完整功能的版本,而不像MySQL那样,提供多个不同的版本,如社区版、商业版及企业版。PostgreSQL的开源协议采用自由的BSD/MIT类型,这种开源协议允许任何人在保留版权声明的情况下使用、复制、修改或者分享代码。

  可靠性是PostgreSQL最优先的事项。众所周知,PostgreSQL坚如磐石并且设计精密,能够支持事务处理和关键任务应用。PostgreSQL提供一流的文档服务,包括全面的免费在线手册,以及旧版本手册的存档。社区的支持非常出色,并且有独立厂商提供商业支持。

  数据一致性和完整性也是PostgreSQL的高度优先事项。PostgreSQL是完全符合ACID原则(原子性、一致性、隔离性、持久性)的数据库。PostgreSQL对数据库访问提供强大的安全控制,不仅能够利用好企业安全工具,如Kerberos和OpenSSL等,还可以根据自己的业务规则自定义核对方法,以确保数据的质量。数据库管理员最喜欢的功能是时间点恢复(point-in-time recovery 简称PITR)功能,它具有灵活性、高可用性特征,能够打造快速故障的热备份服务器,以及快照和恢复到特定时间点等。但这还不是全部。该项目提供了很多方法来管理PostgreSQL,使PostgreSQL具有高可用性、负载均衡和同步功能,因此你可以利用这些功能来满足特定需求。

  MySQL

  MySQL相对年轻,首次出现在1994年。MySQL自称是世界上最流行的开源数据库。MySQL是LAMP中的M,LAMP软件包经常用于Web开发,该软件包还包括了Linux、Apache和Perl/PHP/Python。很多应用程序建立在LAMP组合的基础上,其中包括一些很著名的应用,如WordPress、Drupa、Zend和phpBB等。

  最初MySQL被设计为快速的Web服务器后台,使用快速索引顺序访问方法(indexed sequential access method 简称ISAM),不符合ACID原则。MySQL初期已经支持一些辅助性存储引擎,并且现在可以通过InnoDB引擎履行ACID原则。MySQL还支持其它存储引擎,提供了一些功能,如MEMORY存储引擎提供的临时表,EXAMPLE存储引擎提供的开发者实例,MyISAM引擎提供的快速只读数据库,再加上其他几个核心存储引擎以及若干第三方引擎。

  MySQL文档资源丰富,包括高质量的免费参考手册,许多相关书籍和网上的技术文章,并可以从Oracle和第三方供应商那里获得培训和支持。

  近年来,MySQL经历了所有权变更和一系列戏剧性事件。它最初是由MySQL AB开发,MySQL AB于2008年以10亿美元的价格被Sun Microsystems公司收购。2010年Sun又被Oracle收购。Oracle提供多个版本:标准版、企业版、经典版、集群版、嵌入式版与社区版。其中有些是免费下载,也有需要付费的。核心代码使用GPL协议,不喜欢使用GPL协议的开发商和供应商可以使用商业许可证。

  目前对基于原始的MySQL代码的数据库有更多的选择,因为几个关键的MySQL开发人员已经发布了MySQL的分支。Michael“Monty”Widenius是MySQL的创始人之一,开发了自己的MySQL分支,MariaDB,免费并采用GPL许可协议。Drizzle是MySQL的分支,由著名的MySQL开发人员Brian Aker开发,Drizzle进行了重大改写并改变核心观念,为多处理器、云技术、.NET应用程序和大量的并发操作进行优化。

  平台和工作负载

  以下是使用MySQL或者PostgreSQL具有代表性的网站:

  MySQL:

  • Slashdot(资讯科技网站)
  • Twitter
  • Facebook
  • Wikipedia(维基百科)

  PostgreSQL:

  • Yahoo运行一个多拍字节修改后的PostgreSQL数据库处理每天数十亿事件
  • Reddit(新闻网站)
  • Disqus(社会性媒体)

  MySQL和PostgreSQL有很多共同点,它们都可以运行在多个操作系统上,如Linux、 Unix、Mac OS X和Windows系统;它们都是开源的和免费的,因此测试只需要耗费时间和硬件;它们都很灵活,使用范围很广,不管是小型部署还是大型分布式系统均可使用。MySQL比PostgreSQL小一个级别,利用libmysqld进入嵌入式空间。PostgreSQL不支持嵌入式应用,坚持替代传统客户机/服务器架构。

  MySQL通常被认为是网站和应用程序最快捷的数据库后台,执行快速读取和大量琐碎查询,但是提供较少的复杂功能和数据完整性检查。PostgreSQL被认为是正式的、功能齐全的、讲求实际的事务型企业应用主力,完全符合ACID原则以及大多数据完整性检查。为了使某些任务的速度更快,MySQL分别执行不同的存储引擎。MySQL的MyISAM是迄今为止最快的引擎,因为它执行最少的数据完整性检查。MyISAM为繁忙的只读网站后台工作,但是任何读/写数据库都包含敏感数据将会成为灾难,因为MyISAM表将不可避免的损坏。MySQL对已损坏的MyISAM表有恢复工具,但对于敏感数据,InnoDB引擎是一个更好的选择,因为它符合ACID原则。

  相比之下,PostgreSQL是一个完全与独立存储引擎集成的数据库服务器。通过调整postgresql.conf的参数,并对查询和处理稍作调整,便可以提高性能。

  MySQL和PostgreSQL都是可配置的,并可以为不同的任务调整以优化性能。新增功能都支持扩展。

  人们通常认为MySQL比PostgreSQL更容易学习。其实关系数据库管理系统都是复杂的,规则较多,因此这两个数据库具有相似的学习曲线。

  符合标准

  PostgreSQL目标是符合SQL标准(现行的标准是ANSI - SQL:2008)。MySQL基本上符合SQL标准,但其自身也扩展和支持非SQL功能。每种方式各有利弊。坚持标准对于数据库管理员、数据库开发人员和应用程序开发者来说将会变得更容易,这意味着他们只需要学习一种标准,只需要使用和支持同一公共集合的功能和命令,并且这些代码是可移植的。这就节省了时间和精力,并从供应商的限制中得到解脱。

  支持使用非相容性定制的理由,包括自由迅速的推出有用的新特点,而不是等待通过标准过程。ANSI/ISO标准变化发展,因此符合标准也是一个不断变化的目标; 知名的RDBMSes,如微软SQL Server、甲骨文和IBM的DB2只符合部分标准。大多数MySQL定制不是完全的变革,例如,单引号和双引号表现方式的差异,以及MySQL的转义字符表现方式的差异,这些似乎不会形成干扰或者造成潜在的错误。MySQL支持多个SQL模式,如ANSI,更增加的其复杂性。对传统SQL标准更加符合,尤其是再严格的数据输入检查,以及其他各种严格的和宽松的数据检查模式。

  总结

  PostgreSQL和MySQL尽管有着不同的历史、引擎和工具,但它们在使用上并没有明显的区别。若选择PostgreSQL是因为它的可靠性和对数据保护的优势。而MySQL更加灵活,拥有为不同的工作负载量身定制的更多选择。通常,企业熟悉特定的软件要比了解不同数据库的差异更为重要,因此,如果企业已经在使用其中一个数据库,那就应该坚持下去。如果非得

  为一个新项目(包括网站的后台)选择数据库,PostgreSQL将是不错的选择,因为它的可靠性和数据完整性。


PostgreSQL入门指南:从零开始掌握这个强大的开源数据库 PostgreSQL是一款功能强大的开源关系型数据库,支持标准SQL和高级特性如JSON处理、数组类型和全文搜索。它具备优秀性能、丰富数据类型和强大扩展性,完全免费且跨平台。文章详细介绍了PostgreSQL的安装方法、基本操作(建库、建表、数据操作)以及高级功能展示,并提供了性能优化建议和学习资源。作为企业级数据库解决方案,PostgreSQL兼具关系型数据库的严谨性和处理现代需求的灵活性,适合从个人项目到大型应用的各种场景。 阅读详情

相关推荐

OWASP Nettacker数据库选型与配置实战:SQLite、MySQL、PostgreSQL深度对比

在网络安全评估和漏洞扫描领域,高效管理和分析海量扫描结果是提升安全运营效率的关键。其核心原理在于将非结构化的扫描日志(如端口、服务、漏洞信息)通过数据库进行结构化存储与索引,从而实现数据的持久化、快速查询和关联分析。这一技术实践的价值在于,它使得安全团队能够从历史数据中洞察威胁趋势、追踪资产漏洞状态,并自动化生成合规报告。无论是个人学习、团队协作还是企业级安全运营,选择合适的数据库(如轻量级SQLite、平衡型MySQL或功能强大的PostgreSQL)作为后端,都能将OWASP Nettacker这类扫描

weixin_33747129的博客 806

数据库简史(精简版)

一、RDBMS(关系数据库,Relational DBMS) 数据库早期史 1961年,GE(通用电气公司,General Electric Company)的Charles Bachman ,开发了IDS(集成数据存储,Integrated Data Store),这是世界上第一个NDBMS(网状数据库管理系统,Network Data...

8744

数据库各厂商发展历史(6. MS SQL Server, PostgreSQL及其它)

如若转载,请务必注明出处。iihero 2008.9.26于优快云 本来想写写MS SQL Server的发展历史。但想想,基本上在谈Sybase ASE的时候,也把它都谈到了。MS SQL Server发展到现在,确实是非常的成功。 它的传播面很广,总结起来,有几点: 1. 似乎盗版传播很容易,一个序列号破解,就可以无限期使用。对于Sybase ASE,简直是不可能的事。它的license策略

iihero@优快云 5583

探究数据库开源协议:PostgreSQL vs MySQL

在PostgreSQL和MySQL之间做选择时,需综合考虑项目需求和商业计划。PostgreSQL以其灵活的许可协议适合需要最大自由度的项目,而MySQL则凭借强大的社区和GPL协议的共享精神成为许多开源项目的首选。无论选择哪种数据库,都要深入理解其开源协议,以确保长期发展的合规性和可持续性。

zcs_978176963的博客 1469

数据库各厂商发展历史(4.MySQL)

如若转载,请务必注明出处,尊重个人劳动。iihero 2008.9.26于优快云 MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个密,包括开发者在内也不知道。MySQL的海豚标志的名字叫“

iihero@优快云 3670

MySQL与PostgreSQL对比

网上已经有很多拿PostgreSQL与MySQL比较的文章了,这篇文章只是对一些重要的信息进行下梳理。在开始分析前,先来看下这两张图: MySQL MySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQL AB开发的,然后在2008年以10亿美金的价...

2万+

PostgreSQL与MySQL:最佳开源数据库之争

2011年08月18日01:00 it168网站原创 作者:sebastine 编辑:王玉圆 评论:0条   【IT168 专稿】为企业选择一个适合的数据库,需要做一个相当长远的打算,因为如果日后改变选择,将付出非常艰难又昂贵的代价。所以必须第一次就做出正确的选择。MySQL和

834

为什么我说PostgreSQL是Agent Database的最佳选择

本文将深度解析 PostgreSQL 胜出的 5 个底层逻辑,以及在实际落地中如何避开那些"看起来很美"的选型陷阱。

Database_Cool_的博客 639

[LVGL] 刷新率优化

实验硬件:STM32F407ZGT6;2.4寸TFT-LCD模块(ILI9341驱动芯片、XTP2046触摸芯片)本文目标:lvgl的刷新率优化,解决拉帘子问题注意:本文在LVGL显示触摸代码移植完成的基础上进行,第一次使用lvgl可根据前文一步步移植,点击下方传送门查看相关文章传送门:STM32F4驱动ILI9341的TFT-LCD触摸屏(HAL库)(一)STM32F4驱动ILI9341的TFT-LCD触摸屏(HAL库)(二)[LVGL] 显示代码移植 基于STM32F4。

2301_77117901的博客 2784

DFT ATPG提升coverage的方法

采用更精确的故障模型,如桥接故障模型(用于描述电路中不应连接的节点之间的短路故障)和路径延迟故障模型(考虑信号在电路路径上的传输延迟),可以使ATPG工具生成更有效的测试向量来覆盖这些特殊故障。假设电路中有一个与门的输入引脚存在固定为0的故障(stuck - at - 0),D - 算法会分析与门的其他输入以及与门输出连接的后续电路逻辑,从而确定整个电路的输入值,使得当该故障存在时,电路的输出与无故障时不同。通过增加测试向量的类型,如功能测试向量和结构测试向量的结合,可以提高故障覆盖率。

Loving_enjoy的博客 969

PostgreSQL 与 MySQL 的对比优劣大集合

PostgreSQL的Slogan是“世界上最先进的开源关系型数据库” 它是一款一专多长的全栈数据库:在可观的规模内,都能做到一招鲜吃遍天。 成熟的应用可能会用到许许多多的数据组件(功能):缓存,OLTP,OLAP/批处理/数据仓库,流处理/消息队列,搜索索引,NoSQL/文档数据库,地理数据库,空间数据库,时序数据库,图数据库。传统架构选型可能会组合使用多种组件,典型的如:Redis + MySQL + Greenplum/Hadoop + Kafuka/Flink + ElasticSearc.

大鹏 1万+

Vue3+uniapp开发必备:5分钟搞定unplugin-auto-import自动导入配置(附常见报错解决)

本文详细介绍了在Vue3+uniapp项目中配置unplugin-auto-import插件实现自动导入的方法。通过该配置,开发者无需手动导入ref、onLoad等常用API,可显著提升编码效率和团队协作规范性。文章提供了从安装、TypeScript集成到高级用法的完整指南,并附带了常见报错的解决方案。

weixin_29008805的博客 963

PostgreSQL数据库

PostgreSQL是一个免费的对象·关系型数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL开发者把它念作post-gress-Q-L。PostgreSQL的Slogan是“世界上最先进的开源关系型数据库”。“开源界的Oracle”,去O首选。PostgreSQL官网:PosetgreSQL中文社区:全球数据库排行:国产数据库排行:命令说明\password设置当前密码\q退出\h查看sql命令的解释,如\h select?

tu464932199的博客 2万+

论文阅读--射频电源在半导体领域的应用

射频电源(RF Power Supply)是能够输出300kHz~300GHz正弦波电压的高频交流电源,在半导体制造领域,射频电源的典型工作频率范围为400kHz∼60 MHz,主要由射频发生器(功率源)、匹配器及配套控制电路组件构成,其关键组件包括变压器与电抗器、晶闸管、绝缘栅双极型晶体管(IGBT)、钣金件、铜材及各种电子元器件。射频电源是刻蚀和薄膜沉积工艺的核心,主要用于产生等离子体,以增强气体反应活性,其性能直接影响反应腔体内等离子体的浓度、均匀性和稳定性。

伊丽莎白的学习之路 2342

Python全栈入门到实战【基础篇 22】生成器与迭代器:底层逻辑与实战场景

Python迭代器与生成器:惰性求值的高效实践 摘要:本文深入解析Python中迭代器和生成器的核心机制与应用场景。迭代器通过实现__iter__()和__next__()方法实现惰性求值,适合处理大数据集和无限序列。生成器作为迭代器的简化实现,通过yield关键字自动实现迭代器协议,代码更简洁。文章详细对比了可迭代对象与迭代器的区别,演示了自定义迭代器和生成器函数的实现方式,并介绍了生成器表达式这一高效替代列表推导式的方案。通过斐波那契数列等实例,展示了惰性求值在内存优化方面的优势,以及生成器在流式数据处

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3263

Part-DB数据库选择:SQLite、MySQL还是PostgreSQL?性能对比与推荐

Part-DB是一款开源的电子元件库存管理系统,支持SQLite、MySQL/MariaDB和PostgreSQL三种数据库。选择合适的数据库对系统性能和未来扩展性至关重要。本文将深入对比三种数据库的优缺点,助你做出最佳选择! ## 📊 核心功能与数据库支持 Part-DB通过关系型数据库存储所有电子元件数据,包括零件信息、库存状态和供应商数据。系统原生支持三种主流数据库,它们在功能完整性上

gitblog_00040的博客 404

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 877

全网最全:MySQL 与 PostgreSQL 深度对比

全网最全的开源数据库综合对比

草原孤狼的专栏 1万+

知识蒸馏⚗️ | YOLOv5知识蒸馏实战篇

YOLOv5知识蒸馏教程

Coding... 9361

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Certd数据存储与升级指南:SQLite、MySQL、PostgreSQL多数据库配置+备份全解

Certd 是一款开源的 SSL 证书管理工具,支持全自动证书申请、续期与一键部署到阿里云、腾讯云、宝塔、群晖等环境。很多新手上手后会关心:**证书数据到底存在哪里?能不能换成 MySQL?升级和备份怎么做的?** 本文用一篇讲透 Certd 数据存储、多数据库配置、版本升级与备份恢复的全流程,帮你把数据安全牢牢抓在手里 🔐 ## 一、Certd 数据存储原理:默认 SQLite 零配置 C

gitblog_00184的博客 927

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Snowflake荣获DB-Engines 2021年度数据库

根据 DB-Engines 官方网站数据显示,Snowflake 荣获2021年度数据库。 Snowflake在2021年DB-Engines排名中获得比其他383个被监测数据库系统更受欢迎的成绩。 因此,DB-Engines 官方宣布Snowflake为2021年的年度DBMS。 为了确定年度DBMS,DB-Engines 从2022年1月的最新得分中减去了2021年1月的流行得分。使用这些数字的差值,而不是百分比,因为这将有利于在年初具有微小人气的系统。结果得到一个DBMS的列表,按照它们在20

专注数据库、大数据领域干货分享,用严谨的数据技术广交天下朋友。 823

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

如何选择Chat2DB开源版与Pro版:AI数据库工具决策指南

面对日益复杂的数据库管理需求,技术团队在选择AI驱动的数据库工具时常常陷入开源版与商业版的选择困境。Chat2DB作为一款支持MySQL、PostgreSQL、Oracle等16+数据库的智能SQL客户端,提供了开源社区版和Pro商业版两种选择,如何在成本控制与功能需求之间找到最佳平衡点?本文将通过四段式分析框架,为技术决策者提供实用指导,帮助您基于团队实际需求做出明智选择。 ## 问题诊断:识

gitblog_01055的博客 1122

数据库教程:深入浅出db_tutorial

--- ## 项目介绍 **db_tutorial** 是一个由 cstack 开发并维护的开源项目,旨在提供一个全面且易懂的数据库操作指南。该项目设计用于教育目的,帮助开发者快速上手数据库管理与查询技巧,特别适合初学者和中级开发人员。通过本项目,您将能够掌握数据库基本操作,包括数据的插入、查询、更新和删除等核心功能,以及一些高级用法。 --- ## 项目快速启动 快速启动 db_tut...

gitblog_01023的博客 909

MySQL与PostgreSQL区别

一.MySQL MySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个版本:Standard、Enterpri...

weixin_39676449的博客 943

PostgreSQL与MySQL对比

MySQL MySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个版本:Standard、Enterprise...

weixin_43707560的博客 344
上一篇: sqlite迁移mysql
下一篇: 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT
UU_Yang
博客等级 码龄23年 926粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值