内存数据库应用之NBA篮球图文直播室存储设计

简介: 内存数据库应用之NBA篮球图文直播室存储设计 1.1 摘要    内存数据库适用于实时性访问要求很高的业务应用系统,尤其是实时数据直播报类系统,如篮球比赛图文直播室,足球比赛图文直播室等各类实时播放类的体育赛事。

内存数据库应用之NBA篮球图文直播室存储设计

1.1 摘要 

  内存数据库适用于实时性访问要求很高的业务应用系统,尤其是实时数据直播报类系统,如篮球比赛图文直播室,足球比赛图文直播室等各类实时播放类的体育赛事。本文以NBA篮球比赛直播室后台内存数据的存储设计为业务切入点,以Memcached内存数据库为平台,详细介绍了内存数据库在实时业务应用的典型应用。

1.2 业务规则  

  NBA篮球比赛分为主客场两支球队,允许各队同时5名球员上场比赛,允许球员替换上场;分为上下半场,各两节,每节12分钟,全场48分钟;常规时间内比分相同则进入加时,加时赛每节5分钟,如加时后,比分仍相同则进入下一个加时,直至分出胜负。详细比赛规则请参见度娘。

1.3 功能需求

  NBA篮球图文直播室实现的功能主要包括实时数据、文字直播、技术统计、在线评球四大功能。实时数据包括实时比分、单节比分、当前场上队员、本节犯规次数、剩余暂停次数信息。文字直播是比赛实况和互动信息的实时播报。技术统计是两队参赛队员各项技术参数的统计和整个球队各项技术参数的汇总统计。如下图所示:

  详细功能如下表所示:

序号

模块

功能

说明

1

实时数据

实时比分

两队实时总比分

2

单节比分

两队当前节比分

3

场上队员

两队当前场上队员

4

本节犯规

本节犯规次数,满5次罚球,清0

5

剩余暂停

剩余长短暂停数

6

文字直播

文字直播

直播员实时更新的赛况信息和互动信息

7

技术统计

出场时间

每个球员的出场比赛时间

8

投篮(中-投)

每个球员两分球投篮次数和投中次数

9

三分(中-投)

每个球员三分球投篮次数和投中次数

10

罚球(中-投)

每个球员罚篮次数和投中次数

11

前篮板

每个球员前场篮板个数

12

后篮板

每个球员后场蓝本个数

13

总篮板

每个球员总篮板个数

14

助攻

每个球员的助攻次数

15

抢断

每个球员的抢断次数

16

盖帽

每个球员的盖帽次数

17

失误

每个球员的失误次数

18

犯规

每个球员的犯规次数

19

得分

每个球员的得分数

20

在线评球

会员评球

注册会员的在线评论信息

21

游客评球

游客身份的在线评论信息

1.4 存储设计

  Memcached提供Key-value结构的数据存储,这也是当前主流内存数据库的存储方式,当前版本并不支持结构化数据的存储,本文只针对Key-Value存储结构的内存数据库进行设计,其他模式单独讨论,所以NBA篮球直播室后台数据存储设计最主要的内容就是key的设计。

1.4.1 命名规则

  主队使用关键字HOST,客队使用关键字GUEST,所有关键字同意采用大写字母表示。由于双方数据项完全相同,所以本文只列出主队的关键字,客队数据项的关键之只需要替换HOST关键字即可。

1.4.1.1 实时数据

1.4.1.2 文字直播

 

1.4.1.3 技术统计

 

  设计球员技术统计数据时,球员信息的表达有两种方案:

 

  一是采用球衣号码作为关键字,这种方案的好处是关键字较短,按照NBA篮球比赛规则,球衣号码范围是0-99,所以只需要两位即可。同时考虑到NBA关于单场 比赛球员报名人数的限制,所以在此数据的最大存储量是15。

 

  二是采用球员姓名作为关键字,这种方案的好处是球员数据和球员姓名不需要进行二次匹配,缺点是球员姓名过长,导致存储空间的增加。这里采用球衣号码作为 球员标识。

  汇总技术统计采用后台程序自动计算的方式进行,直播员只需更新每个球员的当前数据即可。

 

1.4.2 过期管理

   所有数据都采用过期设置,考虑到一场篮球比赛出现加时及其他各类情况,以及比赛当天赛事收关注度比较高的实际业务需求,过期周期设置为24小时。

1.4.3 持久管理

  实时数据最终值除犯规次数和剩余暂停数外,和技术统计数据一起存入关系型数据库。文字直播数据和评论信息存入非关系型数据库。

 

 


作者:张子良
出处:http://www.cnblogs.com/hadoopdev
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

相关文章
|
17天前
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
海亮科技选择引入阿里云PolarDB开源分布式版(PolarDB for Xscale)数据库,不仅能解决海亮科技数据库业务中面临的可靠性、稳定性问题,也为海亮科技业务的高速发展提供了更好的灵活性和可扩展性。
|
13天前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
17 6
|
21天前
|
数据采集 Rust 安全
Rust在网络爬虫中的应用与实践:探索内存安全与并发处理的奥秘
【8月更文挑战第31天】网络爬虫是自动化程序,用于从互联网抓取数据。随着互联网的发展,构建高效、安全的爬虫成为热点。Rust语言凭借内存安全和高性能特点,在此领域展现出巨大潜力。本文探讨Rust如何通过所有权、借用及生命周期机制保障内存安全;利用`async/await`模型和`tokio`运行时处理并发请求;借助WebAssembly技术处理动态内容;并使用`reqwest`和`js-sys`库解析CSS和JavaScript,确保代码的安全性和可维护性。未来,Rust将在网络爬虫领域扮演更重要角色。
42 1
|
23天前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
7天前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
19 0
|
9天前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
63 0
|
21天前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
43 0
|
21天前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
37 0
|
21天前
|
NoSQL 关系型数据库 MySQL

热门文章

最新文章