currently I am testing several nosql databases using YCSB. I am new to that type of databases, but I have already tested few of them. I am using VM with 2GB RAM and hosted on Win 7. Even though it is not recommended, since I am working in now capacity environment, I am using KVlite. But my problem is confusing and I can not find the reason. So, I have successfully loaded data and tested Oracle NoSQL using different workloads. However, with each execution, I get higher execution time. For example, if at 1st execution I get 20 seconds, if I shut database down and next day execute same workload again, I get 35 second execution time and so on.
Do you have any idea of what may be causing that? Like I said, I have been researching some nosql databases but I have never had that strange results.
I cannot say for sure why you are seeing the results you've described, likely it is just that with each run on the same data store, more data is getting populated into KVlite.
It is not a good idea to use KVlite for a YCSB test.
The KVlite instance links with your application and does not provide the kind of partitioning of a key space that would normally be fundamental to a YCSB workload.
The idea of YCSB is to provide a random workload over a large number of keys and then to do things like expand the data store while operations are happening and see the impact.
Those kinds of operations on random data access workloads cannot be expected to scale well on a single data store instance that does not distribute the key space.
I would suggest that you use a proper full version of kvstore to run such tests.
Hope this helps,
To add to Robert's comment, the NoSQL DB documentation on KVLite states the following:
KVLite is a simplified version of Oracle NoSQL Database. It provides a single-node store
that is not replicated. It runs in a single process without requiring any administrative interface.
You configure, start, and stop KVLite using a command line interface.
KVLite is intended for use by application developers who need to unit test their Oracle NoSQL
Database application. It is not intended for production deployment, or for performance measurements.
Per the documentation, you can use KVLite to test out the API calls in your performance benchmarking application, but you should not use to it perform the actual performance testing. For performance testing, please install and use the Oracle NoSQL Database server.