Database Benchmark Changelog

What's new in Database Benchmark 3.0.0

Aug 1, 2015
  • IMPORTANT IMPROVEMENTS OF DATABASE BENCHMARK:
  • ADDED: KeyTypes combo box replaced with Randomness slider in the GUI. 0% value means that all of the generated keys are sequential, and with the increasing of the percentage the generated flow begins to contain random keys. 100% means that all keys are random. This change allows fine control over the generated keys and more precise tests
  • ADDED: Logging of exceptions in the application. log4Net is used as a log tool. The logs can be found in ../Logs/ApplicationLog.txt and ../Logs/BenchmarkTestLog.txt. The source files of log4net can be found at: http://logging.apache.org/log4net/
  • ADDED: Online report of the test results - the test results from the benchmark can be sent to the dedicated servers of Database Benchmark. The computer configuration allong with the test results is converted to JSON and sent to the servers. No personal user data is sent. The Json for .NET library used for JSON serialization can be found at: https://sourceforge.net/projects/csjson/
  • ADDED: Monitoring of the memory usage for every database (for a database working on a remote server, the memory usage will be only for the driver that connects the application to the server)
  • It monitors the following parameters:
  • Page File Bytes Peak - Shows the maximum amount of virtual memory, in bytes, that a process has reserved for use in the paging file(s)
  • Working Set Peak - Shows the maximum size, in bytes, in the working set of this process. The working set is the set of memory pages that were touched recently by the threads in the process
  • Virtual Bytes Peak - Shows the maximum size, in bytes, of virtual address space that the process has used at any one time
  • ADDED: The GUI now features docking capabilities for the windows. The window layout is saved automatically when the application is closing. It can also be saved from the File menu. The DockingPanelSuite library used for docking can be found at: https://github.com/dockpanelsuite/dockpanelsuite
  • ADDED: Project management - all of the settings made to the databases can now be saved as a *.dbproj project from the File menu. This allows the users to easily build benchmark suites and then just load them into the application. Because of this feature, all of the public fields and properties of a database implementation are serialized. If you want to serialize a specific database option, just make it a public visible field or property
  • CHANGED: IBenchmark interface is now renamed to IDatabase
  • CHANGED: Benchmark class is now renamed to Database
  • CHANGED: IDatabase interface. It now includes the following properties:
  • public string Category { get; set; }
  • public string Description { get; set; }
  • public string Website { get; set; }
  • public Color Color { get; set; }
  • public string[] Requirements { get; set; }
  • Also, parameter names of Init and the signature of the Read method are changed. New method signatures are:
  • void Init(int flowCount, long flowRecordCount, KeysType keysType)
  • IEnumerable Read()
  • CHANGED: BenchmarkTest.cs - in Write(), each data flow is inserted from a separate thread into ONE database collection (table and etc.). The old implementation was inserting every flow into separate database collection from a separate thread
  • CHANGED: BenchmarkTest.cs - in Read(), only one thread is started for reading data from the database. The old implementation was starting multiple threads depending on the flow count
  • CHANGED: the Finish() time is now added to the secondary read time. The old implementation was adding it to the Read() time
  • IMPROVED: Major improvements of the internal architecture and implementations
  • IMPROVED: Major improvements of code readability
  • IMPROVED: Major optimizations of the GUI that will make it lighter and faster
  • IMPORTANT IMPROVEMENT OF MySQL:
  • ADDED: InsertsPerQuery property in the implementation of MySQl "Increase the batch size for MySQL inserts from 1000 to 10000 (the MongoDB client uses batches of 30000 documents). This will dramatically reduce the number of fsync() operations for ACID engines like InnoDB and TokuDB allowing them to insert data more quickly, especially on low end hard drives."
  • IMPROVED: new size reporting query for TokuDB storage engine
  • IMPORTANT IMPROVEMENT OF LevelDB:
  • LevelDB engine is now updated to version 1.16
  • The following properties are added in the implementation of LevelDB:
  • BlockSize (default: 4 * 1024)
  • Cache (default: 8 * 1024 * 1024)
  • WriteBufferSize (default: 4 * 1024 * 1024)
  • MaxOpenFiles (default: 1000)
  • Compression (default: NoCompression)
  • ADDED: Redis 2.8.19 with .Net Client 3.9.71
  • ADDED: Couchbase 3.0.2 with Couchbase-Net-Client-2.0.2
  • ADDED: Aerospike 3.4.1 with .NET Client 3.0.13
  • ADDED: OrientDB 2.0 with OrientDB-NET.binary
  • ADDED: Separate implementation for TokuMX
  • ADDED: Export of the test results into a JSON file
  • ADDED: License header in MainForm.cs
  • CHANGED: Removed SetDropDups option from TokuMX and MongoDB implementation (thanks to Tim Callaghan of Tokutek)
  • CHANGED: MongoDB implementation and TokuMX implementations ObjectId _id is used as an only index. Instead of InsertBatch, the inserts are now performed by the Bulk().Find().Upsert().ReplaceOne(), which queries the database and if no record exists with the specified _id, an insert operation is performed, otherwise it replaces the whole document
  • IMPROVED: TokuMX size query
  • IMPROVED: SQLite benchmark
  • REMOVED: SiaqoDB database
  • REMOVED: RaptorDB database
  • REMOVED: H2 database
  • REMOVED: DerbyDb database
  • REMOVED: NSimpleDB
  • REMOVED: all IKVM references
  • UPDATED: HamsterDB native library to version 2.1.9 and .NET wrapper recompiled for .NET 4.5
  • UPDATED: MongoDB C# drivers to 2.0.0beta2
  • UPDATED: CassandraDB to version 2.1.2
  • UPDATED: SQLite to 3.8.4.1, ADO.NET Provider for SQLite to 1.0.92.0

