FILESYSTEM 与 SQLITE,同时存储最多 10M 文件

2024-03-17

我想存储最多10M的文件,2TB的存储单元。我需要的唯一属性仅限于文件名及其内容(数据)。

文件最大长度为100MB,大多数小于1MB。需要删除文件的能力,并且写入和读取速度都应该是优先考虑的——而不需要低存储效率、恢复或完整性方法。

我考虑过 NTFS,但它的大部分功能都是不需要的,同时也不能禁用并且被认为是一个开销问题,其中一些功能是:创建日期、修改日期、属性、日志,当然还有权限。

由于不需要文件系统的本机功能,您是否建议我使用 SQLITE 来满足此要求?或者有一个我应该注意的明显缺点? (有人会猜测删除文件将是一项复杂的任务?)

(SQLITE 将通过 C api)

我的目标是使用更合适的解决方案来获得性能。提前致谢 - Doori 酒吧


实际上 SQLite 官方网站包括一个页面 https://www.sqlite.org/fasterthanfs.html它记录了在各种操作系统中使用数据库相对于本机文件系统的性能优势。存储约 10 KiB 的文件时,sqlite 速度大约快 35%。

SQLite 读取和写入小 blob(例如缩略图) 比读取或写入相同 blob 快 35%1 使用 fread() 或 fwrite() 存储磁盘上的单个文件。

此外,保存 10 KB blob 的单个 SQLite 数据库使用 与将 blob 存储在单个文件中相比,磁盘空间大约减少 20%。

性能差异的出现(我们相信)是因为工作时 对于 SQLite 数据库,open() 和 close() 系统调用是 仅调用一次,而 open() 和 close() 则调用一次 使用存储在单独文件中的 blob 时的每个 blob。看起来 调用 open() 和 close() 的开销大于 使用数据库的开销。尺寸减小源于 事实上,单个文件被填充到下一个倍数 文件系统块大小,而 blob 更紧密地打包到 SQLite 数据库。

本文中的测量是在本周进行的 2017-06-05 使用 3.19.2 和 3.20.0 之间的 SQLite 版本。你 可能期望 SQLite 的未来版本能够表现得更好。

