The invention discloses a message storage method, the method includes: to create the three level index structure for private letter, including the three level index structure: one level index, two level index and three level index; according to the three level index structure to store private letter; the first level the index for the to map the user identification of the key values are obtained; the key value of the index address by consistent hashing algorithm for user identification; two level index for the second key through mapping of user identification and session identification; address second key index obtained by consistent hashing algorithm for user identification; three the index for third keys through mapping of private primary key; address third key index obtained by consistent hashing algorithm for session identification. The invention also discloses a private storage system. The invention can liberate the relational database to read and write pressure.
【技术实现步骤摘要】
一种私信存储方法及系统
本专利技术涉及数据存储
,特别涉及一种私信存储方法及系统。
技术介绍
现有的关系型数据库技术可以实现对私信内容以及收发关系的存储,但是当系统读写非常频繁的时候,数据库的输入输出(IO)性能不足以承载如此庞大的每秒钟系统能够处理的交易的数量(TPS),经常会产生响应延迟很大,甚至直接导致数据库宕机。
技术实现思路
本专利技术的目的在于提供一种私信存储方法及系统,能够解放关系型数据库的读写压力。为实现上述专利技术目的,本专利技术提供了一种私信存储方法,该方法包括:为私信创建三级索引结构,所述三级索引结构包括:一级索引、二级索引和三级索引;根据所述三级索引结构对私信进行存储;其中,所述一级索引为通过对用户标识进行映射得到第一键值;通过对用户标识进行一致性哈希算法得到第一键值的索引地址;所述二级索引为通过对用户标识和会话标识进行映射得到第二键值;通过对用户标识进行一致性哈希算法得到第二键值的索引地址;所述三级索引为通过对私信主键进行映射得到第三键值;通过对会话标识进行一致性哈希算法得到第三键值的索引地址。为实现上述专利技术目的,本专利技术还提供了 ...
【技术保护点】
一种私信存储方法,该方法包括:为私信创建三级索引结构,所述三级索引结构包括:一级索引、二级索引和三级索引;根据所述三级索引结构对私信进行存储;其中,所述一级索引为通过对用户标识进行映射得到第一键值;通过对用户标识进行一致性哈希算法得到第一键值的索引地址;所述二级索引为通过对用户标识和会话标识进行映射得到第二键值;通过对用户标识进行一致性哈希算法得到第二键值的索引地址;所述三级索引为通过对私信主键进行映射得到第三键值;通过对会话标识进行一致性哈希算法得到第三键值的索引地址。
【技术特征摘要】
1.一种私信存储方法,该方法包括:为私信创建三级索引结构,所述三级索引结构包括:一级索引、二级索引和三级索引;根据所述三级索引结构对私信进行存储;其中,所述一级索引为通过对用户标识进行映射得到第一键值;通过对用户标识进行一致性哈希算法得到第一键值的索引地址;所述二级索引为通过对用户标识和会话标识进行映射得到第二键值;通过对用户标识进行一致性哈希算法得到第二键值的索引地址;所述三级索引为通过对私信主键进行映射得到第三键值;通过对会话标识进行一致性哈希算法得到第三键值的索引地址。2.如权利要求1所述的方法,其特征在于,根据所述三级索引结构对私信进行存储的方法包括:通过对发送者用户标识进行映射得到发送者用户标识对应的第一键值;通过对发送者用户标识进行一致性哈希算法得到发送者用户标识对应的第一键值的索引地址;将会话标识写入发送者用户标识对应的第一键值索引地址中;通过对发送者用户标识和会话标识进行映射得到发送者会话标识对应的第二键值;通过对发送者用户标识进行一致性哈希算法得到发送者会话标识对应的第二键值的索引地址;将私信主键写入发送者会话标识对应的第二键值索引地址中;通过对私信主键进行映射得到第三键值;通过对会话标识进行一致性哈希算法得到第三键值的索引地址;将私信内容写入第三键值索引地址中;同时,通过对接收者用户标识进行映射得到接收者用户标识对应的第一键值;通过对接收者用户标识进行一致性哈希算法得到接收者用户标识对应的第一键值的索引地址;将会话标识写入接收者用户标识对应的第一键值索引地址中;通过对接收者用户标识和会话标识进行映射得到接收者会话标识对应的第二键值;通过对接收者用户标识进行一致性哈希算法得到接收者会话标识对应的第二键值的索引地址;将私信主键写入接收者会话标识对应的第二键值索引地址中;通过对私信主键进行映射得到第三键值;通过对会话标识进行一致性哈希算法得到第三键值的索引地址;将私信内容写入第三键值索引地址中。3.如权利要求2所述的方法,其特征在于,该方法进一步包括对存储的私信进行读取,具体为:通过对发送者/接收者用户标识进行映射得到发送者/接收者用户标识对应的第一键值;通过对发送者/接收者用户标识进行一致性哈希算法得到发送者/接收者用户标识对应的第一键值的索引地址;将会话标识从发送者/接收者用户标识对应的第一键值索引地址中读取出来;通过对发送者/接收者用户标识和会话标识进行映射得到发送者/接收者会话标识对应的第二键值;通过对发送者/接收者用户标识进行一致性哈希算法得到发送者/接收者会话标识对应的第二键值的索引地址;将私信主键从发送者/接收者会话标识对应的第二键值索引地址中读取出来;通过对私信主键进行映射得到第三键值;通过对会话标识进行一致性哈希算法得到第三键值的索引地址;将私信内容从第三键值索引地址中读取出来。4.如权利要求3所述的方法,其特征在于,每个键值索引地址对应有一组物理存储节点,该组物理存储节点包括通过链表依次链接的一个主节点和其余多个从节点;在进行存储操作时,该方法进一步包括:从主节点开始,依次在该键值索引地址所对应的每个物理存储节点上进行写操作;或者,在进行读取操作时,该方法进一步包括:对根据权重从该键值索引地址所对应的所有物理存储节点中选择出的一个物理存储节点进行读操作。5.如权利要求1所述的方法,其特征在于,采用有序集合作为一级索引的数据结构;采用列表作为存储二级索引的数据结构。6.如权利要求4所述的方法,其特征在于,当主节点故障时,将链表中距离主节点最近的从节点作为新的主节点;当从节点故障时,修改链表中位于故障从节点前一个节点的链表指针,将所述链表指针指向故障从节点的后一个节点。7.如权利要求2所述的方法,其特征在于,该方法进一步包括:定期扫描存储的第三键值,查找到超过预定时间的第三键值;在超过预定时间的第三键值所对应的私信内容中设置私信内容删除标志位,用于在缓存空间达到阈值时,将设置有删除标志位的私信内容删除。8.如权利要求2所述的方法,其特征在于,所述私信内容中包括私信过期时间,该方法进一步包括:定时查找预定时间段内的第三键值,获取所对应的私信内容中的过期时间;将超过过期时间的私信内容删除;或者,定期查找预定时间段内的私信主键,通过对私信主键进行映射得到第三键值,获取所对应的私信内容中的过期时间;将超过过期时间的私信内容删除;或者,通过随机函数随机生成私信主键,通过对私信主键进行映射得到第三键值,获取所对应的私信内容中的过期时间;将超过过期时间的私信内容删除;或者,根据用户输入的读取请求,将读取到的超过过期时间的私信内容删除。9.如权利要求2所述的方法,其特征在于,该方法进一步包括:在进行冷启动或者水平扩容时,为缓存空间中的每个用户设置加载标志位,并删除建立的三级索引;在冷启动或者水平扩容后,存储模块接收到用户的存储操作或者读取操作请求时,将设置有加载标志位的用户的私信内容从数据库中加载到当前缓存空间,根据当前缓存空间重建三级索引后,删除所设置的加载标志位。10.如权利要求2所述的方法,其特征在于,该方法进一步包括:定时将数据库中的私信内容与缓存空间中的私信内容进行比较,按照数据库中的私信内容同步缓存空间中的私信内容。11.一种私信存储系统,该系统包括存储模块和缓存模块,所述存储模块包括索引创建单元和存...
【专利技术属性】
技术研发人员:周默,季周,张燕锋,芮雪,
申请(专利权)人:北京京东尚科信息技术有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。