【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

S3QL:一个用 Python 写成的在线存储系统

  • 2015-09-07
  • 本文字数:1299 字

    阅读完需:约 4 分钟

S3QL 是一个在线存储系统,使用诸如 Google Storage Amazon S3 OpenStack 这样的服务存储数据。它提供了一个动态的、容量无限的硬盘,任何运行 Linux、FreeBSD 或 OS X 的计算机都可以通过互联网访问。

S3QL 是一个符合标准的全功能 Unix 文件系统。它有一些额外的特性,使它特别适应于在线备份和归档。相比性能和功能而言,它更注重简洁与优雅。项目创建者 Nikolaus Rath 一直致力于确保源代码的可读性和可维护性。以下是 S3QL 的特性:

  • 透明性——从概念上讲,S3QL 与本地文件系统很难区分,例如,它支持硬连接、符号连接、标准 Unix 权限等;
  • 动态大小——S3QL 文件系统的大小可以根据需求动态增长和缩小;
  • 压缩——所有数据在存储之前都可以使用 LZMA、bzip2 或 Deflate(gzip)算法压缩;
  • 加密——在压缩之后上传之前,所有数据都可以使用一个 256 位的密钥进行 AES 加密,它还使用 SHA256 HMAC 校验和保护数据不被篡改;
  • 数据去重——如果多个文件有相同的内容,那么冗余数据只存储一次;
  • 不可变树——目录树可以设置为不可变的,这一特性有利于确保备份不会被修改;
  • 写入时复制\快照——S3QL 可以复制整个目录树,而不使用任何额外的存储空间,只有当其中一个副本被修改了时,被修改的数据会占用额外的空间;
  • 高性能——所有不读写文件内容的操作都非常快,因为 S3QL 将整个文件和目录结构存储在一个数据库中,而后者会在本地缓存,且远程副本为异步更新;
  • 支持低带宽连接——S3QL 将文件内容分成多个小块并缓存在本地。

近日,该项目在Hacker News 上引发了激烈的讨论,并登上了HN 的首页。不过,虽然讨论的内容很多,但关于S3QL 的内容相对较少,大多数讨论是围绕类似的解决方案,比如 Duplicity Attic Tarsnap ObjectiveFS 等。网友 indiv0 根据 S3QL 的文档断定,S3QL 使用的加密算法为 MAC-then-encrypt 算法。他认为这种算法不好。也有其他网友持类似观点,其中 dlitz 就认为这种算法太老。但网友 JoachimSchipper 并不认为 S3QL 采用了 MAC-then-encrypt 算法。另外,网友 witten 使用过 S3QL 和 Tarsnap,他认为:

S3QL 使用了远程加载文件系统,从根本上讲,这不适合无人值守的备份。在许多情况下,S3QL 加载的文件系统会在备份过程中因为网络问题中断……

另外,S3QL 会周期性地发布不支持旧版本文件格式的新版本,或者仅仅向前支持一定的版本数量。因此,如果你升级不够经常,那么你会发现自己用了一个拒绝读取现有的 GB 级数据的版本。

关于第二点, S3QL 开源页面也提到了:

S3QL 已经稳定,可以用于生产环境。不过从一个小版本升级到下一个可能会改变公共接口,或者需要升级文件系统结构。因此,强烈建议在升级前阅读变更日志。

按照该页的说法,如果用户系统支持 Python 3.3 及以上版本,则建议下载最新的 2.x 版本。但 maint-1.x 分支也可以用于生产环境,只是不再进行积极的开发,只会修复影响较大的 Bug。更多信息,请查看 S3QL Wiki


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-07 19:004218
用户头像

发布了 1008 篇内容, 共 374.1 次阅读, 收获喜欢 340 次。

关注

评论

发布
暂无评论
发现更多内容

如何说孩子才肯听,怎么听孩子才肯说(下)

石云升

读书笔记 育儿 10月月更

物流CRM软件能帮你送快递吗?

低代码小观

企业管理 物流行业 CRM 管理系统 物流系统

成本直降50%,下一代网关震撼发布

阿里巴巴云原生

云原生 网关 kurbernetes

别再傻傻分不清 AVSx H.26x MPEG-x 了

声网

音视频

官方线索|2021 长沙·中国 1024 程序员节

穿过生命散发芬芳

1024我在现场

SQL注入进阶篇一php代码审计

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

GrowingIO Design 组件库搭建之 CI/CD

GrowingIO技术专栏

持续集成 CI/CD 持续交付 Github Actions 组件库

【得物技术】自动化生成代码几种方案的演变

得物技术

自动化 代码 生成代码 机器 自动

没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer

收到请回复

Java MySQL 数据库 面试

入职腾讯的前一天,我哭了(传统行业被裁,奋战一年成功逆袭!)

收到请回复

架构 编程语言 后端 语言 & 开发 java

微服务链路追踪组件Skywalking实战

Fox

Spring Cloud Skywalking 链路追踪组件 微服务调用链

官方线索|2021 长沙·中国 1024 程序员节

耳东@Erdong

1024我在现场 10月月更

官方线索|RTE2021 实时互联网大会

穿过生命散发芬芳

1024我在现场

Telemetry标准日志接口如何提升运维效率?

怀瑾握瑜

运维 存储 SSD nvme

官方线索|1024短信盲盒,掘友你好,见字如面

xcbeyond

1024我在现场

官方线索|2021数智马拉松大赛,AI音乐之夜

石云升

1024我在现场

从转移工具到移动急救室,5G救护车给行业带来了什么变化?

脑极体

我与消息队列的八年情缘

勇哥java实战分享

RocketMQ 消息队列 Activemq

【设计模式】第三篇-单例模式

Brave

设计模式 单例模式 10月月更

官方线索|【云+社区】程序员过节指南:如何玩转你的1024 ?

Regan Yue

1024 1024我在现场

如何在 Web 前端做 3D 音效处理

ZEGO即构

大前端 音视频 3D音效 范围语音

Knative Autoscaler 自定义弹性伸缩

全象云低代码

Knative Serverless Kubernetes

《原则》在解决技术问题中的应用

Changing Lin

10月月更

织信OA考勤管理系统是如何解放企业内部考勤的?

优秀

低代码

017云原生之一些技术概念

穿过生命散发芬芳

云原生 10月月更

Java 17 与 Java 11 相比有什么变化?

码语者

Java

官方线索|鸿蒙1024程序员节

轻口味

1024我在现场

golang和java的性能对比及golang内存管理

hanaper

不了解Zookeeper的童鞋看过来哦~

Regan Yue

zookeeper 10月月更

浪潮云荣登“中国数字安全能力图谱-信息计算环境”多项安全能力者领域

浪潮云

云计算

红黑树

Dobbykim

S3QL:一个用Python写成的在线存储系统_Python_谢丽_InfoQ精选文章