`
Qieqie
  • 浏览: 340066 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

设计的一个考虑点:区分数据的常变部分和不常变部分

阅读更多
做系统时,开始阶段设计领域类时,除了从数据结构、对象模拟的角度出发,特别是访问量大的时,还应该考虑数据的实际应用场景,区分数据的常变部分(或称瞬时状态)和不常变部分。将常变部分和不常变部分剥离,能更好为其制定适当、高效的访问策略。

我以陶宝商品为例子。陶宝商品的不常变部分是:商品的基本信息、状态;常变部分是:商品浏览次数。
一般的设计:
用户每次浏览某个商品时,服务器总是准备好上面的所有数据,一次向浏览器flush显示出来。

可是,陶宝不是这样做:陶宝的一个商品页面并不是一次由服务器准备好,统一向浏览器flush完成的。
它把页面分为若干块,不同块的数据从不同的服务器请求:
图片有图片服务器(这没什么特别的,不是本贴的主要说明点)
样式有样式服务器(这没什么特别的,不是本贴的主要说明点)
基本信息有基本信息服务器(Web服务器)
商品浏览次数有“次数服务器”(可能是另外的Web服务器)
商店店主有店主在线状态服务器
。。。

这里作为常变数据的商品浏览数据并不是随商品数据合为一块发送到浏览器的。
OK。这样做到:各部分可以很好利用各部分的特性,做扩展、做缓存、做即时性的不同承诺。

不常变数据可以充分利用缓存(考虑本地缓存) + 即时持久化,常变数据可以使用集中数据缓存器 + 隔时段持久化。特别是一些瞬时状态,如在线状态的,基本上就不需要持久化。
像商品浏览次数这种每次只要用户浏览就需要变更的,只需要update常变数据服务器,而不用立即持久化。
这样,那些不常变数据的缓存的作用和效果将极其明显。

页面在达到用户浏览器时,再通过ajax技术,从常变数据服务器获取那些常变数据。
(这个时间段,该数据将显示空白,不过这一点也不影响用户体验):

在设计表时,不必一定要把“浏览次数”列设计在基本信息表里。“浏览次数”之类的数据可以是单独的服务器,以商品Id作为其身份证异步地从浏览器发起向那个单独服务器去取。
同样,店主表基本上也可以不需要在线状态的字段。

--------------------
只要把缓存作为一项高级决策来做,不要因为缓存中间件提供简单的API,就想用就用,不想用就不用,一般就不会太失望。




  • 描述: 陶宝ajax请求“商品浏览量”服务器瞬间该数据是空白的,但不一会该数据就很快到达显示出来
  • 大小: 152.6 KB
分享到:
评论
5 楼 bloodrate 2008-06-11  
把不变的信息放到缓存里那要多大得内存才够啊,分布式缓存。。
确实成本比较高,那你说本论坛得“性别”“积分”“来自”不怎么变,文章数经常变,那么分别存储么,分别存储可能带来多表查询啊,如果是小并发量,还真看不出区别
4 楼 laiseeme 2008-05-19  
taobao是用什么东西去映射这些在不同的服务器上面的数据的呢?
3 楼 jbon 2008-05-19  
不错的设计,耦合度明显比将两者设计在一起要来得低
2 楼 javachs 2008-05-05  
所有的设计模式要达到的目的,就是为了解决你那个变与不变的问题。
1 楼 xly_971223 2007-07-24  
对于海量数据的应用确实是一个不错的解决办法 但是成本将会很高 能这样做的公司都是些门户网站之类的

相关推荐

    数据可视化设计指南:图表设计.pdf

    饼图是一种能够方便表达数据部分与整体关系的图表,适合离散性和持续性数据。然而,饼图的设计和使用也存在争议,比如一些百分比之间的比较不明显,导致读图效率降低。当饼图的数据百分比较小时,采用100%堆叠的柱状...

    SaaS数据模型设计

    在SaaS(Software as a Service)模式下,数据模型设计是构建高效、可扩展和多租户应用程序的关键组成部分。一个良好的SaaS数据模型能够确保所有用户都能在一个共享的环境中安全地存储和访问数据,同时保持数据隔离...

    数据可视化设计指南:图表设计.zip

    数据可视化是一种将复杂的数据集转化为易于理解的图形或图像的过程,它在信息技术、数据分析和商业决策等领域发挥着至关重要的作用。本指南将深入探讨图表设计的关键要素,帮助读者掌握有效的数据可视化技巧。 首先...

    数据中心设计方案.docx

    设计范围明确指出哪些领域和设施将被纳入设计考虑,而主要设计原则则是指导整个设计过程的核心思想。 - **可扩展性、兼容性原则**:考虑到未来业务增长和技术演进,设计应允许便捷地添加或升级硬件和软件。 - **...

    数据可视化页面模板 数据可视化驾驶舱.rar

    在"数据可视化页面模板 数据可视化驾驶舱.rar"这个压缩包中,包含的资源可能是一个预设计的、用于快速构建数据可视化的页面模板。这些模板通常包括各种图表类型,如折线图、柱状图、饼图、散点图、热力图等,以及...

    公开数据集:UNSW_NB

    UNSW_NB是一个广泛使用的公开数据集,主要用于网络安全领域的研究,特别是入侵检测系统(Intrusion Detection System, IDS)的开发和评估。这个数据集由澳大利亚新南威尔士大学(University of New South Wales, NSW...

    运动会分数统计系统数据结构课程设计

    在本课程设计中,我们关注的是“运动会分数统计系统”,这是一个基于数据结构的应用程序,用于高效管理和分析运动会的各项比赛成绩。下面将详细讨论系统的核心功能、所涉及的数据结构以及实现这些功能的技术要点。 ...

    最新漂亮的大屏数据可视化设计各类元素(图标、图表、背景、标题概念元素..)PSD文档.zip.zip

    8. **色彩理论与配色**:色彩对于数据可视化至关重要,正确的颜色选择可以突出重点,区分数据类别,甚至影响观众的情绪反应。这个资源包可能提供一系列预设的颜色方案,帮助设计师遵循色彩理论进行配色。 9. **响应...

    3万字38页《数据仓库知识体系》.pdf

    本文档《数据仓库知识体系》详细整理了数据仓库领域几乎所有的知识点,覆盖了数据仓库的多个方面,从发展阶段、数据模型、事实表设计、多维体系结构、规范设计、元数据管理、维度表设计、范式和反范式化、数据仓库...

    数据可视化设计研究与分析-收藏学习.pdf

    在这个大数据时代,如何有效地管理和利用这些海量数据成为了一个亟待解决的问题。数据可视化作为一种将数据转换为图形图像的技术,通过将复杂的数据转化为直观的视觉形式,大大提高了数据的可读性和吸引力,同时也...

    量化数据库设计.pdf

    这种情况下,设计一个有效的量化数据库至关重要,以提高数据管理效率,减少API调用的频繁更改和功能混淆,确保数据更新和维护的高效性。 在数据库选型上,考虑到量化数据主要为时序数据,且字段会随研究深入而增加...

    数据结构课程设计图书管理系统C++语言版

    数据结构课程设计是计算机科学与技术专业的重要实践环节,它要求学生运用所学的数据结构理论,设计并实现一个实际的应用系统。在这个特定的项目中,我们关注的是一个使用C++编程语言实现的图书管理系统。图书管理...

    渐变创意设计PPT模板 - 副本.pptx

    【渐变创意设计PPT模板】是一种视觉效果独特、引人入胜的演示文稿设计方式,它在现代商业和教育领域中广泛应用。渐变设计是近年来流行的设计趋势,通过结合两种或更多颜色的平滑过渡,为PPT增添了动态和深度感。这种...

    具有部分已知信息的数据聚类及其MATLAB实现.pdf

    模糊c-均值聚类算法(FCM)是模糊聚类中的核心算法,它通过最小化目标函数来实现分类,目标函数考虑了样本与类中心的加权误差平方和,是一个非线性规划问题。FCM算法通过迭代优化策略来计算聚类原型和模糊划分矩阵,...

    工程结构荷载与可靠度设计原理第一部分小结.pptx

    本部分小结主要涵盖了以下几个关键知识点: 1. **结构设计理论的发展**:从传统的弹性理论,即基于确定性参数的计算方法,到极限状态理论的引入,再到概率设计法的运用,结构设计逐步考虑了不确定性因素。概率设计...

    常见动物识别数据集(含:猫、狗、鸟、鸭等15种动物)

    该数据集是一个专门用于动物识别的资源,包含了15种...总之,这个动物识别数据集为研究者和开发者提供了一个实践计算机视觉和深度学习技术的良好平台,通过设计和训练模型,可以深入了解动物识别的挑战并探索解决方案。

    基于UDP协议的聊天程序设计报告(完整资料).doc

    每个数据报包含报头和数据部分,报头的前8字节用于控制信息,其余部分装载实际数据。UDP使用端口号区分不同的应用,允许同时进行多个数据传输。端口号范围从0到65535,其中大于49151的通常被视为动态端口。数据报的...

Global site tag (gtag.js) - Google Analytics