使用较大的文件时,您可能会遇到不同的结果,SQLite 站点包含一个链接kvtest https://www.sqlite.org/src/file/test/kvtest.c您可以使用它在您自己的硬件/操作系统上重现这些结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FILESYSTEM 与 SQLITE,同时存储最多 10M 文件 的相关文章

  • 通过组合字符串将不同的行归为一行

    我有一个这样的数据集 Column1 Column2 1 A 1 B 1 C 2 D 2 E 2 F 2 G 3 H 3 I 我想将它合并成这样的东西 Column1 Column2 1 A B C 2 D E F G 3 H I 是否可以
  • Oracle 数据库,SQL 更新语句将不起作用 (OLEDB)

    我设置了一个数字主键和一个存储卡车 FINS 的字母数字字段 它只是数字和字母的随机组合 我不生成鳍片 这些鳍片将始终与卡车车队识别号相同 这是代码视图 storeTruckSplit truckSplit 1 Stores truck F
  • Capybara+Selenium:如何在集成测试代码中初始化数据库并使其在 Rails 应用程序中可见?

    配置 使用 RSpec Capybara Selemium 驱动程序 SQLite 数据库对 Rails 项目进行集成测试 情况 我与 Capybara 和默认的rack test 驱动程序进行了一些集成测试 他们直接在数据库中创建用户注册
  • 数据库中的 GUID 类型

    GUID不是数据库中的正式数据类型 在我们现有的 SQL Server 设计中 Uniqueidentifier类型用于GUID价值 现在我们正在切换到Sybase数据库 我们应该使用varchar 36 来代替那个Uniqueidenti
  • ORA-02289: 序列不存在,hibernbate 中出错

    ORA 02289 序列不存在 hibernbate 中出错 在 Oracle 中 您无法自动生成值 您应该创建一个序列 我们称之为 VEHICLE SEQ 然后你应该把这个注释放在你的 id 上 GeneratedValue strate
  • Erlang 更好地支持哪种数据库(SQL)?

    你建议我在 Erlang 中使用什么 MySQL 还是 Postgres 哪个数据库有更好 更成熟 更稳定 更快 的 Erlang 驱动程序 The Erlang ODBC 接口 http erlang org doc apps odbc
  • HSQLDB - 这是主数据库文件

    我在嵌入模式下使用 HSQLDB jdbc hsqldb file abc TESTDB 创建数据库后 文件夹abc有以下文件 TESTDB lck TESTDB script TESTDB log TESTDB properties 我的
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • Android sqlite插入记录如果不存在

    我想将一个新项目 Cheese 添加到 sqlite 表中 但前提是它不存在 我的表中只有两列 id KEY ROWID PR 和product name KEY NAME PR 我一直在尝试使用这些代码 但它给了我一个错误 public
  • 在JPA、关系型数据库等中,什么是Tuple? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究 Hibernate 和 JPA 并且一直在寻找这个术语 有人可以用实用和说教的方式向我解释一下这个术语是什么 以及它与 J
  • 如何在 SQLite 中插入换行符(“\n”)?

    在尝试插入类似以下内容时 Hello nWorld SQLite 抛出类似以下的错误 消息 无法识别的令牌 Hello 还有一些其他错误 即使我将上面的字符串转换为 Hello nWorld or Hello n World 这些转义字符序
  • 如何使用过程填充数据库

    我有大约 15 个不同的表 其中填充了不同的数据和不同的实体关系 我需要创建一个脚本 用这些表的内容填充我的数据库 脚本完成后 我使用 sqlplus 在 cmd 中运行它 然后使用 START文件路径 我有两个不同的 sql 文件 一个名
  • 如何将数据一次性插入sqlite数据库

    我需要将数据添加到 sqlite 数据库一次 也就是说 我希望我的应用程序的用户看到该数据已加载 如何做到这一点 我使用查询执行了它 INSERT INTO TABLE NAME VALUES 值1 值2 值3 值N 但是每次应用程序打开该
  • 使用 MySQL Workbench 创建新数据库

    作为 MySQL 新手 我安装了最新版本的 MySQL Workbench 5 2 33 我想知道如何使用此应用程序创建数据库 在 SQL 编辑器的 概述 选项卡中 几乎没有显示 MySQL 架构 这些架构是现有数据库吗 启动 MySQL
  • 数据库无法检索图像或为空,导致数组错误。如何修复它?

    我的问题是java lang IndexOutOfBoundsException 无效索引 0 大小为 0 我不知道如何修复此错误 并且我的阵列上没有发现任何问题 我是安卓新手 希望大家理解 也许这是我的错误的原因value put KEY
  • 带有复合主键的 Room @Relation

    我的问题是这个问题的延伸 也是我的 gt 房间复合主键链接到外键 https stackoverflow com questions 50248668 room composite primary key link to foreign k
  • 想要显示图像

    我有一个小问题 我想要一个可以上传和显示图像的 Django 应用程序 目前 它可以上传图像 但无法显示该图像 例如 comment photo 将打印出路径C Users AQUIL Desktop myproject images P1
  • 在不可为空的列中忽略默认值

    我正在尝试使用以下 SQL alchemy 脚本在表中创建一个新的布尔型 不可空列 默认值 True from sqlalchemy import MetaData Table Boolean Column def upgrade migr
  • 使用 元素通过 Wix 运行 SQL 脚本文件

    我是 Wix 安装程序的新手 我有一个要求 必须提供 SQL Server 登录凭据并从特定路径运行脚本 我不明白出了什么问题 项目已成功构建并创建了 msi 运行后我收到以下错误 错误26204 错误 2147217900 无法执行SQL
  • 如何解锁 SQLite 数据库?

    当我输入此查询时 sqlite gt 从邮件中删除 id 71 SQLite 返回此错误 SQL error database is locked 如何解锁数据库以便该查询能够工作 在 Windows 中你可以尝试这个程序http www

