移动应用形态在数据库上所需的适应性改变_敬宓
标题和描述中的“移动应用形态在数据库上所需的适应性改变”这一知识点,主要探讨了随着移动应用的不断发展,特别是地理位置服务(LBS)类应用的兴起,传统的关系型数据库(RDBMS)和新兴的NoSQL数据库在面对这类应用时所面临的挑战及应对策略。街旁网的CrabDB作为解决方案之一,展现了在移动应用数据库需求上的创新实践。 ### LBS应用的特点与问题 地理位置服务(LBS)应用具有以下显著特点: - **实时性**:用户签到、位置分享等操作需要即时响应。 - **大数据量**:随着用户的增加,每天产生的签到数据量巨大。 - **数据访问模式的特殊性**:如需计算地主、积分、好友去过的地点等,这涉及到复杂的数据查询和计算。 - **性能需求**:由于数据量大且访问频繁,对数据库的性能要求极高。 - **低成本硬件**:期望能在相对低廉的硬件平台上运行良好。 这些问题对传统的关系型数据库提出了挑战,尤其是在处理大规模实时数据计算和存储方面。 ### RDBMS与NoSQL的挑战 #### RDBMS的局限性 - **复杂的查询**:RDBMS虽然支持各种SQL查询,但在面对LBS应用中大量的实时计算需求时,其性能会受到限制,尤其是当需要执行复杂的聚合、排序、分组等操作时。 - **索引问题**:为了提高查询效率,需要建立大量索引,但这也增加了磁盘空间的消耗和更新时的延迟。 - **数据一致性**:强一致性的要求使得RDBMS无法进行批量或推迟计算,导致I/O操作频繁,缓存失效快。 #### NoSQL的选择与局限 以Foursquare为例,其最初选择了MongoDB,看重其Schema-Free特性、减少JOIN操作、GEO-Indices和高性能。然而,随着数据量的增长,MongoDB也暴露出不足: - **数据膨胀**:BSON格式虽然提供了灵活性,但额外的空间开销巨大。 - **内存压力**:大数据量下,超出内存的存储需求导致高IO压力和CPU负载。 - **缓存机制**:Linux内核的mmap(2) writeback机制差异,以及OS负责的页面换入换出,难以有效控制缓存粒度。 - **数据分布**:LBS计算中对同一user_id记录的大量查询,RDBMS的Clustered Index在这方面可能更具优势。 ### 街旁的CrabDB解决方案 为了解决上述问题,街旁网开发了CrabDB,这是一种专为LBS应用设计的数据库系统。CrabDB采用简单的key->list数据结构,每个地点(loc_id)对应一个用户签到列表,实现了定长存储,以减少空间开销。CrabDB支持多种查询方式,类似于MongoDB的调用接口,如`db.find()`和`db.group()`,便于开发者使用。 通过CrabDB,街旁网有效地解决了LBS应用中数据处理的瓶颈,提高了数据处理的实时性和效率,同时也展示了在移动应用数据库领域中对现有技术的创新和改进。这种针对特定场景优化的数据库设计思路,为其他移动应用开发者提供了宝贵的参考和启示。
剩余30页未读,继续阅读
- 粉丝: 246
- 资源: 52
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
评论0