1.什么是外存
Exist 外存本质上是一个内存级别的nosql。 它提出了“面向变量”的数据访问思想,让用户只见变量,不见接口,省去了繁琐的接口调用。
以此实现了逻辑与数据分离的效果,一份单结点代码自动达到分布式效果。
目前提供了int8、uint8、uint64、float、double等基础类型变量的操作,后续将实现map vector类型变量操作。
2.应用场景对比
来看看面向变量的接口方式比传统数据接口方式要方便多少
场景1:假设服务上有3个逻辑:用户登录时,用户发表文章,用户发表评论时,要提升用户等级 。
传统数据库接口方式
申明数据库连接 db; db.connect(); OnLogin() { 申明变量 level get(表名,"level", level); level++; set(表名,"level", level); } OnSend() { 申明变量 level get(表名,"level", level); level++ set(表名,"level", level); } OnReply() { 申明变量 level get(表名,"level", level); level++ set(表名,"level", level); } 面向变量的访问方式 Exist::int32 m_var("level");//申明变量 OnLogin() { var++;//数据已经在外存服务器上修改,下次访问将在新值基础上 } OnSend() { var++;//数据已经在外存服务器上修改,下次访问将在新值基础上 } OnReply() { var++;//数据已经在外存服务器上修改,下次访问将在新值基础上 }
就这么简单,用户直接看到一个个的变量,就像操作内存上的变量一样操作数据,根本不需要任何接口,外存由此得名
场景2:100万用户同时在线:用户A要查询用户B的资料
传统接口方式
m_otherNode;//其它结点/中转定位服务 std::map<...> m_userList;//已经登录当前结点的用户的列表 OnFindUser( char *username ) { map::iterater it = m_userList.find(username); if ( it == m_userList.end() )//用户未必再当前结点登录, { m_otherNode.Send("查询用户数据");//到其它结点,或其它定位服务中专查询 m_otherNode.Recv(); if (回应用户不存在) { 回应用户不存在; return; } } 回应用户信息 return; };
面向变量接口方式
Exist::map<...> m_userList;//已经登录的用户的列表,用户信息在外存上 OnFindUser( char *username ) { map::iterater it = m_userList.find(username); if ( it == m_userList.end() )//用户要么在外存中,要么不存在 { 回应,用户不存在; return; } 回应用户信息; return; };
省去了到其它结点查询的代码,省去了记录相关服务的连接对象,一套代码同时满足单结点与分布式需求,从此没有分布式一说
map与vector尚未实现,将在后续版本中实现,请期待
支持平台:win linux
性能:单个client测试,win 5000~6000tps,linux 最高达到3.7万tps
支持编译:VC++6.0和VS2010,VS2010以下用户可以从 VC6.0工程转换,linux直接make
欢迎各路朋友一起体验尝鲜
一)内存与外存的含义 内存指的就是主板上的存储部件,CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中的)数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。 外存包括软盘、硬盘和光盘,存放在其中的数据靠磁来维持,因此可永久保存数据。 二)内存与外存的特点 特点: 内存处
主存、辅存、内存、外存、存储器:名词解释 现代计算机硬件由五大部件组成,分别是运算器、控制器、存储器、输入设备和输出设备。 而存储器的存在对于计算机来说起着不可或缺的作用。在CPU的内部,存在着许多的存储器,这些存储器叫做寄存器,用来暂时存放数据或者指令。正是因为有了这些寄存器,CPU才能快速高效地处理计算机中复杂地工作。而与寄存器并称为内部存储器的还有内存。内存也被称为主存,而辅存指的是计算机的
计算机存储器——内存和外存 计算机存储器——内存和外存 计算机存储器——内存和外存 引言:存储器是计算机的第二个子系统。它有一个重要的特性——无限可复制性,即其存放的数据被取出后,原来存放的数据依然存在,所以可以被反复利用。本报告将从存储器的原理、分类、功能和发展状况等方面进行探究分析。 摘要:在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器的主要功能是存储程序和各种数据,并能在计算机
内存特点:内存又称主存,是CPU能直接寻址的存储空间,由半导体材料制成。内存的特点是存取速率快。它是电脑中的主要部件,用于暂时存放CPU中的运算数据。 外存特点:外存储器的特点是容量大、价格低,但是存取速度慢,并且外存储器用于存放暂时不用的程序和数据。内存储器和外存储器之间常常频繁地交换信息。 1.内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。内存也被称为内存储器,其作用是用于暂时存放
对存储器的要求是容量大、速度快、成本低,但在一个存储器中要求同时兼顾这三方面是困难的,为了解决这方面的矛盾,目前在计算机系统中,通常采用多级存储器体系结构,即使用高速缓冲存储器(cache)、主存和外存。 内存 cpu能直接访问的存储器,包括cache和主存,cpu不能直接访问外存,外存的信息必须调入内存后才能为cpu进行处理。 cache 是计算机系统中的一个高速小容量半导体存储器,在计算机中,
连续组织方式 连续组织方式又称为连续分配方式 要求为每一个文件分配一组相邻接的盘块 例如,第一个盘块的地址为b,第二个则为b+1。 通常,它们位于一条磁道上,在进行读/写时,不必移动磁头。 在采用连续组织方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中。 连续组织方式保证了逻辑文件中的记录顺序与存储器中文件占用盘块的顺序的一致性 为使系统能找到文件存放的地址,应在目录项的“文件物理地址”
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 内存与外存的主要特点是: 内存储器:计算机存储常用或当前正在使用的数据和程序,所有执行的程序和数据须先调入内存可执行,容星小,存取速度快,价格贵。 外存储器:存放暂进不使用的程序和数据,容量大,存取速度慢,价格便宜。内存 是相对于外部存储器而言的,内存的主要特点是读写反应速度快,它通常是直接与CPU相连,以满足CPU高速运算的需
这篇文章我想针对平时我们所说的内存和外存做一个简单的澄清。 我们经常会听到这样的一段对话: A说:我刚买了个新手机。 B说:多大的内存? A说:32G的。 其实A说的32G指的是我们严格意义上的外存。人们经常会把外存简单地说成是内存,其实内存和外存是两个概念。 CPU能直接访问的存储器称为内存储器,它包括cache和主存器。反之,CPU不能直接访问的就是外存储器。值得注意的是:CPU不能直接访问外
语音内容: 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 内存容量一般比外存容量大。 计算机的内存容量通常是指随机存储器(RAM)的容量,是内存条的关键性参数。内存容量以MB作为单位,可以简写为M。内存的容量一般都是2的整次方倍,比如64MB、128MB、256MB等,一般而言,内存容量越大越有利于系统的运行。进入21世纪初期,台式机中主流采用的内存容量为2GB或4GB,5
上课的时候看课件里出现 main memory,意为主存。但老师讲的时候又经常以内存提起,想细细做一个区分。 网上查的资料,计算机存储系统为: 内存(internal memory) 寄存器(register):在CPU内部 高速缓冲存储器(cache):一般集成在CPU内部 主存(main memory):内存条、显卡中的RAM芯片、接口卡中的ROM芯片等等 外存,也叫辅存(external m
计算机内存和外部存储之间的主要区别是易失性和非易失性,以及性能和容量之间的差别。 1、易失性和易失性不同 内存,例如随机存取内存(RAM),是具有易失性的。这意味着当系统断电时,数据就会丢失。与之相反,外部存储是非易失性的,因此即使没有电源,它也能保存数据。 2、性能不同 在大多数情况下,外存比内存的速度慢得多。而与外存不同的是,RAM直接通过更宽更快的总线连接到CPU。 3、存储时长不同 内存断
本文向大家介绍NoSQL数据库,包括了NoSQL数据库的使用技巧和注意事项,需要的朋友参考一下 这些用于大型分布式数据集。关系数据库可以有效地处理一些大数据性能问题,而NoSQL数据库可以轻松解决此类问题。在分析可能存储在云的多个虚拟服务器上的大型非结构化数据时,非常有效。
问题内容: 我需要一些想法来实现Java的(真正)高性能内存数据库/存储机制。在存储20,000+个Java对象的范围内,每5秒钟左右更新一次。 我愿意接受的一些选择: 纯JDBC /数据库组合 JDO JPA / ORM /数据库组合 对象数据库 其他存储机制 我最好的选择是什么?你有什么经验? 编辑:我还需要能够查询这些对象 问题答案: 您可以尝试使用Prevayler之类的工具(基本上是一个
本文向大家介绍初识NoSQL NoSql数据库入门 NoSql数据库基础知识,包括了初识NoSQL NoSql数据库入门 NoSql数据库基础知识的使用技巧和注意事项,需要的朋友参考一下 做了一年的大一年度项目了,对于关系型数据库结构还是有些了解了,有的时候还是觉得这种二维表不是很顺手。在看过一篇文章之后,对NoSQL有了初步的了解,(https://keen.io/blog/5395834921
问题内容: 我在公司中多次设计数据库。为了提高数据库的性能,我只寻找标准化和索引。 如果要求您提高数据库的性能,该数据库包含大约250个表以及一些具有数百万个记录的表,那么您将寻找什么不同的东西? 提前致谢。 问题答案: 优化逻辑设计 逻辑级别是关于查询和表本身的结构。首先尝试最大程度地发挥这一作用。目标是在逻辑级别上访问尽可能少的数据。 拥有最高效的SQL查询 设计支持应用程序需求的逻辑架构(例
问题内容: 如果我的数据是关系型的(出版商-作者-书,协会-团队-玩家),我们可以使用像HBase或MongoDB这样的NoSQL系统来存储数据吗? (我知道这听起来像是一个愚蠢的问题,但我只是在学习:)) 问题答案: 是的,您可以在NoSQL数据存储中存储任何类型的数据。您描述的信息种类对于NoSQL应该是足够的。 但是,请注意,在典型的NoSQL解决方案中,您将交易SQL数据库中某些理所当然的
NoSQL(Not Only SQL),指的是非关系型的数据库。随着Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoD
随着越来越多的数据变为非结构化或半结构化,通过NoSql数据库管理它们的需求也在增加。 Python也可以与与Relational数据库交互的方式类似地与NoSQL数据库交互。 在本章中,我们将使用python与MongoDB作为NoSQL数据库进行交互。 为了连接到MongoDB,python使用一个名为pymongo的库。 您可以使用Anaconda环境中的以下命令将此库添加到python环境
有时候数据以关系格式不可用,我们需要在NoSQL数据库的帮助下保持事务性。 在本章中,我们将重点介绍NoSQL的数据流。 我们还将通过敏捷和数据科学的结合来了解它的运作方式。 使用NoSQL敏捷的主要原因之一是在市场竞争中提高速度。 以下原因显示NoSQL如何最适合敏捷软件方法 - 更少的障碍 改变模型,即使在敏捷开发的情况下,目前正在经历中流也会产生一些实际成本。 使用NoSQL,用户使用聚合数