Oct
28
2021
--

Stokke Tripp Trapp vs. Stokke Steps: Which Chair To Choose

Parents are faced with many choices when the baby first arrives. There are so many baby products available. One of the most important baby products is baby chairs. This is where the newborn baby will eat, play and relax. The first few months he spends a lot of time in this type of chair that means that you have to choose a good one.

Parents want their children to feel comfortable and secure while they feed them at home. These chairs need to have an ergonomic design, which would be the parents’ main criterion when choosing one. The Stokke company is known worldwide because of its high-quality products that provide comfort and safety to children.

Stokke has some of the most innovative seats on the market, which are considered iconic: Tripp Trapp and Steps.

But when compared, which one to choose? Here is an overview to help you decide between the Stokke Tripp Trapp vs. Stokke Steps.

Stokke Steps vs Stokke Tripp Trapp

Both the Stokke Tripp Trapp and the Stokke Steps are made in Europe, where safety standards for children’s products are incredibly high. Tripp Trapp is Made in Denmark. It has been designed and manufactured under strict quality control at Stokke’s factory since 1972, whereas the Stokke Steps are designed and manufactured at Stokke AS in Norway.

The design, materials, and durability are comparable between the two chairs. Both seats support your baby when he needs it most: when he is learning to sit up independently. Each of these chairs is easy to clean and move around for convenience.

Let’s have a closer look at these two baby chairs.

Stokke Tripp Trapp

(Sponsored)

The Stokke Tripp Trapp is the #1 best-selling high chair in the United States, which speaks for itself. Tripp Trapp is a timeless, sophisticated chair that blends in with both modern and traditional interiors. It comes in a range of beautiful colors to suit any taste. It has everything you need to make mealtime easier, and it is guaranteed to last through your child’s growing years.

The Stokke Tripp Trapp has been designed in collaboration with child development experts and pediatricians. The unique design encourages safe seating based on ergonomic theory; the backrest supports the child’s posture while the feet are free to rest comfortably on the footrest. The chair can be easily adjusted to suit a growing child.

The legs are lockable, so you can feel safe knowing that the chair will not topple over on little hands exploring around it. It has a sleek Scandinavian design and is made of beechwood with a strong, durable veneer. The Tripp Trapp will hold up to 300 pounds – it can be used even by adults!

Tripp Trapp Features

The Stokke Tripp Trapp has the following features:

  • The seat is 18 inches from the ground, which means that even a toddler can climb into it easily.
  • The seat (sold separately) is machine washable.
  • The seat can hold up to 300 pounds, which means you will get years of use out of it.
  • There are six different height adjustments for the seat back, so your baby can sit comfortably while playing with his toys or watching you at the dinner table.
  • There are two footrest positions; the lower position accommodates infants who are learning to sit up.

Tripp Trapp Pros

  • It is well-made, strong, durable, and very safe for children to use. There are also many reasons parents choose this high chair over other high chairs in the market, including:
  • The Tripp Trapp is made of beechwood, which has a natural protective layer that makes it easy to maintain and clean.
  • The Tripp Trapp comes with a 10-year warranty on the frame.
  • The Stokke Tripp Trapp takes up very little room in your kitchen.
  • There are so many design options, and you are sure to find one that fits your sense of style.
  • Adults can also use it

Tripp Trapp Cons

The Stokke Tripp Trapp is a solid investment for growing babies and toddlers. It has back support that offers more safety and support than most highchairs. If there is something that keeps this chair from getting a perfect score, it would be the price. It is much more expensive than other high chairs on the market.

Stokke Steps

(Sponsored)

Stokke Steps is a good choice for families who prefer a slightly smaller chair. The seat is lower than on the Tripp Trapp and therefore better adapted to younger age groups than the Tripp Trapp (designed for children from 18 months and up).

The Stokke Steps has an excellent, clean design ideal for newborns and children up to 3 years. This chair can be used as a first booster seat and then converted into a regular-sized adult chair. The legs fold under the chair when not in use, which makes it easy to store or take with you if needed.

The Stokke Steps is made of a strong, durable plastic that can quickly be taken apart and put back together if needed. It has a steel frame for added strength and stability.

The Stokke Steps can hold up to 110 pounds of weight. Locking casters on the legs make it easy to move around for cleaning or if you need to take it outdoors.

Stokke Steps Features

  • The Stokke Steps is lightweight, at just seven pounds. It’s easy to clean, with a plastic seat that wipes clean without much effort.
  • The Stokke Steps support your baby as he learns to sit up on his own.
  • The chair does not take up too much space in the kitchen or living room.

Stokke Steps Pros

  • The Stokke Steps is a more affordable option at $200.
  • The chair is a good size for a small baby and can also accommodate a bigger child.
  • The Stokke Steps is beautiful and does not look like a typical baby highchair.

Stokke Steps Cons

The Stokke Steps do not come in as many colors or fabrics as the Tripp Trapp. Luckily, all available color variations are classic, so there is a very high chance it will match your home decor, even after many years.

The Stokke Steps does not come with any safety straps for when your baby learns to stand up and walk around in the chair; you will need to purchase this accessory separately.

Conclusion

Both the Tripp Trapp and Stokke Steps are great options for parents who want to invest in a high chair that will last for years. Parents usually prefer these well-engineered chairs over cheaper ones because they are not only safer but also more comfortable and stylish.

Choosing between the two is dependent on your budget and personal preferences. The Tripp Trapp is more expensive than the Stokke Steps, but it also can accommodate a larger age group and has more features and accessories available for purchase. Parents who prefer high wooden chairs should opt for this model because you can buy replacement parts in different colors to match your home décor.

The Stokke Steps costs about $200, which is much less than the Tripp Trapp. It is a good option for newborns and small children because it can hold up to 110 pounds. The chair does not take up too much space in your living area or kitchen.

If you prefer a more affordable high chair that still has all the features you need, then go for the Stokke Steps. It has a sleek, modern design that will look great in any home and the seat cover is machine washable for easy clean-up. The Tripp Trapp may be a better choice if you have a bigger budget to spend on a high chair, as it comes with more features and options for customization.

However, Tripp Trapp’s price tag is justified by its ability to grow with your baby from a small infant into an older child.

The post Stokke Tripp Trapp vs. Stokke Steps: Which Chair To Choose appeared first on Comfy Bummy.

Oct
27
2021
--

Why it’s important to choose kids’ chairs with memory foam?

Memory foam was first produced in 1966 by NASA, looking to create material that would protect the astronauts during take-off. They were working on isolating space ships from shock waves. And it was hard to develop because the material needed to have the perfect balance between firmness and elasticity.

The first memory foam mattresses appeared on the market in 1987, but it took years before consumers accepted them. Today this type of mattress is one of the most preferred types, especially good for people with back problems.

More and more parents choose memory foam for their children’s furniture. If you are interested in this type of chair, we recommend you to keep on reading the article – it will explain why this material is so great and where to buy memory foam chairs for kids.

What is memory foam, and why it’s so popular?

