我有一个简单的课程:
@Document (collection = "advertise")
public class AdvertiseCache {
@Id
private int id;
private int brandId;
private String brandName;
private String modelName;
@Indexed
private int odometer;
@Indexed
private int price;
private boolean learner;
private int manufacturedYear;
private double engineSize;
private String transmissionTypeName;
private String stateName;
private String ownerTypeName; //private/dealer
private String conditionTypeName; //new/used
}我有另一个类,它具有相同的属性,但带有@Entity注解。
它们分别存储在MongoDB和PostgreSQL中。
我使用Spring进行PostgreSQL和Spring数据MongoDB .为了芒果。
这两个数据库包含相同的数据,30行。
为什么?我做错什么了吗?,我以为芒果会快得多。(我很少使用我的应用程序大多数情况下,我使用过滤器进行排序)
这两台服务器都运行在FreeBSD 9虚拟机中。我用CentOS 6.3在另一个VM上测试了这一点。类似的结果+-100。
Tnx
/更多用于解释的代码(我的筛选器构建器将只包含odometerMin、odometerMax表示标准之间、priceMin和priceMax用于标准之间:
public List<AdvertiseCache> findByFilter(FilterBuilder filter) {
List<AdvertiseCache> result = null;
Query query = new Query();
Criteria criteria = new Criteria();
criteria = criteria.and("price").gte(filter.getPriceMin()).lte(filter.getPriceMax());
criteria = criteria.and("odometer").gte(filter.getOdometerMin()).lte(filter.getOdometerMax());
query.addCriteria(criteria);
query.limit(filter.getLimit());
query.skip(filter.getOffset());
result = mongoTemplate.find(query, AdvertiseCache.class, collectionName);
return result;
}发布于 2013-06-27 21:21:07
我不确定我在这里是否有挫败感。或者更准确地说:你认为什么太慢/应该更快?如果我正确地读取了您的数据点,那么每个执行的查询仍不到1ms。
您可能需要改进一下您的测试场景:
findAll(…)只是将数据流回客户端,并且可能也针对Postgres进行了很好的优化。如果正确设置了索引,Postgres和Mongo就不会有太大的不同。另外,简单的范围查询也不让Mongo真正出类拔萃。这基本上可以归结为1,如果您得到了一个更复杂的数据模型,并且连接在关系世界中开始堆积,您就会看到这种差异。我得出两个结论:
https://stackoverflow.com/questions/13062897
复制相似问题