NoSQL db performance testing

Suppose you have a nosql database - redis, cassandra, mongodb. And you need to check the overall performance for this database - the various platforms, operating systems, and even programming languages ​​that are used for testing. It is not tied to a specific application or scheme.

  • What tests do you want to see? Could you help me formulate the requirements?
    • How does a database work in a cluster?
    • In a broken cluster?
    • In the cloud env?
    • How can it fulfill requests when opening 10k connections?
  • What tools will you use?
    • Is this something like a JMeter-> http server-> database?
    • Database Jmeter-> tcp app->?
    • Other?

All the material I found about testing database performance is similar to testing a database as part of some product (specific schema, specific env). Have you thought about testing database performance when the database is a product?

We expect you to help.

-vova

+4
source share
2 answers

In NoSQL Tests and Performance Assessments, I have compiled a list of criteria that are correct in the sense that they clearly define the purpose of the test and compare similar functions (compare apples to apples); there are too many benchmarks that do not meet at least one of these fundamental requirements of the standard. After going through them, you can extract bits that are interesting for your own test, as well as find out which tools were used and get some code for comparison.

So far, the most common NoSQL benchmark has been YCSB (Windows Cloud Service Benchmark). The Cubrid blog recently published the results of this test against some of the most popular NoSQL solutions, and this may give you an idea of ​​how to interpret the results.

+5
source
  • check overall performance for this database

If you don’t need to do this for fun or just want to get a guide for getting a test, I would recommend adapting the performance to the real problem .

For example, do you really need crazy fast recordings? Are you okay with data loss? Do you mind spending time setting up a failure? Are you planning to zoom in or out? Do you plan TB data? etc..

From the examples you quoted => Redis, Cassandra, and MongoDB are completely different:

Redis is basically a cache, and it is very fast, but being just a cache will not help you do a lot of aggregation of medium complexity. However, this is currently the best cache (my opinion). "Redis + killer DB" is the perfect combination. It also has a built-in Datastax tool that can remove all its complexity. I have a very simple Cassandra Bombardier that can help you get started.

MongoDB is an excellent database for several reasons: a very sexy and simple query language, good documentation, a huge community, etc. Not so great in other aspects: you need to spend time, and then re-reuse it [compare, for example, Riak , where it is done automatically]. This is very fast (writes), if the data (and not just the index) is placed in RAM, it slows down very quickly, if it is not. There is a constant assumption that you may lose data (from one of the Basho engineers: “I personally spent some time figuring out ways to demonstrate that MongoDB will lose records before the failure”), aggregated queries may take some time, given the not so large data set. I have a Mongo Performance Playground that may come in handy.

+2
source

Source: https://habr.com/ru/post/1393308/


All Articles