Unlike low or middle-density foams, high-quality memory foam perfectly molds the body contours, offering good support to muscles and the spine. This material is widely used in different kinds of orthopedic equipment because it has many advantages over other materials. Furthermore, this type of foam is hypoallergenic, antibacterial, can reduce pressure points and prevent overheating.

Benefits of children’s chairs with memory foam:

  • Ergonomic design helps to maintain your child’s correct posture.
  • Memory foam perfectly absorbs shocks reducing the risk of injuries during different activities.
  • It prevents spine curvature and other spine problems.
  • High-density memory foam is breathable, has antibacterial and hypoallergenic properties.

As a result, children’s chairs with memory foam of the highest quality will help your kid grow healthy and active!

Tips on choosing kids’ chairs with memory foam

  1. Look at the size of the chair! Make sure that your kid will have enough space to sit in it comfortably, and his legs won’t touch the bottom of the seat.
  2. Make sure that there are no sharp corners or any other parts capable of causing injury on the chair!
  3. Finally, it’s better to have a removable cover, so you’ll be able to wash it after your kid had an accident or got any other stain, just in case!

What are the best kids’ chairs with memory foam?

  • Delta Children iComfort Memory Foam Chair (Sponsored)– This supremely comfy chair has a memory foam seat for added comfort and a luxurious quilted slipcover. The cover is detachable and machine washable for simple cleaning. This kids’ foam chair will go with them anywhere they go – the lightweight design with a top handle is simple to transport from room to room. For ages 18 months+.
  • Comfy Sacks Kids Memory Foam Bean Bag Chair (Sponsored) – Children who like to watch cartoons on TV for hours on end or simply love curling up in front of the PlayStation will enjoy this comfy seat. Comfy sacks are filled with a long-lasting shredded memory foam that is soft and resists permanent compression. For years, your Comfy Sack will retain its unique squishy feel.
  • Delta Children Cozee Fluffy Chair (Sponsored) – The comfy, supportive back and plush faux fur cover make this chair ideal for reading, playing, or snuggling. Its lightweight makes it portable enough to take with your child wherever they go. The foam construction’s innovative design will preserve its form for years of use that adjust to your child’s requirements.
  • FOME HOME Kids Floor Chair (Sponsored) – The excellent flexibility and comfort children need to sit and play for hours. It’s the best choice for kids who love to watch TV or spend the evening on the floor playing games on tablets, laptops, or phones.

The post Why it’s important to choose kids’ chairs with memory foam? appeared first on Comfy Bummy.

Oct
26
2021
--

Junior Fishing Chair For Kids

Want to give your kids memories they will cherish for life? Then it would help if you tried bringing them on a fishing trip. You can make it a family trip or go fishing alone with your children. Either way, you will be able to relax and enjoy the beautiful sights of nature.

Plus, you’ll also be teaching them valuable lessons about life. But what if they are too old to sit on your lap while fishing? You might want to invest in a junior fishing chair for kids.

Imagine the joy on their face when they can sit with you while fishing. They will have a great time bonding with you through this activity. Of course, it wouldn’t hurt if you brought them a comfortable chair for kids.

Tips When Buying a Kids’ Fishing Chair

Here are some tips on how to choose the right junior fishing chair for kids:

Tip #1: Size and Weight

The first thing that you should consider is the size of the junior fishing chair. You should be able to find a chair that fits your child perfectly. After all, their comfort will have a significant impact on how they enjoy the trip. Make sure that it can hold your child’s weight, too.

Tip #2: Age and Weight Limit

The next thing that you should do is look into the age limit of the junior fishing chair. You don’t want to bring a chair that’s made for older children on a family trip with younger kids. This can be very dangerous as one child may not have the capacity to sit on a chair.

Tip #3: Material Used

It’s also important to look into the material used for junior fishing chairs. After all, you want to be sure that it can bear your child’s weight. You may want to get a plastic or metal chair if you plan to bring your kids along with you on family trips.

Tip #4: Price

The price of junior fishing chairs will also depend on their weight limit and features. You may want to get a chair that will last for many years, so it’s best to choose the most durable one out there.

Recommended Fishing Chairs for Kids

We have visited Amazon.com and found some fishing chairs for kids we can recommend. One for girls, one for boys, and one for both.

Please note that the prices displayed on Amazon.com are subject to change at any time. If you want to know the price, you have to click the links attached to that paragraph.

For Girls: Ultralight Backpack Cooler Chair – Compact Lightweight and Portable Folding Stool for Kids

This is a lightweight fishing chair for girls. You can carry it anywhere you go, and its backpack design makes it easy to bring along. It only weighs 3 pounds, so even young children can carry it around with ease. In addition, the compact size means that this chair won’t take up too much space inside your car or house.

Check the price on Amazon.com (Sponsored)

For Boys: Backpack Cooler Chair, Portable Fishing Chair for Outdoor Activities

A fishing chair for boys should be sturdy, comfortable, and easy to carry around. This is exactly what this chair offers! It is lightweight, so your boy will have no trouble carrying it on his back. Plus, its size won’t take up too much space inside your car or home.

Check the price on Amazon.com (Sponsored)

For Both: Kelsyus Kids Outdoor Canopy Chair

Why not get a fishing chair for kids that they can enjoy with you? Kelsyus Kids Outdoor Canopy Chair is designed to fit children of all ages, and it has a canopy where your child can put his drink and snacks. The frame is made from steel, making it sturdy enough to endure the outdoor environment. It also folds up quickly, so you won’t have any trouble bringing it along on family trips.

Check the price on Amazon.com (Sponsored)

Where Can I Find Fishing Chairs for Kids?

You can find fishing chairs for kids at major department stores, sporting goods retailers, and even grocery stores. You may also want to check out Amazon.com as they offer some of the best deals online.

Final Thoughts

What better way to bond with your child than fishing? The right junior fishing chair can make all the difference, so you need to choose carefully. Follow our tips above, and you’re sure to find the perfect one for your family!

The post Junior Fishing Chair For Kids appeared first on Comfy Bummy.

Oct
25
2021
--

Talking Drupal #318 – DDEV with Randy Fay

Today we are talking about DDev with Randy Fay

TalkingDrupal.com/318

Topics

  • John – TD youtube and linkedin
  • AmyJune – Getting ready for winter and music shows
  • Randy – managing hospice for mother
  • Nic – House cleanouts and lego
  • DDEV elevator pitch
  • Beginning of DDEV
  • Development Process
  • Team
  • Docker use cases
  • Listener Marc van Gend “I’d love to hear about the current state of the project, given the change of ownership. Is it healthy financially?”
  • Listener Josh Miller “Randy has a long history with Drupal, outdating most. https://drupal.org/u/rfay a little over 16 years. How did his contribution start, and how has it changed? Does he still build with Drupal?”
  • Roadmap
  • Listener Stephen Cross “I easily got DDEV running on Raspberry Pi, while other tools do not run simply. How has ARM adoption been?”
  • Josh on Twitter “Will docker work on new processors?”

Resources

