数据库文件

[转载]IMDB文件格式

試著忘記壹切 提交于 2019-12-06 17:00:30
[转载]IMDB文件格式 来源:LMDB的全称是 Lightning Memory-Mapped Database ,闪电般的内存映射数据库。它文件结构简单,一个文件夹,里面一个数据文件,一个锁文件。数据随意复制,随意传输。它的访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。 图像数据集归根究底从图像文件而来。既然有ImageDataLayer可以直接读取图像文件,为什么还要用数据库来放数据集,增加读写的麻烦呢?我认为,Caffe引入数据库存放数据集,是为了减少IO开销。读取大量小文件的开销是非常大的,尤其是在机械硬盘上。LMDB的整个数据库放在一个文件里,避免了文件系统寻址的开销。LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使用指针运算就能实现。数据库单文件还能减少数据集复制/传输过程的开销。一个几万,几十万文件的数据集,不管是直接复制,还是打包再解包,过程都无比漫长而痛苦。LMDB数据库只有一个文件,你的介质有多块,就能复制多快,不会因为文件多而慢如蜗牛。 关于IMDB的底层实现,可以看这两篇博客: https://blog.csdn.net/weixin_38278334/article/details/96478405 https://www.jianshu.com/p/yzFf8j 来源:

SQLite学习手册(锁和并发控制)

北城以北 提交于 2019-12-06 16:06:16
一、概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable)。在含有数据修改的事务中,该模块将确保或者所有的数据修改全部提交,或者全部回滚。与此同时,该模块还提供了一些磁盘文件的内存Cache功能。 事实上,pager_module模块并不关心数据库存储的细节,如B-Tree、编码方式、索引等,它只是将其视为由统一大小(通常为1024字节)的数据块构成的单一文件,其中每个块被称为一个页(page)。在该模块中页的起始编号为1,即第一个页的索引值是1,其后的页编号以此类推。 二、文件锁: 在SQLite的当前版本中,主要提供了以下五种方式的文件锁状态。 1). UNLOCKED: 文件没有持有任何锁,即当前数据库不存在任何读或写的操作。其它的进程可以在该数据库上执行任意的读写操作。此状态为缺省状态。 2). SHARED: 在此状态下,该数据库可以被读取但是不能被写入。在同一时刻可以有任意数量的进程在同一个数据库上持有共享锁,因此读操作是并发的。换句话说,只要有一个或多个共享锁处于活动状态,就不再允许有数据库文件写入的操作存在。 3). RESERVED: 假如某个进程在将来的某一时刻打算在当前的数据库中执行写操作,然而此时只是从数据库中读取数据

mysql日志、数据备份与恢复

江枫思渺然 提交于 2019-12-06 15:17:34
Mysql体系结构 MySQL属于Client/Server结构,Server端程序为mysqld,该服务启动后,Client端程序从本地或者远程连接Server 常见的Client程序,例如:mysql、mysqldump、mysqlshow、mysqlbinlog等,也包括通过MySQL API和连接器连接到MySQLD的各类编程语言程序 mysqld程序为服务器进程可以划分为下面三个层 连接层:处理连接 SQL 层:处理所连接的应用程序发送的 SQL 查询 存储层:处理数据存储,MySQL数据可以按不同格式和结构存储在不同物理介质上,也称为存储引擎 mysql连接层 通过多种通信方式接受来自客户机的连接请求 包括如下协议 | 方式 | 连接类型 | 支持的操作系统 | | -------------- | ---------- | -------------- | | TCP/IP | 本地、远程 | 所有 | | UNIX套接字文件 | 仅本地 | UNIX | | 共享内存 | 仅本地 | Windows | | 命名管道 | 仅本地 | Windows | sql层 建立连接后,MySQL 服务器将处理以下任务: 授权和解析器:解析器验证语法是否正确,然后,授权验证是否允许所连接的用户运行特定查询 (已验证通过的用户是否具有访问数据库对象的权限) 优化器

Kubernetes 应用部署实战