New in Database Benchmark 2.0.3 (Oct 8, 2014)

  • Added:
  • STS.General and STS.General.GUI sources have been added to the DatabaseBenchmark solution (thanks to Artemkas).
  • Updated:
  • STSdb 4.0 library to STSdb 4.0.3

New in Database Benchmark 2.0.1 (Oct 8, 2014)

  • Bug fixes:
  • MongoDB: generated rows are always stored in one collection
  • MongoDB: key index is not created when SetDropDups option is not supported (in TokuMX distribution)
  • Updated:
  • STSdb 4.0 to 4.0.1

New in Database Benchmark 2.0 (Oct 8, 2014)

  • Changed:
  • The benchmark now uses type long for the keys and type Tick for the records. The records are generated using random-walk algorithm which produces close to real-life ticks.
  • The old chart engine has been replaced with MS Charts control - removed ~1700 lines of code.
  • Fixed:
  • The application process remained open after clossing the application.
  • Updated:
  • STSdb4 library to STSdb 4.0
  • STSdb 3.5 library to 3.5.13
  • VelocityDB Standalone Client library to 3.2.1 released Dec 8, 2013
  • New implementation of VelocityDB (thanks to Mats Persson - founder of VelocityDB);
  • Perst library to 4.42
  • Oracle BerkeleyDB library to 12c Release 1 Library Version 12.1.6.0
  • MongoDB drivers to 1.8.3
  • MySQL connector to 6.7.4
  • MSSQL Server Compact library to 4.0 x64
  • H2 library to H2 1.3.174 and IKVM to 7.2.4630.5
  • HamsterDb library to HamsterDB 2.1.3
  • SQLite library to SQLite 3.8.1 + ADO.NET Provider for SQLite 1.0.89.0
  • Access library to Access 2013
  • Added:
  • PostgreSQL (with Npgsql 2.0.13.91 .net connector)
  • CassandraDB 2.0.2 + CassandraToLinq
  • RaptorDB v3.0.6
  • Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) Dec 28 2012
  • Volante 0.9
  • Derby 10.10.1.1 (via IKVM.NET)
  • Siaqodb 3.7
  • BrightstarDB 1.5.0.0 Stable - Fri Nov 22, 2013 at 10:00 AM
  • RavenDB 2.5.2750 - 2013-10-30 Embedded .NET Client
  • Started:
  • NSimpleDB implementation

New in Database Benchmark 1.4 (Sep 12, 2013)

  • Added support for STSdb4, MongoDB, LevelDB in Database Benchmark