【问题标题】:Store in database or prepare data with javascript存储在数据库中或使用 javascript 准备数据
【发布时间】:2012-02-24 00:43:39
【问题描述】:

我正在使用问题中的建议实现活动提要的设计:How to implement the activity stream in a social network

如果我有这样的架构,我如何才能最好地查询活动可能具有相应标签的活动提要(这意味着我需要加入一些其他表来获取标签数据)。

示例:

Activity 1: user4 tagged publication with tag1, tag2, tag3
Activity 2: publication rated 3 by user2
Activity 3: publication subscribed to by user9`

活动表:

id             
user_id       (int)
activity_type (tinyint)
source_id     (int)  
parent_id     (int)
parent_type   (tinyint)
time          (datetime but a smaller type like int would be better) 

我对如何实现这一点的想法是:

1. 使用 LEFT JOIN 进行 1 次查询,然后使用 javascript 将标签分配给相应的活动。

或者

2. 将标签作为 JSON 存储在数据库字段中

【问题讨论】:

    标签: javascript mysql json


    【解决方案1】:

    我的选择是LEFT JOIN 选项。这些标签没有 来分配JavaScript。如果是使用服务端语言输出流,可以同时输出标签。

    选项 #2 不好,因为它会阻止您在将来需要时使用 SQL 对标签进行(有效)查询。

    【讨论】:

    • 让客户端处理工作负载以提高性能不是更好吗?此外,我已经在我的数据库模型中获得了具有关系的标签,我只是想弄清楚如何避免对我的活动提要进行过多的查询。
    • 对于像为标签生成 HTML 这样小的事情,让客户端完成工作并没有真正获得任何好处。
    • 即使它扩展到每秒数百万次读取?用javascript做有什么坏处吗?
    • 如果您每秒有数百万次读取,那么您需要担心的不仅仅是在服务器端为标签生成一点点 html。但是,不,用 javascript 来做这件事并没有什么坏处,除非有大量的标签可能会导致访问者出现性能问题。您可能应该避免做的唯一一件事是为每个活动发出 AJAX 请求以获取其标签。
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2017-02-19
    相关资源
    最近更新 更多