小文件的存储

对于小文件的存储,指小于16M的文件

import bson
bson.binary.Binary()
功能: 将bytes格式字符串装换为mongodb的二进制存储格式

将文件存储到数据库中:

#小文件存储方案
#直接装换为二进程格式插入到数据库

from pymongo import MongoClient
import bson.binary

conn = MongoClient("localhost", 27017)
db = conn.image

myset = db.python

#存储文件
f = open("mongo1.py", "rb")

#将图片内容转换为可存储的二进制格式
content = bson.binary.Binary(f.read())

#插入到文档
myset.insert({"filename":"mongo1.py","data":content})

conn.close()

存放到数据库中的格式是:{ "_id" : ObjectId("5ba4bc1f69d72e1bc400161f"), "data" : BinData(0,"ZnJvbSBwe..........NlKCkK"), "filename" : "mongo1.py" }

从数据库中取出文件:

from pymongo import MongoClient
#连接数据库对象
conn = MongoClient("localhost", 27017)
#创建数据库对象
db = conn.image

#创建集合对象
myset = db.python

#提取文档,由于find_one返回之后的是一个字典
dic = myset.find_one({"filename":"mongo1.py"})
with open("mongo5", "wb") as f:
    #通过字典的键值来获取数据并写到新的文件中
    f.write(dic["data"])

conn.close()

原文地址:https://www.cnblogs.com/zengsf/p/9690422.html

时间: 2024-10-02 18:41:53

小文件的存储的相关文章

基于mogileFS搭建分布式文件系统--海量小文件的存储利器

一.分布式文件系统    1.简介 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于客户机/服务器模式.一个典型的网络可能包括多个供多用户访问的服务器.另外,对等特性允许一些系统扮演客户机和服务器的双重角色.例如,用户可以"发表"一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样. 当下我们处在一个互联网飞速发展的信息社会,在

基于mogileFS搭建分布式文件系统 适用于海量小文件的存储

一.分布式文件系统 1.简介 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于客户机/服务器模式.一个典型的网络可能包括多个供多用户访问的服务器.另外,对等特性允许一些系统扮演客户机和服务器的双重角色.例如,用户可以"发表"一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样. 当下我们处在一个互联网飞速发展的信息社会,在海量并

基于hbase+hdfs的小文件(图片)存储

图片文件一般在100k一下,质量好一些的在几百k,特殊的图像可能达到10m左右,如果直接存储在hdfs上会对namenode的内存造成很大的压力,因为namenode的内存中会存储每个文件或者目录的inode信息.但是如果存储在hbase中,hbase的单个cell超过100k就会造成后期压力.因此采用hdfs的sequenceFile存储文件,hbase存储文件在sequenceFile中的索引信息. sequenceFile存储 自hadoop2.7.3以后,sequenceFile的wri

海量小文件存储与Ceph实践

海量小文件存储(简称LOSF,lots of small files)出现后,就一直是业界的难题,众多博文(如[1])对此问题进行了阐述与分析,许多互联网公司也针对自己的具体场景研发了自己的存储方案(如taobao开源的TFS,facebook自主研发的Haystack),还有一些公司在现有开源项目(如hbase,fastdfs,mfs等)基础上做针对性改造优化以满足业务存储需求: 一. 通过对若干分布式存储系统的调研.测试与使用,与其它分布式系统相比,海量小文件存储更侧重于解决两个问题: 1.

海量小文件存储最优解决方案,杉岩数据MOS完美解决

面对千亿量级的小文件,存储系统压力山大 所谓小文件,指的是存储占用空间相对较小的文件,一般来说低于64MB的文件就可以被认定为小文件,而大量的小文件大小则在几KB到几十KB之间.在云计算.大数据业务中,文本.图片.音乐等是典型的小文件应用场景. 随着数字化创新的加速,组织内部的数据呈现出指数级增长的趋势,特别是小文件更是随着业务增长到一个巨大的量级.与大文件的存储不同的是,大量磁盘在小文件存储场景中的性能极低,单块企业级SATA磁盘如果全部存储4KB左右的小文件,带宽只有520KB/s,远远小于

关于hadoop处理大量小文件情况的解决方法

小文件是指那些size比HDFS的block size(默认64m)小的多的文件.任何一个文件,目录和bolck,在HDFS中都会被表示为一个object存储在namenode的内存中,每一个object占用150bytes的内存空间.所以,如果有10milion个文件,每一个文件对应一个block,那么就会消耗namenode 3G来保存这些block的信息.如果规模再大一点,那么将会超出现阶段计算机硬件所能满足的极限. 控制小文件的方法有: 1应用程序自己控制 2archieve 第一种是我

LOSF 海量小文件问题综述

1.LOSF问题概述 在互联网(尤其是移动互联网).物联网.云计算.大数据等高速发展的大背景下,数据呈现爆炸式地增长.根据IDC的预测,到2020年产生的数据量 将达到40ZB,而之前2011年6月的预测是35ZB.然而,社会化网络.移动通信.网络视频音频.电子商务.传感器网络.科学实验等各种应用产生的数 据,不仅存储容量巨大,而且还具有数据类型繁多.数据大小变化大.流动快等显著特点,往往能够产生千万级.亿级甚至十亿.百亿级的海量小文件,而且更多地 是海量大小文件混合存储.由于在元数据管理.访问

FastDFS文件名策略及对小文件的优化

0.简介 FastDFS是一个应用级分布式文件存储服务,其采用中心型结构(类似GFS.HDFS.TFS等),主要用于大中型网站存储资源文件.FastDFS具有轻量级,支持高并发放访问,负载均衡,可扩展等优点.而FastDFS最大的亮点就是对小文件的存储性能较好,这主要来自于其文件名策略. 1.小文件存储性能优化 小文件的性能瓶颈主要来自于对元数据服务器(如FastDFS中的TrackerServer或TFS中的NameServer)的访问,因为当文件本身大小很小时,元数据存储所占空间与文件内容存

基于mapfile的小文件存储方案

1.采用mapfile存储小文件,会自动创建两个sequenceFile文件:data和index.数据存储在data中,index存储data中存储的文件的key(排好序的).这样可以实现小文件的合并存储,并且实现按key的快速索引. 2.代码: 文件存储: /**     * 将指定的文件写入文件系统,指定次数     * @param p    写入路径     * @param image    写入文件内容     * @param count    写入数量     * @throw