`

Flickr Stats 功能的设计经验

阅读更多

FlickrDBA Dathan Pattishall 在前几天的 MySQL 大会上分享了 Scaling Heavy Concurrent Writes In Real Time (Record every Referral for Flickr Realtime) ,其中介绍了 Flickr Stats 的设计经验。国内好多 Web 站点其实也在设计类似的功能,只是不知道细节罢了。

数据结构原型

 字段               数据类型         
Path_query Varchar(255) PK
Domain Varchar(50)
Owner Bigint
When Date
Object-ID Bigint
Object-Type Tinyint
Counts and stuff Various ints May be some keys

主键是字符串,开销太大。其他的索引如果做主键,也比较大。当表大小超过内存的时候,插入速度很慢,I/O 能力也上不来。

优化数据结构

数据预处理,通过 CONV(SUBSTR(MD5(Url),0,16),16,10) 把 Path_query 修改为 64 位的 ID (8字节), 主键为 ID+Owner+object+object-type,这个统计信息很容易抽象到一个数据对象,这个索引的设计也在于此。

另外补充一点,利用 PHP 的 ip2long() 和 long2ip() 函数对 IP 地址作预处理,耗费的存储空间只为原来地 25%,这是个很有趣的技巧。

数据 Sharding

对于海量的数据,以一个礼拜为间隔,水平分割。按照不同的数据力度每周一个表,每年一个全局表,再加上一个汇总表。数据量越大,InnoDB 存储引擎针对字符串的索引浪费的空间就越大。单个查询的 I/O 也自然大了起来。

所有应用对 DB 的响应要求 是 300 毫秒。但高并发写入的时候响应时间就糟糕起来。Flickr 的 Java 牛人实现了 Referral 队列,每 4000 条做批量处理。这样 IO 拥塞的就解决掉了。

总体的服务器规模过去 介绍过,对专业版用户的数据是永久保留的,而普通用户则只保留几周,为节省空间,采用 MyISAM 引擎,当用户转为专业版时,迁移数据。

补充一下,抓取 URL 是用的 curl 。最后,这篇 PPT 在线观看

作者: Fenng
网址: http://www.dbanotes.net/arch/flickr_referral_design.html


[点击查看详细]
分享到:
评论

相关推荐

    Flickr-29566

    除了搜索,Flickr API还支持上传、下载、修改图片元数据、获取用户信息、管理相册等功能。例如,上传照片: ```csharp var uploadResponse = flickr.PhotosUpload.Upload(new UploadParameters { FilePath = @"C:\...

    flickr的php接口

    在IT行业中,Flickr是一个备受推崇的在线照片管理和分享平台,以其强大的功能和丰富的社区而闻名。本主题将深入探讨如何使用PHP与Flickr的API进行交互,以便开发出能够上传、下载、搜索以及管理Flickr相册的应用程序...

    flickr架构

    标题:"flickr架构" 描述了flickr系统架构的关键组件与设计原则,为读者提供了深入理解这一著名照片分享平台背后的复杂技术体系的机会。 flickr,作为互联网早期的照片分享平台之一,其架构设计不仅支撑了海量用户...

    Flickr & WEBIMAGER-截图并上传到flickr的工具(转)

    标题中的"Flickr & WEBIMAGER"指的是一个工具,它整合了Flickr图片分享服务与WEBIMAGER的功能,允许用户进行屏幕截图并直接上传至Flickr。这个工具可能是为那些经常需要分享屏幕快照且希望快速发布到网络上的用户...

    Laravel开发-flickr-laravel5

    【Laravel开发-flickr-laravel5】是一款专为在 Laravel 5 框架中集成 Flickr API 而设计的扩展包。Laravel 是一个基于 PHP 的流行开源框架,以其优雅的语法和强大的功能深受开发者喜爱。Flickr,则是全球知名的图片...

    dataset_coco.json+dataset_flickr8k.json+dataset_flickr30k.json

    标题中的"dataset_coco.json+dataset_flickr8k.json+dataset_flickr30k.json"表明这是一组用于图像 caption 任务的数据集,其中包含了COCO(Common Objects in Context)、Flickr8k 和 Flickr30k 这三个知名数据集的...

    Flickr社交网络数据集

    《Flickr社交网络数据集深度解析》 Flickr,作为全球知名的图片与视频分享平台,其用户间的互动数据构成了一个庞大的社交网络。该平台不仅承载了丰富的多媒体内容,更是研究社交网络、用户行为以及社区结构的理想...

    基于Python的关于Flickr图片网站的爬虫.zip

    最后,为了确保爬虫项目的可维护性和可扩展性,我们需要合理组织代码,使用类和函数封装功能,考虑异常处理,以及记录日志以便追踪和调试。此外,可以考虑将爬虫程序设计为定时任务,定期更新数据。 在“基于Python...

    python作业-基于Flickr30k数据集实现图像文本跨模态搜索python源码+数据集+测试界面+项目说明.zip

    python作业-基于Flickr30k数据集实现图像文本跨模态搜索python源码+数据集+测试界面+项目说明.zip 已获导师指导并通过的97分的高分期末大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保...

    python作业-基于Flickr30k数据集实现图像文本跨模态搜索python源码+数据集+测试界面+项目说明(高分课程设计)

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    Flickr and PHP

    这一特性使得Flickr能够成为一个功能强大的平台,支持各种各样的应用场景。 #### 二、系统逻辑架构 Flickr的系统架构可以分为以下几个主要部分: 1. **页面逻辑(Page Logic)**:处理用户请求的前端部分,包括页面...

    Flickr 客户端(附源码)

    描述部分提到,这个Flickr客户端是作者自行开发的,意味着它可能具有个性化的功能和用户体验。开发者计划在未来继续完善这个应用,这可能包括增加新特性、改进性能或优化界面。使用这样的客户端,用户无需直接访问...

    基于jquery的Flickr图片外链相册API可支持分类与全屏显示

    本文将深入探讨如何利用jQuery结合Flickr API创建一个支持分类和全屏显示的图片外链相册。 首先,理解Flickr API:Flickr是著名的在线照片管理和分享平台,它提供了丰富的API(应用程序编程接口)供开发者使用。...

    flickr-uploader, 上传一个媒体目录到 Flickr,作为你本地存储的备份.zip

    flickr-uploader, 上传一个媒体目录到 Flickr,作为你本地存储的备份 flickr上传器上传一个媒体目录到 Flickr,作为你本地存储的备份。有兴趣帮助管理请求请求和...插件功能:在Flickr帐户( JPG,png ) 上上传图片。R

    flickr flag 论文2

    标题 "flickr flag 论文2" 涉及的主题主要集中在使用Flickr平台的数据进行图像相似性学习、社交标记对网络图像搜索的提升、通过Flickr理解世界、图像标签学习以及照片集智能批量标记等方面。这些论文代表了研究者...

    flickr批量图片下载工具

    总之,“flickr批量图片下载工具”是一个为方便用户快速、高效地获取flickr图片资源而设计的应用,特别适合那些需要处理大量flickr图片的摄影师、设计师或者收藏者。通过批量下载功能,用户可以节省大量时间,并且...

    UICollectionView测试代码使用的Flickr类

    3. 设计模型类,将网络返回的数据转化为可操作的对象。 4. 实现UICollectionViewDataSource和UICollectionViewDelegate,填充和展示数据。 5. 异步加载图片,优化用户体验。 6. 可能涉及自定义UICollectionView布局...

    Flickr8k训练、验证、测试集json文件

    图像描述数据集 Flickr8k

    flickr8k text数据集

    flicrk8k 数据集。 用于image caption等相关数据的处理

Global site tag (gtag.js) - Google Analytics