因为redis是基于内存的数据库,注意nosql并不能理解为不是sql,而应该是not only sql,其应用场景是快速读写,那么对于复杂查询等操作显然不是redis考虑的重点,选择k-v键值对可以满足快速读写功能,而sql也可以实现复杂的查询。
一、redis为什么是key,value的
因为redis是基于内存的数据库,注意nosql并不能理解为不是sql,而应该是not only sql,其应用场景是快速读写,那么对于复杂查询等操作显然不是redis考虑的重点,选择k-v键值对可以满足快速读写功能,而sql也可以实现复杂的查询。
redis没有sql解析器,更没有实体的概念,它的理论基础不是关系代数。
ES能实现sql操作,是因为ES中有mapping,能够把index中的doc映射成关系代数的元组,也就是RDBMS中的行,其最终能解释成Query DSL。
而redis中的value尽管也能通过json字符串来存储关系,再封装一层sql解析器,那不就是脱了裤子放屁嘛,那还要redis干吗?至于那些走扩展(邪)路线实现sql查询redis的,我严重怀疑这些业务是否适合使用reids,置redis快取快存的优点于何地。搞个内存大点的mysql不香吗?
支持不支持sql和内存数据库没啥关系,更和事务没啥关系。只不过sql恰好是rdbms进行交互的接口。
其实生产环境下oltp类型oracle缓存命中率95%以上,大部分的IO和shared buffer来交互的,事务持久化通过commit在redo上完成,db持久化通过checkpoint把脏数据刷到dbfile。
延伸阅读:
二、应用架构是什么
应用架构(Application Architecture)是描述了IT系统功能和技术实现的内容。应用架构分为以下两个不同的层次:
- 企业级的应用架构:企业层面的应用架构起到了统一规划、承上启下的作用,向上承接了企业战略发展方向和业务模式,向下规划和指导企业各个IT系统的定位和功能。在企业架构中,应用架构是最重要和工作量最大的部分,他包括了企业的应用架构蓝图、架构标准/原则、系统的边界和定义、系统间的关联关系等方面的内容。
单个系统的应用架构:在开发或设计单一IT系统时,设计系统的主要模块和功能点,系统技术实现是从前端展示到业务处理逻辑,到后台数据是如何架构的。这方面的工作一般属于项目组,而不是企业架构的范畴。