阅读Nosql代码有感

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

这一年总得来说,读书的时间不多。一是因为时间啥关系,这一年一直在跟着项目走,或者被项目牵着走,几乎所有的时间和精力全部被拴在几个项目上;不过所幸今年创业失败,又回去上班了,时间相对空余了一些。

     双十一是一个好日子,持续关注的几本书,几乎五折入手,其中有一本叫做《mysql技术内幕-innodb存储引擎》。工作闲暇之余经常拿出来翻翻,所幸自己对于线程和数据结构比较扎实,读起来虽然吃力,但是还是能吃透的。正是因为这本书的指引,让自己对数据库产生浓厚的兴趣,加上之前使用mongodb和redis的经历,让我决定好好研究下数据库。

   打开linux,eclipse,导入leveldb的工程,边阅读代码边调试起来;之后又添加了ssdb的代码,修改了少量代码,可以eclipse调试运行;redis也可以在eclipse里面跑并且调试,只是大家需要在调试时候指定makefile文件。

   leveldb是key-value形式的键值对数据库,更多的赞美就不说了,最大的一个特点,leveldb的key是排序的,这个排序的特性在ssdb中有很大的发挥。

   随着现在业务的开展,简单的key-value的键值对结构已经不能满足更复杂的系统和业务,所以让nosql支持更多的数据结构成为趋势,于是redis再渐渐代替memcache,于是基于leveldb的支持更多数据结构的nosql越来越多,ssdb应该只是其中一个吧。

     起初在我的臆想中,ssdb为了支持更多的数据结构,那么应该也只能从value下手,让leveldb的value多种类型,比如他的value不再只是简单的string类型,而是有列表形式,有二叉树形式等等;看了ssdb的代码,才知道,原来作者是扩展的key,我们举几个例子。

     简单的key-value的结构就不说,我们首先说说hash结构,比如一个玩家,有等级属性,经验属性,名称属性,等等,因为leveldb只支持最基本的key-value的键值对结构,所以我们这样设计key,对于玩家archy,我们在数据库中这样设计,h-role-archy-level表示玩家的等级key,对应的值是2;h-role-archy-exp表示玩家的经验key,对应的值是200;h-role-archy-name表示的玩家名称key,对应的值是archy。很多人估计要问了,这样如何保证得到玩家archy所有的属性;就像大概类似于select * from role where id="archy"的操作;或者像redis中hgetall role:archy的操作;前面我们已经讲过leveldb的key是排序的,再加上我们的key定义规则,我们可以轻易的从h-role-archy-""开始查找到 h-role-archy-level,如果查找到h-role-lopze-level,表示到底了,这样就实现了hgetall的操作。

    再举个例子,queue的例子,比如我们要创建一个tasks的队列,他的值包括archy,lopze,ramon,我们这样去定义他的key,q-tasks-0对应值archy;q-tasks-1对应值lopez;q-tasks-2对应值roman;这样我们取tasks队列中所有的值,就可以取q-tasks-"" 到 q-xxx(xxx不同于tasks)截止就好。至于push,只需要设置q-tasks-n和对应的值就ok。这样我们就已经可以支持这个队列结构了。

    代码量不大,有兴趣的可以去读读源代码。

    我对于这些茫茫的nosql,感兴趣只是在mongo,leveldb,redis这几个春节之前想熟悉这几套;对于他的扩展,我想的是是否可以提供where的操作,比如我想查找level大于10级的玩家,而我却不想搜索数据库,想利用索引的方式,将level排序,排序的值正好对应相应的玩家key就好,这样就简单实现了select中的where操作,想想还是蛮激动的!

相关文章
|
4月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
5月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
540 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
5月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
339 14
|
5月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
657 4
|
18天前
|
人工智能 运维 NoSQL
云栖大会|AI浪潮下的NoSQL演进:下一代数据库的破局之道
AI浪潮下的NoSQL演进:下一代数据库的破局之道
|
5月前
|
存储 NoSQL 搜索推荐
NoSQL数据库分类概览
以上就是我们的NoSQL数据库奇幻之旅。每一种NoSQL数据库都有自己独特的魅力和专长,择选合适的数据库,就像在魔法世界中挑选最适合自己的魔杖,使你的数据管理变得更加高效和神奇。在当今数据驱动的时代,懂得这些数据库的秘密,就掌握了处理各种数据挑战的关键。
251 61
|
4月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
95 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

热门文章

最新文章