`
argan
  • 浏览: 129983 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

friendfeed如何使用mysql

阅读更多

读完这一篇How FriendFeed uses MySQL to store schema-less data ,颇有感触

 

文中主要表达了几个意思:

*数据量相当大的时候,维护mysql本身的索引非常困难,新增/删除索引都很费资源

*新的方案使用mysql,但是只是用他基本“数据库”的功能,而不使用“关系”的功能,就是说,只用mysql来保存数据,以及简单的单表查询,不使用join之类的功能

*没有schema,表结构很简单,只有id,last_updated,content,这样的几个字段,其中content是一个大字段,所有内容放在这里面

*索引由应用来维护,为每一条索引创建一张表,数据的增珊改由应用来进行

*查询索引由应用来进行,先查索引,然后取数据

*提供api来封装以上这些逻辑,包括数据分区逻辑的实现

 

这里其实是有一点问题需要解决的,由于索引自己去维护,和主表的数据肯定会有一些不一致,特别是新增索引的时候,需要异步的去初始化这个索引,而且还需要做增量,只有应用对这个一致性要求不高的时候才能使用这个方案。

 

还有一个问题,如果某次查询要查两个索引,同时每个索引过滤出来的数据比较多的时候,在应用这端的处理就会消耗比较大了,要对多个结果集进行处理(交集或者幷集),这个问题其实主要要根据应用的特点来看的,采用了这种数据切分的方案,对应用本身就有一些限制的,换一个角度讲,只有应用的特征适合做这种数据切分,才能应用这种方案。看起来像废话,但是是真的,没有完美的方案,只有合适的方案

 

其实以上的功能,除了分区以外,couchdb 都能支持,不过couchdb还不够成熟,至少没有一个大规模部署的先例存在。而且couchdb更彻底,索引都帮你维护了,你只需要保存你的entity,再告诉他哪些内容要索引,而且索引都是你自己写一个函数的,期待couchdb的成熟。

 

类似的方案以前我想过,不过不是用mysql,而是使用bdb来做存储,不过只是想了一下,没做,现在看到人家在使用了,才想起来。

 

还可以看看:Quick Reference to Alternative data storages

分享到:
评论
1 楼 fuhao_987 2011-05-17  
不熟悉,,那篇英文没看懂。。不知道楼主可以翻译一下发出来不??

相关推荐

    FriendFeed如何使用MySQL存储无Schema数据.pdf

    《FriendFeed如何使用MySQL存储无Schema数据》 在FriendFeed的实践中,他们面临的问题是如何在不断增长的用户基数和数据量下,支持新功能的添加,同时不改变数据库的基础架构和已有的海量数据。这个问题的核心在于...

    friendly:http

    友谊赛精简版这是关于 FriendFeed 如何使用 MySQL 的想法的实现。 您应该阅读那篇文章以了解所有详细信息。长版把 MySQL 变成一个文档 db! 为什么? 每个人都对 NoSQL 感到非常兴奋。 除了删除 SQL 使事情具有神奇...

    Python库 | tormysql-0.3.2.tar.gz

    Tornado是一个开源的、高性能的Web服务器和异步网络库,由 FriendFeed 团队开发并贡献给Facebook。它最初是为了处理大量并发连接而设计的,特别是在长轮询(long-polling)和WebSockets等实时应用中表现优异。...

    Tornado实战Demo全集

    Tornado,又被称为“龙卷风”,最初由FriendFeed团队开发,后来被Facebook收购并开源。它的设计目标是处理大量并发连接,特别适合实时Web服务,如长轮询和WebSockets。Tornado的异步非阻塞I/O模型使得它在处理高并发...

    goatfish:由SQLite支持的小型无模式Python ORM。 :tent:

    看来此方法与FriendFeed用于在MySQL上实现无模式层的方法相同,这是非常重要的验证: 用法 要使用goatfish ,您需要做的就是创建一个从goatfish.Model继承的类。 import goatfish import sqlite3 db_connection =...

    linux下集中配置管理工具,使用python tornado框架,结合saltsatck开发自己的远程集中管理平台.zip

    Tornado是一个Python Web框架和异步网络库,最初由 FriendFeed 团队开发,后来被Facebook收购并开源。它支持WebSockets,具有非阻塞I/O模型,特别适合处理大量的并发连接,对于构建实时、响应快速的Web应用非常理想...

    Python高效开发实战:Django、Tornado、Flask、Twisted

    同时,Django内置的SQLite数据库和强大的管理后台也是其亮点,但更大型的项目可能会选择如MySQL或PostgreSQL等更强大的数据库。 Tornado则是一个轻量级且高性能的框架,它最初为FriendFeed设计,尤其适合处理大量...

    PythonWeb.zip

    6. **数据库集成**:如果项目涉及到数据库操作,可能使用了像SQLite、MySQL或PostgreSQL等数据库。Tornado自身不包含ORM(对象关系映射),但可以与SQLAlchemy、peewee等库结合使用。 7. **部署与运行**:学习如何...

    python系统后台管理,本应用是基于tornado框架 restful风格的API 实现后台管理

    Tornado是一个异步网络库,最初由Facebook的FriendFeed团队开发,后来被Twitter收购并开源。它以其非阻塞I/O模型和强大的Web服务器能力而闻名,特别适合高并发和实时Web应用。Tornado支持WebSockets,HTTP/2,以及...

    tornado-async.zip

    Tornado是Facebook开源的一个Web框架,最初为FriendFeed设计。它的核心特性是基于IOLoop(IO循环)的异步模型,这使得Tornado可以同时处理大量并发连接,特别适合于长连接和实时Web应用。Tornado的API设计简洁,易于...

    Python-基于Python的博客使用tornado和bootstrap框架开发螺壳网

    Tornado是Python的一个异步网络库,最初由Facebook的FriendFeed团队开发,后来成为开源项目。Tornado以其非阻塞I/O模型和高并发处理能力而闻名,特别适合于实时Web应用,如聊天、推送通知和长轮询等。在构建博客系统...

    Python库 | tornado_sqlalchemy-0.1.1-py3-none-any.whl

    Tornado 是一个异步网络库,最初由 FriendFeed 团队开发,后来被 Facebook 收购并开源。它以其高性能、非阻塞 I/O 和 Web 服务功能而闻名,特别适合构建实时 Web 应用和长连接服务。Tornado 的核心特性包括 Web ...

    MyChatPro.rar

    Tornado是一个开源的Python Web服务器和异步网络库,它最初由FriendFeed团队开发,后来被Facebook收购并开源。Tornado以其轻量级、高性能和非阻塞I/O模型而闻名,特别适合构建需要处理大量并发连接的实时Web应用,如...

    云海项目管理系统,是基于python的tornado框架实现的一个项目管理系统.zip

    5. **数据库集成**:为了存储项目数据,如任务、用户信息、进度等,系统可能会集成MySQL、PostgreSQL或其他关系型数据库,或者使用NoSQL数据库如MongoDB。Tornado框架提供了对多种数据库的支持。 6. **模板引擎**:...

    Python库 | tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl

    Tornado是Facebook开源的一个高性能、异步网络库,最初为 FriendFeed 开发,后来被Facebook收购并贡献给了社区。Tornado以其非阻塞的IO循环(IOLoop)和基于回调的异步模型而著名,这使得它在处理大量并发连接时表现...

    管理系统系列--云海统一权限管理系统是基于python的tornado框架实现的一个统一权限管理系统。.zip

    在管理系统中使用Python,可以快速开发出功能丰富的应用,同时Python的跨平台性使其能够在多种操作系统上运行。 接下来,我们要介绍的是Tornado框架。Tornado是由FriendFeed团队开发的,最初用于解决Facebook实时...

    yizhang.me:我的个人网站

    2. **Tornado 4.0.2**:这是一个异步网络库,最初由Facebook的FriendFeed团队开发,后来被广泛用于构建高性能的Web服务。Tornado以其非阻塞I/O和轻量级特性而著名,适合处理大量并发连接,尤其在处理WebSocket等长...

    tornado-bbs:龙卷风的演示

    首先,Tornado是一个开源的Python Web框架和异步网络库,最初由 FriendFeed 团队开发,后来被Facebook收购并开源。Tornado 的主要特点是支持非阻塞I/O模型,使得它可以处理大量的并发连接,非常适合于长连接和实时...

Global site tag (gtag.js) - Google Analytics