Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调度应用程序的db4o查询优化_Java_Db4o - Fatal编程技术网

Java 调度应用程序的db4o查询优化

Java 调度应用程序的db4o查询优化,java,db4o,Java,Db4o,我刚刚开始在调度应用程序中使用db4o,我正在寻找一种有效的方法来检索在特定日期之间未预订的房间 因此,我有一个房间对象集合,每个房间对象都有一个预订对象集合(可以是空的)。预订有开始日期和结束日期。我想说的是‘得到所有在DateA和DateB之间没有预订的房间’ 我确信我可以使用本机查询来实现这一点,但由于涉及到日期范围(我的理解是,日期范围没有针对NQ进行优化),并且我需要非常频繁地执行此查询(每秒多次查询可能超过10000个房间,其中大多数房间没有预订),我正在寻找更高效的替代方案 有没有

我刚刚开始在调度应用程序中使用db4o,我正在寻找一种有效的方法来检索在特定日期之间未预订的房间

因此,我有一个房间对象集合,每个房间对象都有一个预订对象集合(可以是空的)。预订有开始日期和结束日期。我想说的是‘得到所有在DateA和DateB之间没有预订的房间’

我确信我可以使用本机查询来实现这一点,但由于涉及到日期范围(我的理解是,日期范围没有针对NQ进行优化),并且我需要非常频繁地执行此查询(每秒多次查询可能超过10000个房间,其中大多数房间没有预订),我正在寻找更高效的替代方案

有没有办法用苏打水来表达这个意思?
或者更好地安排我的数据模型来解决这个问题?

是的,您可以通过使用SODA查询来实现这一点

Date fromDate = null ; // assign reservation start dat
Date toDate = null ; // assign reservation upto
Query query = db.query();
query.constrain(Booking.class);
query.descend ("fromDate").constrain ( fromDate ).greater().equal ().
      and (query.descend ("toDate").constrain (toDate).smaller().equal());
ObjectSet<Booking> objectSet = query.execute();
datefromdate=null;//分配预订开始日期
日期toDate=null;//将预订分配到
Query=db.Query();
查询.约束(Booking.class);
query.down(“fromDate”).constraint(fromDate).greater().equal()。
和(query.degress(“toDate”).constraint(toDate).small().equal());
ObjectSet ObjectSet=query.execute();
查询fromDate和toDate之间没有预订的所有房间

 Query query = db.query();
query.constrain(Room.class);
query.descend ("bookingStartDate").constrain ( fromDate ).greater().equal ().and
(query.descend ("bookingEndDate").constrain (toDate).smaller().equal()).not();
ObjectSet<Room> objectSet = query.execute();
Query Query=db.Query();
query.constraint(Room.class);
query.degress(“bookingStartDate”).constraint(fromDate).greater().equal().and
(query.degress(“bookingdate”).constraint(toDate).small().equal()).not();
ObjectSet ObjectSet=query.execute();

另请参见:

谢谢您的回复,但这不就是给了我日期范围内的所有预订吗?我正在查找日期范围内没有预订的所有房间。抱歉,我认为我的回答不清楚:在我看来,您的示例旨在返回fromDate和toDate之间的所有预订。但这不是我需要的:我需要的是“所有在fromDate和toDate之间没有预订的房间”@DB check edit<代码>不应该可以正常工作,或者比startDate小,比endDate小。这更符合我的需要,但是…一个房间可以有多个预订(一个房间有一个预订列表-可能为空)。不过,这可能足够让我继续玩下去了……那么?该查询返回所有未预订的房间以及日期。那就是你问的那个。