用云的话,节省你开发成本,快速上线,数据比较安全。缺点是一旦用了他们的,形成习惯以后,数据想迁移就会比较麻烦,你会越来越依赖,而且规模上去以后价格并不低。
早年自己做的话,你需要实现分布式文件系统,这个会比较费时间,一些开源的框架又不太靠谱,或者太庞大。不果现在好了,MongoDB 3.0出来了。

用户读请求(HTTP GET) -> CDN -> Varnish -> PHP -> MongoDB Cluster
用户写请求(HTTP PUT) -> Varnish -> PHP -> MongoDB Cluster

机房布局:中心IDC(双线/BGP) PHP + MongoDB Cluster
边缘节点:Varnish散布在电信、联通,移动。一般可以租 VPS来架设 varnish。

缓存超时:注意在 HTTP头部控制好 Max-Age等超时时间,比如404超时,缓存20秒即可。

你自己做的话,可以考虑下 MongoDB 3.0 WiredTiger引擎 + PHP来做数据存储,数据按照 crc32的 hash存到32个不同的 collection里面,然后按照文件名来做 shard key,几百行就搞定了,前端加个CDN。把 MongoDB做后端存储,负责分布式和冗余。你前端接个 PHP+ varnish做缓存,性能和 openstack swift差不多,如果外面再加上 CDN的话,你不用当心访问量了。

-----------------
上面是完备的方案,你如果只弄个什么校内比赛,你直接php存磁盘上就行了嘛,然后返回个 HTTP URL就得了,注意下 HTTP超时和续传。

 
 
作者:韦易笑
链接:https://www.zhihu.com/question/30060755/answer/46618166
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

MongoDB 搭建文件存储的方案的更多相关文章

  1. MongoDb gridfs-ngnix文件存储方案

          在各类系统应用服务端开发中,我们经常会遇到文件存储的问题. 常见的磁盘文件系统,DBMS传统文件流存储.今天我们看一下基于NoSQL数据库MongoDb的存储方案.笔者环境 以CentOS ...

  2. MongoDb gridfs-ngnix文件存储方案 - 图片

    http://www.cnblogs.com/wintersun/p/4622205.html 在各类系统应用服务端开发中,我们经常会遇到文件存储的问题. 常见的磁盘文件系统,DBMS传统文件流存储. ...

  3. mongoDB 大文件存储方案, JS 支持展示

    文件存储 方式分类 传统方式 存储路径 仅存储文件路径, 本质为 字符串 优点: 节省空间 缺点: 不真实存储在数据库, 文件或者数据库发送变动需要修改数据库 存储文件本身 将文件转换成 二进制 存储 ...

  4. Hadoop小文件存储方案

    原文地址:https://www.cnblogs.com/ballwql/p/8944025.html HDFS总体架构 在介绍文件存储方案之前,我觉得有必要先介绍下关于HDFS存储架构方面的一些知识 ...

  5. MongoDB ----基于分布式文件存储的数据库

    参考: http://www.cnblogs.com/huangxincheng/category/355399.html http://www.cnblogs.com/daizhj/category ...

  6. Nginx|构建简单的文件服务器(mac) 续-FastDFS安装(mac)|文件存储方案

    目录 Nginx|构建简单的文件服务器(mac) 1 所需安装包 2 安装fastdfs-nginx-module-master 3 安装Nginx Nginx|构建简单的文件服务器(mac) 续上文 ...

  7. 【网络爬虫入门05】分布式文件存储数据库MongoDB的基本操作与爬虫应用

    [网络爬虫入门05]分布式文件存储数据库MongoDB的基本操作与爬虫应用 广东职业技术学院  欧浩源 1.引言 网络爬虫往往需要将大量的数据存储到数据库中,常用的有MySQL.MongoDB和Red ...

  8. 搭建基于 HDFS 碎片文件存储服务

    安装 JDK HDFS 依赖 Java 环境,这里我们使用 yum 安装 JDK 8,在终端中键入如下命令: yum -y install java-1.8.0-openjdk* 使用如下命令查看下 ...

  9. FastDFS安装(mac)|文件存储方案

    目录 FastDFS安装(mac)|文件存储方案 1 FastDFS介绍 1.1 FastDFS架构 1.2 工作原理实例介绍 1.3 FastDFS上传和下载流程 1.4 FastDFS文件索引 2 ...

随机推荐

  1. ASP.NET Core的身份认证框架IdentityServer4--(3)令牌服务配置访问控制跟UI添加

    使用密码保护API OAuth 2.0 资源所有者密码授权允许一个客户端发送用户名和密码到IdentityServer并获得一个表示该用户的可以用于访问api的Token. 该规范建议仅对" ...

  2. Yii的URL助手

    Url 帮助类 获得通用 URL 记住 URLs 检查相对 URLs Url 帮助类提供一系列的静态方法来帮助管理 URL. 获得通用 URL 有两种获取通用 URLS 的方法 :当前请求的 home ...

  3. Yii的HTML助手

    Html 帮助类 基础 表单 样式表和脚本 超链接 图片 列表 任何一个 web 应用程序会生成很多 HTMl 超文本标记.如果超文本标记是静态的, 那么将 PHP 和 HTML 混合在一个文件里 这 ...

  4. Centos下Sphinx的下载与编译安装

    官方下载地址   http://sphinxsearch.com/downloads/release/ 百度云下载地址  https://pan.baidu.com/s/1gfmPbd5 wget  ...

  5. 深入理解Python的字符编码

    原文:http://lukejin.iteye.com/blog/598303 在处理中文的时候,我们有时候会碰到中文乱码的问题. 究其根本原因是正确的字节序列按照错误的编码方式解码成字符 或者正确的 ...

  6. network programming-简单的TCP客户服务器编程

    简单的TCP程序客户端流程:创建套接字(套接字用IP地址:端口号)表示)socket()->请求连接connect()->交换数据 send()/recv()->关闭连接 close ...

  7. wpf 如何让控件左右移动

    通过DoubleAnimation可以让控件进行左右移动. <Canvas x:Name="canvas_Shape" HorizontalAlignment="S ...

  8. uva140

    全排列回溯剪枝. 题目数据很水.记录当前最小带宽,边回溯边计算当前序列最大的距离(也就是带宽),如果当前带宽超过了当前的最小带宽就剪枝. 注意下,数据读入时的字符串处理. AC代码 #include& ...

  9. 为什么在Python里推荐使用多进程而不是多线程

    转载  http://bbs.51cto.com/thread-1349105-1.html 最近在看Python的多线程,经常我们会听到老手说:"Python下多线程是鸡肋,推荐使用多进程 ...

  10. 最短路径问题(dijkstra-模板)

    #include<bits/stdc++.h> using namespace std; ][]; ]; ]; ][]; int n,x,y,s,m,e; int k; double mi ...