随机推荐

  • 在运行时更改标记图标

    有没有办法在运行时更改 Google Maps Android API v2 标记的图标 而无需删除 重新添加我想要更改其图标的标记 我可以对其应用变换 如旋转 吗 Thanks 更新后 我可以在运行时轻松更改标记图标Google Play
  • 如何使 TensorFlow 在具有 2.x 功能的 GPU 上运行?

    我已在 Linux Ubuntu 16 04 上成功安装了tensorflow GPU 并进行了一些小的更改 以使其能够与新的 Ubuntu LTS 版本配合使用 然而 我认为 谁知道为什么 我的 GPU 满足计算能力大于 3 5 的最低要
  • Grails 2.4.2 - 动态引用默认数据源

    这个问题已经部分回答了here https stackoverflow com a 10537001 2315900但动态引用默认数据源仍然存在问题 我正在开发一个内部应用程序 它允许开发人员修改我们的多租户应用程序之一的配置设置 并将这些
  • 阻止 IP 地址访问 Heroku 上的 Flask 应用程序?

    我需要在我的网站上阻止一个 IP 地址 在 Heroku 上运行 Flask 应用程序 我看到我的服务器每秒有 50 个请求 这绝对不应该发生 我熟悉在 Apache 服务器上使用 htaccess 这里有类似的东西吗 Gunicorn 服
  • 在 std 命名空间中定义的好友类:有任何保证吗?

    我回答的时候就出现了这个问题这个问题 https stackoverflow com questions 15193108 c unique ptr versus friend class private destructor 151931
  • 在 R 中生成 XML 文档

    在我正在工作的项目中 我需要自动创建一个XML文档取决于用户输入 使用用户输入来修改的部分xml文件对我来说没问题 但我是新创建的xml在 R 中从头开始文档 我想知道是否XML可以使用 R 在 R 中生成如下所示的文档XML or xml
  • JTextField/JTextComponent 中的选择有限?

    考虑一个 JFormattedTextField 或者任何 JTextComponent 实际上 其中在字段的实际 文本 周围显示有一个前缀和一个后缀 例如 双 3 5 将是字符串 通过格式化 3 50 其周围将是前缀 和后缀 用于显示文本
  • 如何使用 html 属性在 MVC 视图中显示文本

    我有以下代码 Html ActionLink Hello User Identity GetUserName Manage Account routeValues null htmlAttributes new title Manage 我
  • 交叉编译到嵌入式 Linux ARM 设备时,针对较旧版本的 libstdc++ 和最新的 GCC

    我们需要为ARM嵌入式linux目标找到一个满足以下条件的交叉编译工具链 内核3 17 GLBC 2 18 编译一些第三方代码需要最新版本的GCC 这些要求促使我使用 crosstool ng 生成自定义交叉编译工具链 我选择了最小内核版本
  • 如何在eclipse中获取平台插件的日志

    我是 eclipse 插件开发的新手 我想在我的插件中自定义一些 Eclipse 功能 所以我想知道 当我在 eclipse 中进行某些操作时 后台会发生什么 例如 文件 gt 新建 gt 项目 我需要调用哪个插件 类 函数的日志 跟踪 您
  • 如何在 IntelliJ 上的 Java12 中使用 JavaFX?

    当我在 jdk12 中创建 JavaFX 文件时 它显示以下错误 未配置 JavaFX 运行时 使用内置 JavaFX 的 JDK 或将 JavaFX 库添加到类路径 我该如何解决这个问题 从 JDK11 开始 JavaFX 已被删除 ht
  • Amazon SNS 移动推送 - 如何批量订阅某个主题的终端节点?

    我正在尝试将现有的 iOS 推送通知基础设施转移到亚马逊 SNS 移动推送 我将所有令牌从本地数据库导出到 SNS 应用程序 使用 CSV 现在我想向所有 10 000 个用户发送推送通知 我认为唯一的方法是创建一个主题并将所有用户订阅该主
  • 如何向帖子收到评论的用户发送通知?

    使用我当前的代码 发表评论的用户会收到一条通知 告诉他们他们发表了评论 发布受到评论的评估的人应该收到通知 通知他们有人对此发表了评论 标准通知内容 但我哪里出错了 评论 rb class Comment lt ActiveRecord B
  • QML 创建文本元素需要很长时间

    我注意到在 QML 中创建文本元素需要很长时间 举个例子 import QtQuick 2 5 import QtQuick Window 2 2 Window visible true width 320 height 640 color
  • 如何在Python中检测小写字母?

    我需要知道是否有一个函数可以检测字符串中的小写字母 假设我开始编写这个程序 s input Type a word 是否有一个函数可以让我检测字符串 s 中的小写字母 最终可能会将这些字母分配给不同的变量 或者只是打印小写字母或小写字母的数
  • Xcode 7 Null 传递给需要非空参数的被调用者

    我更新了 Xcode 7 并给出了这个错误 Null 传递给需要非空参数的被调用者 recorder AVAudioRecorder alloc initWithURL NSURL fileURLWithPath NSString stri
  • py4j - 我将如何在 java 中调用 python 方法

    我最近发现了 py4j 并且能够从 python 调用静态 java 方法 现在我想从java调用python方法 我找不到太多文档 所以这是我能想到的最后一个可以告诉我是否可能以及如何实现的地方 您可以通过以下方式从 Java 调用 Py
  • TypeScript 错误:在 Visual Studio 中“找不到名称”

    我已经看过很多关于此问题的帖子和讨论 但我无法解决这个问题 这是我前几天的帖子 https stackoverflow com questions 36037962 how to get rid of reference path 3604
  • 当``type =“module”``或导入时功能不起作用[重复]

    这个问题在这里已经有答案了 import testBtn from functions js window onload function document getElementById questions1 style display b
  • FILESYSTEM 与 SQLITE,同时存储最多 10M 文件

    我想存储最多10M的文件 2TB的存储单元 我需要的唯一属性仅限于文件名及其内容 数据 文件最大长度为100MB 大多数小于1MB 需要删除文件的能力 并且写入和读取速度都应该是优先考虑的 而不需要低存储效率 恢复或完整性方法 我考虑过 N