Berkeley DB 使用给 数据排序 的实现方法是本文我们主要要介绍的内容,在做项目的时候用到了nosql数据库BDB,借此机会研究了一下它的用法。它的官方示例和文档比较丰富,感觉比较容易学习。在开发过程中出现了一个需求,要把数据根据插入时间遍历,个人认为通过第二主键(SecondKey)比较容易实现。
以下是我的基本实现过程:
1.在ValueBean中加入insertTime属性
其中的hostName属性在主从同步和生成插入时间时用到,value属性就是key-value中的值
2.TupleBinding类
此类用于将ValueBean和DatabaseEntry进行转换,两个方法中的属性读写顺序要统一。
3.SecondaryKeyCreator,第二主键生成器
指定insertTime属性作为第二主键。
在插入一个新数据时生成insertTime十分关键,尤其在高并发和互为主从同步时极易出现“第二主键重复”的错误,造成数据无法插入,我了使用当前时间毫秒数+AtomicInteger自增+hostName的asc码之和,保证insertTime的前后大小顺序。
System.currentTimeMillis()*1000000+(add_num.getAndIncrement()%1000)*1000 + host_key
4.创建第二数据库,用于存储secondkey
到此,便可以使用SecondaryCursor的getNext()和getPrev()前后遍历了,getSearchKey()可以找到你想要的位置。
关于Berkeley DB使用SecondKey给数据排序的实现方法的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】
asp.net 连接access
新建一个数据库连接类 引用命名空间 using ; using ; 然后写一个数据库连接方法: public static OleDbConnection GetConnection() {string conn_str=[ConnString]() + ([dbPath]) + ;; OleDbConnection conn = new OleDbConnection(conn_str); return conn; } 在中加入一段话
ipad密码忘了怎么办 论坛
1.平刷(没破解的和破解过的都可以)2.找密码方法:用iFile打开var/mobile/library/preferences里的 找到

sql 防注入代码
<%
dimsql_injdata
SQL_injdata=|and|exec|insert|select|delete|Update|count|*|%|chr|mid|master|truncate|char|declare
SQL_inj=split(SQL_Injdata,|)
<>Then
ForEachSQL_
ForSQL_Data=0ToUbound(SQL_inj)
ifinstr((SQL_Get),Sql_Inj(Sql_DATA))>0Then
endif
next
Next
EndIf
<>Then
ForEachSql_
ForSQL_Data=0ToUbound(SQL_inj)
ifinstr((Sql_Post),Sql_Inj(Sql_DATA))>0Then
endif
next
next
endif
%>
写在数据库连接文件中
发表评论