OrientDB官方网站说:
On common hardware stores up to 150.000 documents per second,10
billions of documents per day. Big Graphs are loaded in few
milliseconds without executing costly JOIN such as the Relational
DBMSs.
但是,执行以下代码可以显示:插入150000个简单文档需要17000ms.
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; import com.orientechnologies.orient.core.record.impl.ODocument; public final class OrientDBTrial { public static void main(String[] args) { ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/foo"); try { db.open("admin","admin"); long a = System.currentTimeMillis(); for (int i = 1; i < 150000; ++i) { final ODocument foo = new ODocument("Foo"); foo.field("code",i); foo.save(); } long b = System.currentTimeMillis(); System.out.println(b - a + "ms"); for (ODocument doc : db.browseClass("Foo")) { doc.delete(); } } finally { db.close(); } } }
我的硬件:
> Dell Optiplex 780
> Intel(R)Core(TM)2 Duo cpu E7500 @ 2.93Ghz
> 8GB RAM
> Windows 7 64位
我究竟做错了什么?
在10个并发线程中分割保存以最大限度地减少Java的开销,使其运行在大约13000ms.仍然远远低于OrientDB首页所说的.
解决方法
您可以使用“Flat Database”和orientdb作为java中的嵌入式库来实现
看到更多在这里解释
http://code.google.com/p/orient/wiki/JavaAPI
看到更多在这里解释
http://code.google.com/p/orient/wiki/JavaAPI
您使用的是服务器模式,并向orientdb服务器发送许多请求,根据您的基准判断,您每秒可以获得〜10 000个插入,这不错,例如,我认为10 000个请求对于任何网络服务器都是非常好的性能(和orientdb服务器实际上是一个webserver,你可以通过http来查询它,但我认为java正在使用二进制模式)