天大地大妈咪最大 提交于 2019-12-06 14:25:50
Kubernetes 应用部署实战 2018-08-08 19:44:56 wuxiangping2017 阅读数 3084 收藏 更多 分类专栏: linux运维与架构师 简介 伙计们,请搬好小板凳坐好,下面将是一段漫长的旅程,期望你能够乐在其中。 我将基于 Kubernetes [1] 部署一个分布式应用。我曾试图编写一个尽可能真实的应用,但由于时间和精力有限,最终砍掉了很多细节。 我将聚焦 Kubernetes 及其部署。 让我们开始吧。 应用 TL;DR 该应用本身由 6 个组件构成。代码可以从如下链接中找到: Kubenetes 集群示例 [2]。 这是一个人脸识别服务,通过比较已知个人的图片,识别给定图片对应的个人。前端页面用表格形式简要的展示图片及对应的个人。具体而言,向 接收器 [3] 发送请求,请求包含指向一个图片的链接。图片可以位于任何位置。接受器将图片地址存储到数据库 (MySQL) 中,然后向队列发送处理请求,请求中包含已保存图片的 ID。这里我们使用 NSQ [4] 建立队列。 图片处理 [5] 服务一直监听处理请求队列,从中获取任务。处理过程包括如下几步:获取图片 ID,读取图片,通过 gRPC [6] 将图片路径发送至 Python 编写的 人脸识别 [7] 后端。如果识别成功,后端给出图片对应个人的名字。图片处理器进而根据个人 ID 更新图片记录

innobackupex备份指定的部分数据库和表

耗尽温柔 提交于 2019-12-06 13:55:12
本文是翻译的Percona XtraBackup 2.2版的官方文档,原文地址在此: https://www.percona.com/doc/percona-xtrabackup/2.2/innobackupex/partial_backups_innobackupex.html,以下是译文。 原官方文档没有如何恢复的方法,恢复部分是我自己加的。 -----------------------------------------------------------这是一条分割线----------------------------------------------------------- Percona XtraBackup的功能之一“部分备份(partial backups)”,即让用户可以备份指定的表或数据库。要注意的是:你希望备份的表必须是在独立的表空间中,即该表在创建以前,你的MySQL开启了innodb_file_per_table设置。 还一点要注意的是:不要将prepared backup备份的东西拷贝回去。部分备份使用的是导入表(importing the tables),而不是全库备份的--copy-back参数。尽管有时简单的拷贝备份文件可以成功,但是这种方法很容易导致数据库的不一致,因此不推荐大家这么做。 创建部分备份(Creating Partial

Oracle 服务作用

那年仲夏 提交于 2019-12-06 13:35:43
注:SID - 数据库标识 HOME_NAME - Oracle Home名称,如OraHome92、OraHome81 (1)OracleServiceSID 数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为ORACLE.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。 (2)OracleHOME_NAMETNSListener 监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL*Net 网络协议都属于远程访问),不用这个服务就可以访问本地数据库,它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件 Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526。 (3) OracleHOME_NAMEAgent OEM代理服务,接收和响应来自OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要,它的缺省启动类型为自动。服务进程为DBSNMP.EXE,参数文件snmp_rw.ora,日志文件nmi.log,控制台LSNRCTL.EXE,默认端口1748。 (4)OracleHOME_NAMEClientCache 名字缓存服务

.NET Core 下 ASP.NET MVC 使用 Elmah 日志组件

不羁的心 提交于 2019-12-06 13:11:57
.NET Core 下项目Elmah的配置和Framework下有所区别,总结一下简单使用 1.添加ElmahCore的NuGet包 2.注册Elmah服务 services.AddElmah();   //默认配置 默认配置下:日志在/Elmah路径,如 http://localhost:1996/elmah services.AddElmah(option => { option.Path = "/elm";  //设置路径 }); Elmah的记录方式有三种: MemoryErrorLog、XmlFileErrorLog、SqlErrorLog,分别是内存记录,文件(XML)记录,数据库记录,以上为内存记录,劣势:一旦应用程序重启,之前记录的信息将会消失,适合测试用。文件记录: 每一个报错日志信息生成一个xml文件, 需要进行一定配置: services.AddElmah<XmlFileErrorLog>(option => //使用泛型的重载Add方法 { string path = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName; option.Path = "/elm"; option.LogPath = path; //设置存放文件的路径 }); 数据库的还没试过- -

