Java 调度应用程序的db4o查询优化
我刚刚开始在调度应用程序中使用db4o,我正在寻找一种有效的方法来检索在特定日期之间未预订的房间 因此,我有一个房间对象集合,每个房间对象都有一个预订对象集合(可以是空的)。预订有开始日期和结束日期。我想说的是‘得到所有在DateA和DateB之间没有预订的房间’ 我确信我可以使用本机查询来实现这一点,但由于涉及到日期范围(我的理解是,日期范围没有针对NQ进行优化),并且我需要非常频繁地执行此查询(每秒多次查询可能超过10000个房间,其中大多数房间没有预订),我正在寻找更高效的替代方案 有没有办法用苏打水来表达这个意思?Java 调度应用程序的db4o查询优化,java,db4o,Java,Db4o,我刚刚开始在调度应用程序中使用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小。这更符合我的需要,但是…一个房间可以有多个预订(一个房间有一个预订列表-可能为空)。不过,这可能足够让我继续玩下去了……那么?该查询返回所有未预订的房间以及日期。那就是你问的那个。