Compu-Home Systems TomorrowHouse (1980’s Home Automation run by an Apple II Randy and Nancy’s 2.5-year bike trip through the Americas Ddev docs DDEV Github

What’s So Different about DDEV? #ddev for tweets Talking Drupal on YouTube

Guests

Randy Fay- http://randyfay.com @randyfay

Hosts

Nic Laflin – www.nLighteneddevelopment.com @nicxvan John Picozzi – www.epam.com @johnpicozzi AmyJune – @volkswagenchick

MOTW

Recaptcha Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.

reCAPTCHA is built for security. Armed with state of the art technology, it always stays at the forefront of spam and abuse fighting trends. reCAPTCHA is on guard for you, so you can rest easy.

Oct
25
2021
--

Comparing Graviton (ARM) Performance to Intel and AMD for MySQL (Part 2)

Comparing Graviton Performance to Intel and AMD for MySQL

Comparing Graviton Performance to Intel and AMD for MySQLRecently we published the first part of research comparing Graviton (ARM) with AMD and Intel CPU on AWS. In the first part, we selected general-purpose EC2 instances with the same configurations (amount of vCPU).  The main goal was to see the trend and make a general comparison of CPU types on the AWS platform only for MySQL. We didn’t set the goal to compare the performance of different CPU types. Our expertise is in MySQL performance tuning. We share research “as is” with all scripts, and anyone interested could rerun and reproduce it.
All scripts, raw logs and additional plots are available on GitHub: (2021_10_arm_cpu_comparison_c5csv_file_with_all_data).

We were happy to see the reactions from our Percona Blog readers to our research, and we are open to any feedback. If anyone has any ideas on updating our methodology, we would be happy to correct it.

This post is a continuation of research based on our interest in compute-optimized EC2 (and, of course, because we saw that our audience wanted to see it). Today, we will talk about (AWS) Compute Optimized EC2: C5, C5a, C6g (complete list in appendix).

Next time we are going to share our findings on the economic efficiency of m5 and c5 instances.

Short Conclusion:

  1. In most cases for c5, c5a, and c6g instances, Intel shows better performance in throughput for MySQL read transactions.
  2. Sometimes Intel could show a significant advantage — more than almost 100k rps than other CPUs.
  3. If we could say in a few words: c5 instances (with Intel)  are better in their class than other c5a, c6g instances (in performance). And this advantage starts from 5% and could be up to 40% compared with other CPUs.

Details and Disclaimer:

  1. Tests were run  on C5.* (Intel) , C5a.* (AMD),  C6g.*(Graviton) EC2 instances in the US-EAST-1 region. (List of EC2 see in the appendix.)
  2. Monitoring was done with PMM
  3. OS: Ubuntu 20.04 TLS 
  4. Load tool (sysbench) and target DB (MySQL) installed on the same EC2 instance.
  5. Oracle MySQL Community Server — 8.0.26-0 — installed from official packages.
  6. Load tool: sysbench —  1.0.18
  7. innodb_buffer_pool_size=80% of available RAM
  8. Test duration is 5 minutes for each thread and then 90 seconds warm down before the next iteration. 
  9. Tests were run 3 times (to smooth outliers / to have more reproducible results). Then results were averaged for graphs. 
  10. We are going to use a “high-concurrency” scenario definition for scenarios when the number of threads would be bigger than the number of vCPU. And “low-concurrent” scenario definition with scenarios where the number of threads would be less or equal to a number of vCPU on EC2.
  11. We are comparing MySQL behavior on the same class of EC2, not CPU performance.

Test Case:

Prerequisite:

1. Create DB with 10 tables with 10 000 000 rows each table

sysbench oltp_read_only --threads=10 --mysql-user=sbtest --mysql-password=sbtest --table-size=10000000 --tables=10 --db-driver=mysql --mysql-db=sbtest prepare

2. Load all data to LOAD_buffer

sysbench oltp_read_only --time=300 --threads=10 --table-size=1000000 --mysql-user=sbtest --mysql-password=sbtest --db-driver=mysql --mysql-db=sbtest run

 

3. Test:

Run in a loop for same scenario but  different concurrency THREAD (1,2,4,8,16,32,64,128) on each EC2 

sysbench oltp_read_only --time=300 --threads=${THREAD} --table-size=100000 --mysql-user=sbtest --mysql-password=sbtest --db-driver=mysql --mysql-db=sbtest run

Results:

Result reviewing was split into three parts:

  1. For “small” EC2 with 2, 4, and 8 vCPU
  2. For “medium” EC2 with 16 and for  “large” EC2 with 48 and 64 vCPU (AWS does not have C5 EC2 with 64 vCPU )
  3. For all scenarios to see the overall picture.

There would be four graphs for each test:

  1. Throughput (queries per second) that EC2 could perform for each scenario (amount of threads).
  2. Latency 95 percentile that  EC2 could perform for each scenario (amount of threads).
  3. Relative comparing Graviton and Intel, Graviton, and AMD.
  4. Absolute comparing Graviton and Intel, Graviton, and AMD.

Validation that all load goes to CPU, not to DISK I/O, was done also using PMM (Percona Monitoring and Management). 

pic 0.1. OS monitoring during all test stages (picture is for example)

Result for EC2 with 2, 4, and 8 vCPU:

plot 1.1. Throughput (queries per second) for EC2 with 2, 4 and 8 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 1.2. Latencies (95 percentile) during the test for EC2 with 2, 4 and 8 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 1.3.1 Percentage comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 2, 4 and 8 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 1.3.2  Percentage comparison Graviton and AMD CPU in throughput (queries per second) for EC2 with 2, 4 and 8 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 1.4.1. Numbers comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 2, 4 and 8 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 1.4.2. Numbers comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 2, 4 and 8 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

OVERVIEW:

  1. Based on plot 1.1, we could say that EC2 with Intel has an absolute advantage compared with Graviton and AMD. 
  2. This advantage in most scenarios fluctuates between 10% – 20%.
  3. In numbers, it is over 3,000 requests per second. 
  4. There is one scenario when Graviton becomes better EC2 with 8 vCPU (c6g.2xlarge). But the advantage is so tiny (near 2%) that it could be a statistical error. So we can’t say that benefits are relevant.

Result for EC2 with 16, 48 and 64 vCPU:

plot 2.1.  Throughput (queries per second)  for EC2 with 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 2.2.  Latencies (95 percentile) during the test for EC2 with 16, 48 and 64  vCPU for scenarios with 1,2 4,8,16,32,64,128 threads

 

plot 2.3.1 Percentage comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 16, 48 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 2.3.2  Percentage comparison Graviton and AMD CPU in throughput (queries per second) for EC2 with 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 2.4.1. Numbers comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 16, 48 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 2.4.2. Numbers comparison Graviton and AMD CPU in throughput (queries per second) for EC2 with 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

OVERVIEW:

  1. Plot 2.1 shows that it has an advantage over the other vCPU in our conditions (there are no EC2 with 64 Intel’s vCPU to have a full picture of comparison). 
  2. This advantage could be near 20% for EC2 with 16 vCPU and up to 40% for EC2 with 48 vCPU. However, it is possible to see that this advantage decreases with an increasing amount of threads. 
  3. In real numbers, Intel could execute up to 100 k read transactions more than other CPUs (plot 2.1. , plot 2.4.1).
  4. On the other hand, in one high-performance scenario, we could see a small advantage (3%) of Graviton. However, it is so small that it could be a statistical error again (plot  2.3.1.).
  5. In most cases, Graviton shows better results than AMD (plot 2.1, plot 2.3.2, plot 2.4.2).

Whole Result Overview:

plot 3.1. Throughput (queries per second) for EC2 with 2, 4, 8, 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 3.2.  Latencies (95 percentile) during the test for EC2 with 2, 4, 8, 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 3.3.1. Percentage comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 2, 4, 8, 16 and 48 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 3.3.2. Percentage comparison Graviton and AMD CPU in throughput (queries per second) for EC2 with 2, 4, 8, 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 3.4.1. Numbers comparison Graviton and Intel CPU in throughput (queries per second) for EC2 with 2, 4, 8, 16 AND 48 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

plot 3.4.2. Numbers comparison Graviton and AMD CPU in throughput (queries per second) for EC2 with 2, 4, 8, 16, 48 and 64 vCPU for scenarios with 1,2,4,8,16,32,64,128 threads

 

Final Thoughts

  1. We compare compute-optimized ec2 (c5, c5a, c6g) instances from the AWS platform and their behavior for MySQL.  
  2. It is still an open question regarding the economic efficiency of all this EC2. We will research this topic and answer this question a little bit later.
  3. In these tests, AMD does not provide any competitive results for MySQL. It is possible that in other tasks, it could show much better and competitive results.

APPENDIX:

List of EC2 used in research:

CPU type EC2 Amount vCPU Memory GB EC2 price per hour (USD)
AMD c5a.large 2 4 0.077
AMD c5a.xlarge 4 8 0.154
AMD c5a.2xlarge 8 16 0.308
AMD c5a.4xlarge 16 32 0.616
AMD c5a.12xlarge 48 96 1.848
AMD c5a.16xlarge 64 128 2.464
Intel c5.large 2 4 0.085
Intel c5.xlarge 4 8 0.170
Intel c5.2xlarge 8 16 0.340
Intel c5.4xlarge 16 32 0.680
Intel c5.12xlarge 48 96 2.040
Graviton c6g.large 2 4 0.068
Graviton c6g.xlarge 4 8 0.136
Graviton c6g.2xlarge 8 16 0.272
Graviton c6g.4xlarge 16 32 0.544
Graviton c6g.12xlarge 48 96 1.632
Graviton c6g.16xlarge 64 128 2.176

 

my.cnf:

[mysqld]
ssl=0
performance_schema=OFF
skip_log_bin
server_id = 7

# general
table_open_cache = 200000
table_open_cache_instances=64
back_log=3500
max_connections=4000
 join_buffer_size=256K
 sort_buffer_size=256K

# files
innodb_file_per_table
innodb_log_file_size=2G
innodb_log_files_in_group=2
innodb_open_files=4000

# buffers
innodb_buffer_pool_size=${80%_OF_RAM}
innodb_buffer_pool_instances=8
innodb_page_cleaners=8
innodb_log_buffer_size=64M

default_storage_engine=InnoDB
innodb_flush_log_at_trx_commit  = 1
innodb_doublewrite= 1
innodb_flush_method= O_DIRECT
innodb_file_per_table= 1
innodb_io_capacity=2000
innodb_io_capacity_max=4000
innodb_flush_neighbors=0
max_prepared_stmt_count=1000000 
bind_address = 0.0.0.0
[client]

 

Oct
25
2021
--

Percona Server for MongoDB 5.0.3-2 Release Candidate, Updated Percona Server for MySQL: Release Roundup October 25, 2021

Percona Releases Oct 25 2021

It’s release roundup time again here at Percona!

Percona Releases Oct 25 2021Percona is a leading provider of unbiased open source database solutions that allow organizations to easily, securely, and affordably maintain business agility, minimize risks, and stay competitive.

Our Release Roundups showcase the latest Percona software updates, tools, and features to help you manage and deploy our software. It offers highlights and critical information, as well as links to the full release notes and direct links to the software or service itself to download.

Today’s post includes those releases and updates that have come out since October 11, 2021. Take a look!

 

Percona Distribution for MongoDB 4.2.17

Percona Distribution for MongoDB 4.2.17 was released on October 11, 2021. It is a collection of solutions to run and operate your MongoDB efficiently and includes Percona Server for MongoDB and Percona Backup for MongoDB. This release includes bug fixes provided by MongoDB.

Download Percona Distribution for MongoDB 4.2.17

 

Percona Server for MongoDB 5.0.3-2 (RC)

On October 15, 2021, Percona Server for MongoDB 5.0.3-2 (RC) was released. It is an enhanced, source-available, and highly scalable database that is a fully compatible, drop-in replacement for MongoDB 5.0.3 Community Edition.  Please note:  Due to many core changes to WiredTiger and the core server introduced to facilitate new features such as resharding, time series collections, and API versioning, MongoDB 5.0.x is still unstable. We do not recommend using this release candidate for production environments.

Download Percona Server for MongoDB 5.0.3-2 (RC)

 

Percona Server for MongoDB 4.2.17-17

October 11, 2021, saw the release of Percona Server for MongoDB 4.2.17-17. It includes all features and bug fixes provided by MongoDB 4.2.16 Community Edition and by MongoDB 4.2.17 Community Edition, supporting protocols and drivers of MongoDB Community Edition versions 4.2.16 and 4.2.17.

Download Percona Server for MongoDB 4.2.17-17

 

Percona Distribution for MySQL (PS-based variant) 8.0.26

On October 20, 2021, we released Percona Distribution for MySQL (PS-based variant) 8.0.26, a single solution with the best and most critical enterprise components from the MySQL open-source community, designed and tested to work together. This release is focused on the Percona Server for MySQL-based deployment variant. Note: The TokuDB Storage Engine has been declared deprecated starting with Percona Server for MySQL 8.0.26-16. The plugins are available in binary builds and packages but are disabled.

Download Percona Distribution for MySQL (PS-based variant) 8.0.26

 

Percona Server for MySQL 8.0.26-16

Percona Server for MySQL 8.0.26-16 was released on October 20, 2021, and includes all the features and bug fixes available in the MySQL 8.0.26 Community Edition, in addition to enterprise-grade features developed by Percona. A release highlight is that we have integrated a ZenFS RocksDB plugin to Percona Server for MySQL. This plugin places files on a raw zoned block device (ZBD) using the MyRocks File System interface. For more information, see MyRocks with ZenFS.

Download Percona Server for MySQL 8.0.26-16

 

That’s it for this roundup, and be sure to follow us on Twitter to stay up-to-date on the most recent releases! Percona is a leader in providing best-of-breed enterprise-class support, consulting, managed services, training, and software for MySQL, MongoDB, PostgreSQL, MariaDB, and other open source databases in on-premises and cloud environments.

Complete the 2021 Percona Open Source Data Management Software Survey

Have Your Say!

Oct
25
2021
--

Papasan chair for kids

If you’re looking for a fun and funky piece of furniture to add to your child’s room, why not take a look at the Papasan chair. An Indonesian chair similar in design to a bowl, this funky piece of furniture will add bright colors to your child’s room.

What is Papasan chair?

A Papasan chair is a small-sized rounded flat bottom circular woven wicker chair, often with a cushion. The word “Papasan” is from two words in the Indonesian language that describe something round and sitting. The traditional Papasan chairs are woven from rattan; however, modern variations can be found made from any sort of fabric, including cotton or leather. The traditional style is woven in the same way as a basket, therefore, making it quite sturdy.

This type of chair is specifically designed for people looking to relax or sleep in the chair. When the Papasan chair was invented, it is believed that they were created to aid people who suffered from sleep and nervous disorders, and anxiety.

Can kids use Papasan chairs?

It is definitely possible to use this chair by kids. This chair is ideal for children who like to sit and read, listen to music, play video games or watch TV. The traditional Papasan chair can be challenging to climb into for smaller children; however, the modern versions of the Papasan chair are much lower than the traditional ones.

The modern version of the chair has an oblong rattan or metal frame round in shape, with a plush cushion. A child can easily climb into this type of chair, whereas climbing into the traditional Papasan chair may prove to be more difficult.

What are the benefits of using Papasan chairs for kids?

Papasan chairs are great for kids because they offer a lot of benefits. Firstly, Papasan chairs can be pretty expensive, and this type of chair is ideal for the child in your life who has everything and requires nothing.

Other than that, it’s an excellent piece to accompany any bedroom furniture, especially if you’re looking to add something vibrant and fun.

They are incredibly comfortable, which means that kids can easily curl up with a good book, take a nap or even read the newspaper in this chair.

Kids love to lounge about and relax; therefore, if you’re looking for them to sit still for any amount of time without squirming around like madmen, having something comfortable is an advantage.

What’s the best Papasan chair?

There are a handful of options available when it comes to Papasan chairs. However, not all of them provide the same quality.

One of the best options, in my opinion, is the OSP Home Furnishings Wicker Papasan Chair. (Sponsored link)

This chair provides a comfortable sitting experience with its generous cushioning. It is made from the best materials that are highly durable. With this chair, you get your money’s worth.

The OSP Home Furnishing Papasan Chair’s 360-Degree Swivel is what makes it so unique. Thanks to that, you and your kid to spin without resistance or noise, allowing you to move about freely.

The post Papasan chair for kids appeared first on Comfy Bummy.

Oct
25
2021
--

Why Seating Is Important For Emotional Behavioral Disabilities

Here at Comfybummy.com, we know the importance of comfortable seating for kids. It helps them develop a good attitude and can help their spine grow correctly.

In 2020, the researcher Corinne E. Bloom Williams at the University of South Florida conducted a study where she evaluated the use of alternative seating with kids at risk for emotional, behavioral disabilities.

Looking at the results of her study, we believe even the researcher got caught by surprise by the results.

The Method She Used

She did the study with three groups of kids, ages 4-8.

Group A sat on a standard classroom seat or chair that is usually found in the classroom. This group didn’t have any additional seating method to help them be comfortable or sit correctly because they had been used to sitting like this since kindergarten.

Group B had an office chair with back support but no armrests. This helped build up their back muscles and spine correctly while they sat in the chair, which was effective with older kids (like adults).

Group C had an office chair with back support and armrests; however, instead of using the standard form of armrests that generally come with office chairs, they had unique armrests that didn’t make contact with the arms. Instead, it had a metal object at the end of each armrest about 10 cm long and very thin. When placed between the arm and chest while leaning on the chair back, it helped open up their chests for better breathing.

The Most Remarkable Results

As part of this study, three teachers were asked to give their feedback using this scale:

  1. Strongly Disagree
  2. Somewhat Disagree
  3. Neither Agree nor Disagree
  4. Somewhat Agree
  5. Strongly Agree

When faced with the following claim, the teachers averaged 1.3/5, which indicate that they strongly disagreed:

“My students do not have problems with staying in their seats and being on task when seated in a typical classroom chair.”

Stability Stools

  • Stability Stools helped my students focus on their task (Average: 4.3/5)
  • My students were able to stay seated longer when seated on the stability stool (Average: 4.3/5)
  • I would use stability stools in my classroom (Average: 5/5)

Scoop Rocker Chair had the same results as the Stability Stools.

The Conclusion Of The Study

From this study, we’ve learned that having the correct seating can change children’s moods and prevent emotional, behavioral disabilities. If you need to buy furniture for your child, think about their comfort first so they’ll be able to develop good habits.

Your child’s spine will thank you!

If you want to learn more about this study, you can download the PDF here.

The post Why Seating Is Important For Emotional Behavioral Disabilities appeared first on Comfy Bummy.

Oct
21
2021
--

Talking Drupal #317 – Govcon Keynote Non-Code Contribution: Using your passion and skills to power open source.

Today we are talking about Non-Code Contribution

TalkingDrupal.com/317

Topics

  • What is Talking Drupal
    • Podcast with audio and video
  • We recorded our 300th episode in June, over 175 guests, 700K audio downloads
  • Weekly episodes covering a variety of topics
  • Most recent 315 with Tara King, Director of Developer Relations at automatic, Comparing Drupal and WordPress Communities
  • Visit www.talkingdrupal.com
  • This may be a different keynote than you are accustomed to. Talking Drupal is a discussion, and that’s what we are having today.
  • Today we are talking about Non-Code Contribution: Using your passion and skills to power open source.
  • What is contribution in an open-source project?
  • Providing your time, skills or resources to benefit the project
  • Today we’re talking about non code contributions
  • Early on contribution was considered writing code
  • Over time we have learned to value non-code contributions just as much as code contrib
  • Rather than defining non-code contribution by what it is not, we need a term to define it by what it is
  • Community is built in meetups, camps, and cons
  • Majority of contribution has nothing to do with coding at a camp
    • Attending
    • Speaking
    • Training
    • Organizing
  • Organizing a camp (NEDCamp.org / Nov 19th)
  • Volunteering at a camp
    • Stephen – Sponsorship, lead for many years
    • Nic – Website & Signage
    • John – Current Lead, Day of Logistics, Venue coordination
  • Some other examples of contribution
    • Mentorship
    • Documentation
    • Training
    • Summits
    • Being on a committee/Board
    • Answering questions in issue queue
    • Answering questions in slack
  • Who is a contributor?
  • Is it a self designation or a community designation?
  • Why would you contribute?
    • Contribution is a relationship
    • Give and receive
    • Makes you feel good
    • Benefit Skills
      • Technical
      • Communication
      • Project Management
    • Benefit Career
      • Skills
      • Visibility
      • Building Personal Network
      • Networking at Events
    • Financial Compensation
  • Contribute does not always mean nights and weekends
    • Usually starts that way
  • Contribute as part of your job
    • Employers are open supporting open source, there are benefits got both company and employee
    • Contribute to external project or contribute internal project to open source
  • Will your company support your time to make NCC
    • 315 we learned about WordPress’ contribution goals
    • Launched in 2014, Five for the Future encourages organizations to contribute five percent of their resources to WordPress development.
  • Government
    • 2016 Federal Source Code Policy
    • Support for open source usage, encourage sharing across agencies
    • 20 percent created code should be open source
  • Start the Dialog with your company
  • Why do we contribute – Contribution can be personal like donating to your favorite charity or playing your favorite game.
    • Nic
      • I was asked
      • I enjoy giving back
      • Helps my career
    • Stephen
      • Sharing and Learning
    • John
      • To help people and solve technical challenges for people
      • Education and knowledge sharing
      • To support something larger than myself / make the world a better place
  • How did TD Start
    • Long before Joe Rogans podcast deal with Spotify of 100 million
    • 2008 – With Liberty and Justice for All – 5th grader
    • Obama McCain
    • 7 episodes
    • Mechanics of podcasting,work involved with pre and post record production
    • Virtual book club with Jason Pamental – pick a web design book, assign weekly chapters, Google Hangout
    • Like to learn – similar Drupal journeys – makings of an interesting podcast… great reason to talk every week
  • When did we start considering it a contribution? When did we start giving contribution credits on Drupal.org
  • How did Talking Drupal come to be a non-code contribution?
    • It always was a non-code contribution, we didn’t consider it at first because the Drupal community was code focused.
    • Drupal.org Credit for TD started 20 November 2020
  • Community Projects
    • When did the drupal community start supporting NCC
  • Why is this important
  • How has the show & other non-code contribution impacted our lives / careers
    • Stephen
      • Friendships
      • Have helped others
    • Nic
      • Friendships
      • Clients
    • John
      • Connections – Hey you are that guy
      • Given me a sense of value
      • Gives me a sense of supporting the community
  • Why are non-code contributions important
    • As valuable to the health of a project as code contributions.
    • There are non-code requirements for all projects
    • Not everyone is a developer/coder
    • Get’s more people with a variety of skills involved in the community
    • Moves open source forward
  • Challenges of Contributing
    • Contribution Imposter Syndrome
    • My Contribution isn’t valuable
    • Dealing with concerns that it’s not helpful
  • Focus on your skills and passions
  • Work, life, contribution balance
    • Work it into your work
    • Build a career based on contribution
    • Contrib doesn’t have to be Nights and Weekends
    • Add 30 min to the start or end of your day
    • If you do tackle one thing a night
    • Provide contrib during your workday
  • Sustainability
  • Projects are easy to do short time,
    • Energy is high
    • Newness interesting
  • Most podcast don’t make it past 8 episodes
    • Long term is a challenge
    • Pre-show guest scheduling, content planning, shownotes
    • Post Production audio and video
    • Release and marketing
    • 1 hour show = 6 – 8 hours
  • Priorities and interests change over time
  • NCC easier to transition in and out
    • Had to make transition out of my primary roles and I did that, projects have thrived in those transitions
  • Be honest with yourself
  • How to get involved / How to contribute
    • Just get started
    • Look at your skill set
    • Look at your interests
    • Ask in the issue queue or drupal slack for a starting point
    • You can also reach out to most camp organizers for recommendations
  • Takeaways
    • John
      • Anyone can and everyone should contribute
    • Stephen
      • Your contribution is valuable
    • Nic
      • Code and non code are equal to the long term health of the project

Resources

Hosts

Nic Laflin – www.nLighteneddevelopment.com @nicxvan John Picozzi – www.epam.com @johnpicozzi Stephen Cross – @stephencross

Oct
20
2021
--

MongoDB 5.0 Time Series Collections

MongoDB 5.0 Time Series Collections

MongoDB 5.0 Time Series CollectionsIn a previous article, I tested a new feature of MongoDB 5.0: resharding. Today, I take a look at another new feature: the Time Series collections.

The Time Series collection is an astonishing new feature available in MongoDB 5.0. Based on the first tests I have done, the Time Series support provides comparable performance to the index usage on regular collections but saves a lot of disk and memory space. Aggregation pipelines, which are common queries you can run on time series data, can get even more benefit.

Let’s start the tests.

What is a Time Series Database?

Generally speaking, a Time Series database is a specialized database designed for efficiently storing data generated from a continuous stream of values associated with a timestamp. The typical use case is when you need to store data coming from sensory equipment that transmits data points at fixed intervals, but now they are used in support of a much wider range of applications.

Typical use cases are:

  • IoT data
  • Monitoring web services, applications, and infrastructure
  • Sales forecasting
  • Understanding financial trends
  • Processing self-driving car data or other physical devices

A Time Series specialized database utilizes compression algorithms to minimize the space requirement and also provides access paths to dig more efficiently into the data. This improves the performance of retrieving data based on time range filters and aggregating data. They are more efficient than using a common relational database.

Usually, the values of a Time Series shouldn’t change once recorded, they are defined as INSERT only, also known as immutable data points. Once the data is stored the update operation is really uncommon.

Another characteristic of Time Series is that every item should have a single value (a single temperature, a stock price, and so on).

Popular Time Series databases are InfluxDB, Prometheus, Graphite. There are also many others. VictoriaMetrics in particular is a popular fork of Prometheus and is used in our Percona Monitoring and Management software.

The New Time Series Collections in MongoDB 5.0

MongoDB, as well as relational databases, has been widely used for years for storing temperature data from sensors, stock prices, and any other kind of unchanging data over time. MongoDB version 5.0 promises that this can be done more efficiently, so let’s take a look at how it works.

A Time Series collection appears as a regular collection and the operations you can do are exactly the same: insert, update, find, delete, aggregate. The main difference is behind the curtain. MongoDB stores data into an optimized storage format on insert. Compared to a normal collection, a Time Series is smaller and provides more query efficiency.

MongoDB treats Time Series collections as writable non-materialized views. The data is stored more efficiently, saving disk space, and an automatically created internal index orders the data by time. By default, the data is compressed using the zstd algorithm instead of snappy. The new compression provides a higher ratio, less CPU requirements, and it is well suited for time series data where there are few variations from one document to the next one. You can eventually change the compression algorithm, but it is not really recommended.

A Time Series collection is not implicitly created when you insert a document, the same as regular collections. You must create it explicitly.

Let’s do some tests.

Create a Time Series Collection for Storing Stock Prices

We need to use the createCollection() method, providing some parameters.

[direct: mongos] timeseries> db.createCollection( 
"stockPrice1week", { 
  timeseries: { 
    timeField: "timestamp", 
    metaField: "metadata", 
    granularity: "minutes" 
  }, 
  expireAfterSeconds: 604800   
  }
)
{ ok: 1 }

The name of the collection is stockPrice1week and the only required parameter is timeField. The other parameters are optional.

timeField: the name of the field where the date is stored. This will be automatically indexed and used for retrieving data.

metaField: the field containing the metadata. It can be a simple scalar value or a more complex JSON object. It’s optional. It cannot be the _id or the same as the timeField. For example, the metadata for a temperature sensor could be the code of the sensor, the type, the location, and so on.

granularity: possible values are seconds, minutes, and hours. If not set, it defaults to seconds. If you specify the closest match between two consecutive values this will help MongoDB to store data more efficiently and improve the query performance.

expireAfterSeconds: you can automatically delete documents after the specified time, the same as TTL index. If not specified the documents will not expire.

Let’s insert some random data for three stocks: Apple, Orange, and Banana. Data is collected once per minute.

[direct: mongos] timeseries> var stockPriceDate = ISODate("2021-10-13T00:00:00.000Z")

[direct: mongos] timeseries> var priceApple = 100

[direct: mongos] timeseries> var priceOrange = 50

[direct: mongos] timeseries> var priceBanana = 80

[direct: mongos] timeseries> for (i = 1; i < 100000; i++) { 
  priceApple = priceApple + Math.random(); 
  priceOrange = priceOrange + Math.random(); 
  priceBanana = priceBanana + Math.random(); 
  db.stockPrice1week.insert({ "timestamp": stockPriceDate, "metadata": { "stockName": "Apple", "currency": "Dollar" }, "stockPrice": priceApple }); 
  db.stockPrice1week.insert({ "timestamp": stockPriceDate, "metadata": { "stockName": "Orange", "currency": "Dollar" }, "stockPrice": priceOrange }); 
  db.stockPrice1week.insert({ "timestamp": stockPriceDate, "metadata": { "stockName": "Banana", "currency": "Euro" }, "stockPrice": priceBanana }); 
  stockPriceDate = new Date(stockPriceDate.getTime() + 1000 * 60); 
}

We can query to check the inserted documents:

[direct: mongos] timeseries> db.stockPrice1week.find().limit(3)
[
  {
    _id: ObjectId("6166df318f32e5d3ed304fc5"),
    timestamp: ISODate("2021-10-13T00:00:00.000Z"),
    metadata: { stockName: 'Apple', currency: 'Dollar' },
    stockPrice: 100.6547271930824
  }, 
  {
    _id: ObjectId("6166df318f32e5d3ed304fc6"),
    timestamp: ISODate("2021-10-13T00:00:00.000Z"),
    metadata: { stockName: 'Orange', currency: 'Dollar' },
    stockPrice: 50.51709117468818
  },  
  {
    _id: ObjectId("6166df318f32e5d3ed304fc7"),
    timestamp: ISODate("2021-10-13T00:00:00.000Z"),
    metadata: { stockName: 'Banana', currency: 'Euro' },
    stockPrice: 80.17611551979255
  }
]

Check the Collection Size

Now, let’s create a regular collection having the same exact data.

[direct: mongos] timeseries> db.stockPrice1week.find().forEach(function (doc) {
  db.stockPrice1week_regular.insertOne(doc);
})


Let’s check the total size of the two collections.

[direct: mongos] timeseries> db.stockPrice1week.stats().totalSize
5357568
[direct: mongos] timeseries> db.stockPrice1week_regular.stats().totalSize
21934080

As expected, the Time Series collection is four times smaller than the regular one. Also, consider the regular collection doesn’t have any secondary index at the moment.

Query the Collections

Let’s run a simple query to find out the stock values for a specific timestamp. We test the query on both collections.

[direct: mongos] timeseries> db.stockPrice1week.find( { "timestamp": ISODate("2021-10-23T12:00:00.000Z") } )
[
  { 
    _id: ObjectId("6166dfc68f32e5d3ed3100f5"),
    timestamp: ISODate("2021-10-23T12:00:00.000Z"),
    metadata: { stockName: 'Apple', currency: 'Dollar' },
    stockPrice: 7636.864548363888
  },
  {
    _id: ObjectId("6166dfc68f32e5d3ed3100f6"),
    timestamp: ISODate("2021-10-23T12:00:00.000Z"),
    metadata: { stockName: 'Orange', currency: 'Dollar' },
    stockPrice: 7607.03756525094
  },
  {
    _id: ObjectId("6166dfc68f32e5d3ed3100f7"),
    timestamp: ISODate("2021-10-23T12:00:00.000Z"),
    metadata: { stockName: 'Banana', currency: 'Euro' },
    stockPrice: 7614.360031277444  
  }
]
[direct: mongos] timeseries> db.stockPrice1week_regular.find( { "timestamp": ISODate("2021-10-23T12:00:00.000Z") } )
[
  {
    _id: ObjectId("6166dfc68f32e5d3ed3100f5"),
    timestamp: ISODate("2021-10-23T12:00:00.000Z"),
    metadata: { stockName: 'Apple', currency: 'Dollar' },
    stockPrice: 7636.864548363888
  }, 
  {
    _id: ObjectId("6166dfc68f32e5d3ed3100f6"),
    timestamp: ISODate("2021-10-23T12:00:00.000Z"),
    metadata: { stockName: 'Orange', currency: 'Dollar' },
    stockPrice: 7607.03756525094
  },
  {
    _id: ObjectId("6166dfc68f32e5d3ed3100f7"),
    timestamp: ISODate("2021-10-23T12:00:00.000Z"),
    metadata: { stockName: 'Banana', currency: 'Euro' },
    stockPrice: 7614.360031277444
  }
]

We’ve got the same result, but what is important here is looking at the explain() to see the execution plan. Here is the explain() of the regular collection.

[direct: mongos] timeseries> db.stockPrice1week_regular.find( { "timestamp": ISODate("2021-10-23T12:00:00.000Z") } ).explain("executionStats")
{
...
winningPlan: {
  stage: 'COLLSCAN',
  filter: {
    timestamp: { '$eq': ISODate("2021-10-23T12:00:00.000Z") }
  },
  direction: 'forward'
...
...
executionSuccess: true,
nReturned: 3,
executionTimeMillis: 200,
totalKeysExamined: 0,
totalDocsExamined: 299997,
...
...

We didn’t create any secondary index, so the winning plan is a COLLSCAN, all documents must be examined. The query takes 200 milliseconds.

The following is the explain() of the Time Series collection instead.

[direct: mongos] timeseries> db.stockPrice1week.find( { "timestamp": ISODate("2021-10-23T12:00:00.000Z") } ).explain("executionStats")
{
...
...
executionStats: {
  executionSuccess: true,
  nReturned: 3,
  executionTimeMillis: 2,
  totalKeysExamined: 0,
  totalDocsExamined: 8,
  executionStages: {
  stage: 'COLLSCAN',
    filter: {
      '$and': [
        {
          _id: { '$lte': ObjectId("6173f940ffffffffffffffff") }
        },
        {
          _id: { '$gte': ObjectId("6172a7c00000000000000000") }
        },
      {
      'control.max.timestamp': {
        '$_internalExprGte': ISODate("2021-10-23T12:00:00.000Z")
      }
    },
    {
      'control.min.timestamp': {
        '$_internalExprLte': ISODate("2021-10-23T12:00:00.000Z")
      }
    }
  ]
},
...
...

Surprisingly it is a COLLSCAN, but with different numbers. The number of documents examined is now only eight and execution time is two milliseconds.

As already mentioned, the Time Series is a non-materialized view. It works as an abstraction layer. The actual data is stored into another system collection (system.buckets.stockPrice1week) where documents are saved in a slightly different format. It’s not the goal of this article to dig into the internals, just keep in mind the different storage format permits mongod to fetch only a few buckets of data instead of reading everything, even if it is flagged as a COLLSCAN. That’s amazing.

What Happens if I Create an Index on the Regular Collection?

Let’s try.

[direct: mongos] timeseries> db.stockPrice1week_regular.createIndex( { "timestamp": 1 } )
timestamp_1
[direct: mongos] timeseries> db.stockPrice1week_regular.getIndexes()
[
  { v: 2, key: { _id: 1 }, name: '_id_' },
  { v: 2, key: { timestamp: 1 }, name: 'timestamp_1' }
]
[direct: mongos] timeseries> db.stockPrice1week_regular.find({"timestamp": ISODate("2021-10-23T12:00:00.000Z")}).explain("executionStats")
{
...
...
winningPlan: {
  stage: 'FETCH',
  inputStage: {
  stage: 'IXSCAN',
  keyPattern: { timestamp: 1 },
  indexName: 'timestamp_1',
...
...
executionStats: {
  nReturned: 3,
  executionTimeMillis: 2,
  totalKeysExamined: 3,
  totalDocsExamined: 3,
...

Now the winning plan is an IXSCAN, the new index is used. Only three keys examined, three docs examined, and three docs returned. The query takes two milliseconds.

So, it is as fast as the Time Series collection. There is not such a big difference; the order of magnitude is the same.

Also notice the same performance comes at the cost of having a larger collection at the end because we have created a secondary index.

[direct: mongos] timeseries> db.stockPrice1week_regular.stats().totalSize
25251840
[direct: mongos] timeseries> db.stockPrice1week.stats().totalSize
5357568

For getting a comparable execution time, now the regular collection is five times larger than the Time Series.

A Query with a Time Range Filter

Let’s test a different query looking for a range of timestamps. The following are the explain() outputs.

[direct: mongos] timeseries> db.stockPrice1week_regular.find( { "timestamp": { $gte: ISODate("2021-10-20T00:00:00Z"), $lt: ISODate("2021-10-20T23:59:59Z") } } ).explain("executionStats")
{
...
winningPlan: {
  stage: 'FETCH',
  inputStage: {
    stage: 'IXSCAN',
    keyPattern: { timestamp: 1 },
...
executionStats: {
  nReturned: 4320,
  executionTimeMillis: 7,
  totalKeysExamined: 4320,
  totalDocsExamined: 4320,
...

 

[direct: mongos] timeseries> db.stockPrice1week.find( { "timestamp": { $gte: ISODate("2021-10-20T00:00:00Z"), $lt: ISODate("2021-10-20T23:59:59Z") } } ).explain("executionStats")
{
...
...
winningPlan: {
  stage: 'COLLSCAN',
  filter: {
    '$and': [
    {
      _id: { '$lt': ObjectId("6170ad7f0000000000000000") }
    },
    {
      _id: { '$gte': ObjectId("616e0a800000000000000000") }
    },
    {
      'control.max.timestamp': {
        '$_internalExprGte': ISODate("2021-10-20T00:00:00.000Z")
      }
    },
    {
      'control.min.timestamp': {
        '$_internalExprLt': ISODate("2021-10-20T23:59:59.000Z")
      }
    }
  ]
},
...
...
executionStats: {
  executionSuccess: true,
  nReturned: 6,
  executionTimeMillis: 6,
  totalKeysExamined: 0,
  totalDocsExamined: 11,
...

The same as before. The execution time is basically the same for both queries. The main problem remains the size of the regular collection that is significantly larger.

Only six documents are apparently returned by the Time Series, but it’s not. If you execute the query for real you’ll get 4320 documents. The six documents mentioned by explain() refer to the documents that must be returned by the real collection below the non-materialized view.

Aggregation Test

On our Time Series data, we would like to do some aggregation. This is a typical task: calculate averages over a period, find min and max values, and other kinds of statistics.

Let’s suppose we need to calculate the average stock price on a daily basis. We can use the following aggregation pipeline for example:

db.stockPrice1week.aggregate([
{
  $project: {
    date: {
      $dateToParts: { date: "$timestamp" }
    },
    stockPrice: 1
  }
},
{
  $group: {
    _id: {
      date: {
        year: "$date.year",
        month: "$date.month",
        day: "$date.day"
      }
    },
    avgPrice: { $avg: "$stockPrice" }
  }
}
])
[
{
_id: { date: { year: 2021, month: 12, day: 4 } },
avgPrice: 37939.782043249594
},
{
_id: { date: { year: 2021, month: 11, day: 22 } },
avgPrice: 29289.700949196136
},
{
_id: { date: { year: 2021, month: 10, day: 27 } },
avgPrice: 10531.347070537977
},
...
...

As usual, let’s have a look at the explain() of the aggregate against the two collections, just focusing on execution time and documents examined.

[direct: mongos] timeseries> db.stockPrice1week.explain("executionStats").aggregate([ { $project: { date: { $dateToParts: { date: "$timestamp" } }, stockPrice: 1 } }, { $group: { _id: { date: { year: "$date.year", month: "$date.month", day: "$date.day" } }, avgPrice: { $avg: "$stockPrice" } } }])
{
...
executionStats: {
  executionSuccess: true,
  nReturned: 300,
  executionTimeMillis: 615,
  totalKeysExamined: 0,
  totalDocsExamined: 300,
  executionStages: {
  stage: 'COLLSCAN',
...

[direct: mongos] timeseries> db.stockPrice1week_regular.explain("executionStats").aggregate([ { $project: { date: { $dateToParts: { date: "$timestamp" } }, stockPrice: 1 } }, { $group: { _id: { date: { year: "$date.year", month: "$date.month", day: "$date.day" } }, avgPrice: { $avg: "$stockPrice" } } }])
{
...
executionStats: {
  executionSuccess: true,
  nReturned: 299997,
  executionTimeMillis: 1022,
  totalKeysExamined: 0,
  totalDocsExamined: 299997,
  executionStages: {
    stage: 'PROJECTION_DEFAULT',
...

The aggregation pipeline runs 40 percent faster with the Time Series collection. This should be more relevant the larger the collection is.

Conclusion

MongoDB 5.0 is an interesting new version of the most popular document-based database, and new features like Time Series collections and resharding are amazing.

Anyway, due to many core changes to WiredTiger and the core server introduced to facilitate new features, MongoDB 5.0.x is still unstable. We do not recommend using it for production environments.

Check the documentation of Percona Server for MongoDB 5.0.3-2 (Release Candidate).

Complete the 2021 Percona Open Source Data Management Software Survey

Have Your Say!

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com