Oracle expdp/impdp 工具的使用

谁都会走 提交于 2019-12-06 12:01:19
Oracle数据泵 注:高版本ORACLE向低版本的数据迁移还得加上VERSION 一、数据泵的作用: 1.实现逻辑备份和逻辑恢复 2.在数据库用户之间移动对象 3.在数据库之间移动对象 4.实现表空间转移 二 、数据泵的特点与传统导出导入的区别 1.EXP和IMP是客户段工具程序, EXPDP和IMPDP是服务端的工具程序 2.EXP和IMP效率比较低. EXPDP和IMPDP效率高 3.数据泵功能强大并行、过滤、转换、压缩、加密、交互等等 4.数据泵不支持9i以前版本, EXP/IMP短期内还是比较适用 5.同exp/imp数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式. 三、DATA PUMP的体系结构: 四、EXPDP语法介绍: 数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输 数据对象的机制。该实用程序可以使用以下命令进行调用: 示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp 您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入 各种参数。要指定各参数, 请使用关键字: 格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 示例: expdp scott/tiger DUMPFILE

数据库开发管理JetBrains DataGrip v2019.3 macOS

寵の児 提交于 2019-12-06 11:43:07
今天为大家带来的是一款顶级的数据库开发管理工具:DataGrip 2019 mac版。JetBrains DataGrip 2019 for Mac可满足数据库管理员和SQL开发人员的需求,支持广泛的数据源,并提供许多有用的工具,可以加快您的工作流程。DataGrip可以连接到各种数据源,如MySQL,PostgreSQL,Oracle,Microsoft SQL Server,Sybase,SQLite和DB2。实质上,如果数据库管理系统使用JDBC,则DataGrip支持它。而且DataGrip提供了上下文相关的代码完成功能,可以显着减少编写SQL代码所需的时间。 下载地址: JetBrains DataGrip 2019 for Mac JetBrains DataGrip 2019是由捷克的软件公司JetBrains在今年年初最新发布的一款重量级编程开发软件,也是为了满足专业SQL开发人员的特殊需求而量身定制的数据库IDE,被誉为数据库与SQL领域中的瑞士军刀。它可以提供上下文感知代码补全,可以自动检测代码中潜在的bug,随时提供最佳的修复建议,帮助您提高编写SQL代码的速度,也可以在不同模式下执行查询,通过对应操作或直接从其在SQL代码中的用途直接跳入任何表、视图或过程,感知到表结构、外键,甚至是正在编辑的代码中所创建的数据库对象。除此之外,datagrip

数据库存储引擎的索引实现

廉价感情. 提交于 2019-12-06 10:30:49
一、常见的两种存储引擎对数据的存储: InnoDB和MyISAM要了解这两种引擎的索引实现原理,先要知道这两种引擎对于数据存储的区别。数据库引擎其实是对表的一种形容,同一个库下可能存在多种不同引擎的表。所以下面我会建两张表进行对比。product表和user表他们分别是InnoDB和MyISAM引擎的表。如图: 数据库的数据其实都是存储再磁盘文件中的。data下就是对应的数据库enginetest就是本次新建的测试库了 再打开下一层目录会发现,库中存放的就是表的数据了。两种引擎的区别在这里就十分明显了 显然,MyISAM引擎有三个文件,分别是.frm(数据结构).MYD(数据).MYI(索引),看名字就能看出来了。DATA,INDEX...文件里面具体是什么     InnoDB引擎只有两个文件,一个是.frm(数据结构),一个是.ibd(索引+数据) 接下来我们先看MyISAM引擎的文件到底是什么 你一定想知道这些文件里面到底是什么,虽然我想mysql一定不会把数据简单的裸存在文件中。还是好奇的打开看了一眼,啧啧啧好吧,看不到具体内容,不过MYD文件中显然已经暴露了部分user的信息了,就是张三同学和李四同学,emmm... MYI文件的确是索引,但是原谅我肉眼看不懂,能看懂的大神可以解释下...不过对MyISAM存储数据的分析之后再看其索引实现就很简单了,如下图: 二