SlideShare a Scribd company logo
1 of 53
VoltDB: Shard it! 
By Vitalii Torshyn
VoltDB Designed for 
● Network Activity Monitoring / Security 
● Real-Time Analytics/Monitoring 
● Telecom: billing, QoS, Policy 
Management 
● Financial Services 
● Gaming
Agenda 
#1: Academic issues: Shard, HP, VP 
#2: What is Volt DB? Why ! VoltDB? 
#3: Real VoltDB application 
#4: Tips and Tweaks: you are not 
supposed to do that at all
Agenda 
#1: Academic issues: Shard, HP, VP 
#2: What is Volt DB? Why ! Volt DB? 
#3: Simple Volt DB application 
#4: Tips and Tweaks: you are not 
supposed to do that at all
Academic issues 
What is: 
● Shard, Horizontal Partitioning 
● ACID complaint DBMS 
● In-memory and real time DB
Academic issues 
What is: 
● Shard, Horizontal Partitioning 
● ACID compliant DBMS 
● In-memory and real time DB
Straight forward approach
What is Horizontal 
Partitioning
What is shard
Use over time for shard
Academic issues 
What is: 
● Shard, Horizontal Partitioning 
● ACID compliant DBMS 
● In-memory and real time DB
ACID 
● Atomicity 
● Consistency 
● Isolation 
● Durability
Academic issues 
What is: 
● Shard, Horizontal Partitioning 
● ACID compliant DBMS 
● In-memory and real time database
In-memory/real time 
database 
● Storage is option, not requirement 
● Key value? No! 
● Data access is cheap (no I/O) 
● Real time processing
Agenda 
#1: Academic issues: Shard,HP,VP 
#2: What is Volt DB? Why?! Volt DB? 
#3: Simple Volt DB application 
#4: Tips and Tweaks: you are not 
supposed to do that at all
db-engines.com: Ranking
What is VoltDB? 
●ACID compliant DBMS 
●In-memory database 
●Real time 
●Shared nothing architecture (SN) 
●SQL support 
●Java Stored procedures
Java over JNI 
SP, Query Prepare, 
Transfer 
C++ Engine: 
Indexing, 
Lookup, Mem. 
Management ...
Why Volt DB? 
● Low cost of scaling 
● Low latency 
● Automatic Cross-partition joins (no app. 
Code) 
●Multi-master replication (HA, K-Safety) 
●No buffer management (In memory) 
● Lockless 
● Licensing (GPLv3, Enterprise) 
●Client libraries: Java, Python, C++, C#...
Requests execution
Access and Networking 
●RESTful HTTP/JSON API 
● Socket connections 
● Java API 
● JDBC
Is VoltDB fast enough? 
● Sharding 
●High Speed Small transactions 
●No journaling required 
● Buffering is not required
Replication: K-Safety = 1
Replication: K-Safety = 1
Replication: Active-Passive
K-Factor: performance
Volt DB tools 
● csvloader — can load data from CSV 
file 
● exporttofile — exports to CSV/TSV file 
● sqlcmd — mysql like client 
● voltadmin - administrative functions 
● voltdb — catalog (DB) management 
and server
Questions?
Volt DB: Super Chat
Agenda 
#1: Academic issues: Shard,HP,VP 
#2: What is Volt DB? Why?! Volt DB? 
#3: Simple Volt DB application(Super Chat) 
#4: Tips and Tweaks: you are not 
supposed to do that at all
Super Chat: flow
DB Schema file 
1: CREATE TABLE messages ( 
uid BIGINT NOT NULL, 
nick VARCHAR(64) NOT NULL, 
ip VARCHAR(16) NOT NULL, 
text VARCHAR(1024) 
);
DB Schema file 
1: CREATE TABLE messages ( 
uid BIGINT NOT NULL, 
nick VARCHAR(64) NOT NULL, 
ip VARCHAR(16) NOT NULL, 
text VARCHAR(1024) 
); 
2: CREATE INDEX messages_idx ON messages (nick, ip);
DB Schema file 
1: CREATE TABLE messages ( 
uid BIGINT NOT NULL, 
nick VARCHAR(64) NOT NULL, 
ip VARCHAR(16) NOT NULL, 
text VARCHAR(1024) 
); 
2: CREATE INDEX messages_idx ON messages (nick, ip); 
3: PARTITION TABLE messages ON COLUMN nick;
DB Schema file 
1: CREATE TABLE messages ( 
uid BIGINT NOT NULL, 
nick VARCHAR(64) NOT NULL, 
ip VARCHAR(16) NOT NULL, 
text VARCHAR(1024) 
); 
2: CREATE INDEX messages_idx ON messages (nick, ip); 
3: PARTITION TABLE messages ON COLUMN nick; 
4: CREATE PROCEDURE FROM CLASS vposter.procedures.AddMessage;
DB Schema file 
1: CREATE TABLE messages ( 
uid BIGINT NOT NULL, 
nick VARCHAR(64) NOT NULL, 
ip VARCHAR(16) NOT NULL, 
text VARCHAR(1024) 
); 
2: CREATE INDEX messages_idx ON messages (nick, ip); 
3: PARTITION TABLE messages ON COLUMN nick; 
4: CREATE PROCEDURE FROM CLASS vposter.procedures.AddMessage; 
5: PARTITION PROCEDURE AddMessage ON TABLE messages COLUMN 
nick;
DB Schema file 
1: CREATE TABLE messages ( 
uid BIGINT NOT NULL, 
nick VARCHAR(64) NOT NULL, 
ip VARCHAR(16) NOT NULL, 
text VARCHAR(1024) 
); 
2: CREATE INDEX messages_idx ON messages (nick, ip); 
3: PARTITION TABLE messages ON COLUMN nick; 
4: CREATE PROCEDURE FROM CLASS vposter.procedures.AddMessage; 
5: PARTITION PROCEDURE AddMessage ON TABLE messages COLUMN 
nick;
Simple Java Procedure
Putting All Together 
sh $ javac -cp "$CLASS_PATH:/opt/voltdb-3.7/voltdb/*" 
java/vposter/procedures/AddMessage.java 
sh$ voltdb compile --classpath=./java/ -o voltdb-catalog.jar 
/path/to/schema/schema-ddl.sql 
# Finaly, run the server 
sh$ voltdb create catalog voltdb-catalog.jar
Questions?
Agenda 
#1: Academic issues: Shard,HP,VP 
#2: What is Volt DB? Why?! Volt DB? 
#3: Simple Volt DB application(Super Chat) 
#4: Tips and Tweaks: you are not 
supposed to do that at all
Tips and Tweaks 
● Java Stored procedures 
● Schema file: restrictions and syntax 
● Client code vs Server code 
● TPS: Performance Testing 
● Deployment configuration
Java Stored procedures 
● Minimize hard math. calculations, I.e. let's 
client do what it needs 
● Minimize SQL queue, i.e. usage of 
lists/arrays as parameters is real 
optimization 
● Do not return huge chunk of data 
● To Throw or Not To Throw 
● Use statuses (application and response)
Schema file: restrictions and 
syntax 
● Use comments 
● Renaming columns/tables in DDL 
● Constraint LIMIT PARTITION ROWS 
● Standard constraints 
● Views as mechanism of aggregation
Client code vs Server code 
● Let server aggregate data, let client 
process data 
● Table-Of-Tables 
● Optimize Insertions 
● Why SELECT * requests are 
dangerous?
TPS: Performance Testing 
● @STATISTICS usage 
● @EXPLAIN[PROC] usage 
● @SystemInformation
Questions?
References 
l http://odbms.org/download/VoltDBTechnicalOverview.pdf 
l http://www.mysqlperformanceblog.com/2011/02/28/is-voltdb-really-as-scalable-as-they-claim/ 
l http://voltdb.com 
l http://techledger.wordpress.com/2011/07/08/voltdb-faq/ 
l http://highscalability.com/blog/2010/6/28/voltdb-decapitates-six-sql-urban-myths-and-delivers-internet.html 
l http://www.perfdynamics.com/Manifesto/USLscalability.html#tth_sEc1 
l git@github.com:vtorshyn/voltdb-shardit-src.git

More Related Content

Viewers also liked

Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Yuriy Senko
 
JavaScript in Mobile Development
JavaScript in Mobile DevelopmentJavaScript in Mobile Development
JavaScript in Mobile DevelopmentDima Maleev
 
From Pilot to Product - Morning@Lohika
From Pilot to Product - Morning@LohikaFrom Pilot to Product - Morning@Lohika
From Pilot to Product - Morning@LohikaIvan Verhun
 
Big data analysis in java world
Big data analysis in java worldBig data analysis in java world
Big data analysis in java worldSerg Masyutin
 
Tweaking performance on high-load projects
Tweaking performance on high-load projectsTweaking performance on high-load projects
Tweaking performance on high-load projectsDmitriy Dumanskiy
 
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчикХитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчикNick Grachov
 
Introduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkIntroduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkTaras Matyashovsky
 
VoltDB : A Technical Overview
VoltDB : A Technical OverviewVoltDB : A Technical Overview
VoltDB : A Technical OverviewTim Callaghan
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Oleksiy Panchenko
 
Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practiceMikalai Alimenkou
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 

Viewers also liked (15)

Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)
 
JavaScript in Mobile Development
JavaScript in Mobile DevelopmentJavaScript in Mobile Development
JavaScript in Mobile Development
 
From Pilot to Product - Morning@Lohika
From Pilot to Product - Morning@LohikaFrom Pilot to Product - Morning@Lohika
From Pilot to Product - Morning@Lohika
 
Creation of ideas
Creation of ideasCreation of ideas
Creation of ideas
 
Big data analysis in java world
Big data analysis in java worldBig data analysis in java world
Big data analysis in java world
 
Take a REST!
Take a REST!Take a REST!
Take a REST!
 
Tweaking performance on high-load projects
Tweaking performance on high-load projectsTweaking performance on high-load projects
Tweaking performance on high-load projects
 
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчикХитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
 
Boot in Production
Boot in ProductionBoot in Production
Boot in Production
 
Introduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkIntroduction to real time big data with Apache Spark
Introduction to real time big data with Apache Spark
 
Morning at Lohika
Morning at LohikaMorning at Lohika
Morning at Lohika
 
VoltDB : A Technical Overview
VoltDB : A Technical OverviewVoltDB : A Technical Overview
VoltDB : A Technical Overview
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
 
Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practice
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 

Similar to Voltdb: Shard It by V. Torshyn

PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)Ontico
 
Circonus: Design failures - A Case Study
Circonus: Design failures - A Case StudyCirconus: Design failures - A Case Study
Circonus: Design failures - A Case StudyHeinrich Hartmann
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performancerudib
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPressTaylor Lovett
 
EEDC 2010. Scaling Web Applications
EEDC 2010. Scaling Web ApplicationsEEDC 2010. Scaling Web Applications
EEDC 2010. Scaling Web ApplicationsExpertos en TI
 
Creating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at ScaleCreating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at ScaleSean Chittenden
 
Strategies for Context Data Persistence
Strategies for Context Data PersistenceStrategies for Context Data Persistence
Strategies for Context Data PersistenceFIWARE
 
Building production websites with Node.js on the Microsoft stack
Building production websites with Node.js on the Microsoft stackBuilding production websites with Node.js on the Microsoft stack
Building production websites with Node.js on the Microsoft stackCellarTracker
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a bossFrancisco Ribeiro
 
Tackle Containerization Advisor (TCA) for Legacy Applications
Tackle Containerization Advisor (TCA) for Legacy ApplicationsTackle Containerization Advisor (TCA) for Legacy Applications
Tackle Containerization Advisor (TCA) for Legacy ApplicationsKonveyor Community
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
Keep Calm And Serilog Elasticsearch Kibana on .NET Core
Keep Calm And Serilog Elasticsearch Kibana on .NET CoreKeep Calm And Serilog Elasticsearch Kibana on .NET Core
Keep Calm And Serilog Elasticsearch Kibana on .NET CoreMaciej Szymczyk
 
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourWAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourSoroush Dalili
 
Database Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big DataDatabase Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big Dataexponential-inc
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangDatabricks
 
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at DatabricksLessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at DatabricksDatabricks
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics HeroTechWell
 
Data Handning with Sqlite for Android
Data Handning with Sqlite for AndroidData Handning with Sqlite for Android
Data Handning with Sqlite for AndroidJakir Hossain
 

Similar to Voltdb: Shard It by V. Torshyn (20)

PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
PostgreSQL - масштабирование в моде, Valentine Gogichashvili (Zalando SE)
 
Circonus: Design failures - A Case Study
Circonus: Design failures - A Case StudyCirconus: Design failures - A Case Study
Circonus: Design failures - A Case Study
 
ASP.NET MVC Performance
ASP.NET MVC PerformanceASP.NET MVC Performance
ASP.NET MVC Performance
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPress
 
EEDC 2010. Scaling Web Applications
EEDC 2010. Scaling Web ApplicationsEEDC 2010. Scaling Web Applications
EEDC 2010. Scaling Web Applications
 
Creating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at ScaleCreating PostgreSQL-as-a-Service at Scale
Creating PostgreSQL-as-a-Service at Scale
 
In-memory Databases
In-memory DatabasesIn-memory Databases
In-memory Databases
 
Strategies for Context Data Persistence
Strategies for Context Data PersistenceStrategies for Context Data Persistence
Strategies for Context Data Persistence
 
Building production websites with Node.js on the Microsoft stack
Building production websites with Node.js on the Microsoft stackBuilding production websites with Node.js on the Microsoft stack
Building production websites with Node.js on the Microsoft stack
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a boss
 
Tackle Containerization Advisor (TCA) for Legacy Applications
Tackle Containerization Advisor (TCA) for Legacy ApplicationsTackle Containerization Advisor (TCA) for Legacy Applications
Tackle Containerization Advisor (TCA) for Legacy Applications
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
Keep Calm And Serilog Elasticsearch Kibana on .NET Core
Keep Calm And Serilog Elasticsearch Kibana on .NET CoreKeep Calm And Serilog Elasticsearch Kibana on .NET Core
Keep Calm And Serilog Elasticsearch Kibana on .NET Core
 
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourWAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
 
Database Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big DataDatabase Virtualization: The Next Wave of Big Data
Database Virtualization: The Next Wave of Big Data
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
 
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at DatabricksLessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics Hero
 
Data Handning with Sqlite for Android
Data Handning with Sqlite for AndroidData Handning with Sqlite for Android
Data Handning with Sqlite for Android
 

Recently uploaded

Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...gajnagarg
 
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...nirzagarg
 
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...nirzagarg
 
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...HyderabadDolls
 
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24  Building Real-Time Pipelines With FLaNKDATA SUMMIT 24  Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNKTimothy Spann
 
Aspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraAspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraGovindSinghDasila
 
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样wsppdmt
 
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...Health
 
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptxRESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptxronsairoathenadugay
 
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...gragchanchal546
 
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...kumargunjan9515
 
Dubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls DubaiDubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls Dubaikojalkojal131
 
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Klinik kandungan
 
Vadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Vadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book nowVadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Vadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book nowgargpaaro
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Researchmichael115558
 
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...Bertram Ludäscher
 
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...nirzagarg
 
20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdf20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdfkhraisr
 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...gajnagarg
 

Recently uploaded (20)

Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
 
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
 
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Purnia [ 7014168258 ] Call Me For Genuine Models We...
 
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | ₹,9500 Pay Cash 8005736733 Free Home...
 
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24  Building Real-Time Pipelines With FLaNKDATA SUMMIT 24  Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
 
Aspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - AlmoraAspirational Block Program Block Syaldey District - Almora
Aspirational Block Program Block Syaldey District - Almora
 
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
 
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
 
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptxRESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
RESEARCH-FINAL-DEFENSE-PPT-TEMPLATE.pptx
 
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
Gulbai Tekra * Cheap Call Girls In Ahmedabad Phone No 8005736733 Elite Escort...
 
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...Fun all Day Call Girls in Jaipur   9332606886  High Profile Call Girls You Ca...
Fun all Day Call Girls in Jaipur 9332606886 High Profile Call Girls You Ca...
 
Dubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls DubaiDubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls Dubai
 
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
 
Vadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Vadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book nowVadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book now
Vadodara 💋 Call Girl 7737669865 Call Girls in Vadodara Escort service book now
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
 
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
Top profile Call Girls In Bihar Sharif [ 7014168258 ] Call Me For Genuine Mod...
 
20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdf20240412-SmartCityIndex-2024-Full-Report.pdf
20240412-SmartCityIndex-2024-Full-Report.pdf
 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
 

Voltdb: Shard It by V. Torshyn

  • 1. VoltDB: Shard it! By Vitalii Torshyn
  • 2. VoltDB Designed for ● Network Activity Monitoring / Security ● Real-Time Analytics/Monitoring ● Telecom: billing, QoS, Policy Management ● Financial Services ● Gaming
  • 3. Agenda #1: Academic issues: Shard, HP, VP #2: What is Volt DB? Why ! VoltDB? #3: Real VoltDB application #4: Tips and Tweaks: you are not supposed to do that at all
  • 4. Agenda #1: Academic issues: Shard, HP, VP #2: What is Volt DB? Why ! Volt DB? #3: Simple Volt DB application #4: Tips and Tweaks: you are not supposed to do that at all
  • 5. Academic issues What is: ● Shard, Horizontal Partitioning ● ACID complaint DBMS ● In-memory and real time DB
  • 6. Academic issues What is: ● Shard, Horizontal Partitioning ● ACID compliant DBMS ● In-memory and real time DB
  • 7.
  • 8.
  • 10. What is Horizontal Partitioning
  • 12. Use over time for shard
  • 13. Academic issues What is: ● Shard, Horizontal Partitioning ● ACID compliant DBMS ● In-memory and real time DB
  • 14. ACID ● Atomicity ● Consistency ● Isolation ● Durability
  • 15. Academic issues What is: ● Shard, Horizontal Partitioning ● ACID compliant DBMS ● In-memory and real time database
  • 16. In-memory/real time database ● Storage is option, not requirement ● Key value? No! ● Data access is cheap (no I/O) ● Real time processing
  • 17. Agenda #1: Academic issues: Shard,HP,VP #2: What is Volt DB? Why?! Volt DB? #3: Simple Volt DB application #4: Tips and Tweaks: you are not supposed to do that at all
  • 19. What is VoltDB? ●ACID compliant DBMS ●In-memory database ●Real time ●Shared nothing architecture (SN) ●SQL support ●Java Stored procedures
  • 20. Java over JNI SP, Query Prepare, Transfer C++ Engine: Indexing, Lookup, Mem. Management ...
  • 21. Why Volt DB? ● Low cost of scaling ● Low latency ● Automatic Cross-partition joins (no app. Code) ●Multi-master replication (HA, K-Safety) ●No buffer management (In memory) ● Lockless ● Licensing (GPLv3, Enterprise) ●Client libraries: Java, Python, C++, C#...
  • 23. Access and Networking ●RESTful HTTP/JSON API ● Socket connections ● Java API ● JDBC
  • 24. Is VoltDB fast enough? ● Sharding ●High Speed Small transactions ●No journaling required ● Buffering is not required
  • 25.
  • 26.
  • 28.
  • 32. Volt DB tools ● csvloader — can load data from CSV file ● exporttofile — exports to CSV/TSV file ● sqlcmd — mysql like client ● voltadmin - administrative functions ● voltdb — catalog (DB) management and server
  • 35. Agenda #1: Academic issues: Shard,HP,VP #2: What is Volt DB? Why?! Volt DB? #3: Simple Volt DB application(Super Chat) #4: Tips and Tweaks: you are not supposed to do that at all
  • 37. DB Schema file 1: CREATE TABLE messages ( uid BIGINT NOT NULL, nick VARCHAR(64) NOT NULL, ip VARCHAR(16) NOT NULL, text VARCHAR(1024) );
  • 38. DB Schema file 1: CREATE TABLE messages ( uid BIGINT NOT NULL, nick VARCHAR(64) NOT NULL, ip VARCHAR(16) NOT NULL, text VARCHAR(1024) ); 2: CREATE INDEX messages_idx ON messages (nick, ip);
  • 39. DB Schema file 1: CREATE TABLE messages ( uid BIGINT NOT NULL, nick VARCHAR(64) NOT NULL, ip VARCHAR(16) NOT NULL, text VARCHAR(1024) ); 2: CREATE INDEX messages_idx ON messages (nick, ip); 3: PARTITION TABLE messages ON COLUMN nick;
  • 40. DB Schema file 1: CREATE TABLE messages ( uid BIGINT NOT NULL, nick VARCHAR(64) NOT NULL, ip VARCHAR(16) NOT NULL, text VARCHAR(1024) ); 2: CREATE INDEX messages_idx ON messages (nick, ip); 3: PARTITION TABLE messages ON COLUMN nick; 4: CREATE PROCEDURE FROM CLASS vposter.procedures.AddMessage;
  • 41. DB Schema file 1: CREATE TABLE messages ( uid BIGINT NOT NULL, nick VARCHAR(64) NOT NULL, ip VARCHAR(16) NOT NULL, text VARCHAR(1024) ); 2: CREATE INDEX messages_idx ON messages (nick, ip); 3: PARTITION TABLE messages ON COLUMN nick; 4: CREATE PROCEDURE FROM CLASS vposter.procedures.AddMessage; 5: PARTITION PROCEDURE AddMessage ON TABLE messages COLUMN nick;
  • 42. DB Schema file 1: CREATE TABLE messages ( uid BIGINT NOT NULL, nick VARCHAR(64) NOT NULL, ip VARCHAR(16) NOT NULL, text VARCHAR(1024) ); 2: CREATE INDEX messages_idx ON messages (nick, ip); 3: PARTITION TABLE messages ON COLUMN nick; 4: CREATE PROCEDURE FROM CLASS vposter.procedures.AddMessage; 5: PARTITION PROCEDURE AddMessage ON TABLE messages COLUMN nick;
  • 44. Putting All Together sh $ javac -cp "$CLASS_PATH:/opt/voltdb-3.7/voltdb/*" java/vposter/procedures/AddMessage.java sh$ voltdb compile --classpath=./java/ -o voltdb-catalog.jar /path/to/schema/schema-ddl.sql # Finaly, run the server sh$ voltdb create catalog voltdb-catalog.jar
  • 46. Agenda #1: Academic issues: Shard,HP,VP #2: What is Volt DB? Why?! Volt DB? #3: Simple Volt DB application(Super Chat) #4: Tips and Tweaks: you are not supposed to do that at all
  • 47. Tips and Tweaks ● Java Stored procedures ● Schema file: restrictions and syntax ● Client code vs Server code ● TPS: Performance Testing ● Deployment configuration
  • 48. Java Stored procedures ● Minimize hard math. calculations, I.e. let's client do what it needs ● Minimize SQL queue, i.e. usage of lists/arrays as parameters is real optimization ● Do not return huge chunk of data ● To Throw or Not To Throw ● Use statuses (application and response)
  • 49. Schema file: restrictions and syntax ● Use comments ● Renaming columns/tables in DDL ● Constraint LIMIT PARTITION ROWS ● Standard constraints ● Views as mechanism of aggregation
  • 50. Client code vs Server code ● Let server aggregate data, let client process data ● Table-Of-Tables ● Optimize Insertions ● Why SELECT * requests are dangerous?
  • 51. TPS: Performance Testing ● @STATISTICS usage ● @EXPLAIN[PROC] usage ● @SystemInformation
  • 53. References l http://odbms.org/download/VoltDBTechnicalOverview.pdf l http://www.mysqlperformanceblog.com/2011/02/28/is-voltdb-really-as-scalable-as-they-claim/ l http://voltdb.com l http://techledger.wordpress.com/2011/07/08/voltdb-faq/ l http://highscalability.com/blog/2010/6/28/voltdb-decapitates-six-sql-urban-myths-and-delivers-internet.html l http://www.perfdynamics.com/Manifesto/USLscalability.html#tth_sEc1 l git@github.com:vtorshyn/voltdb-shardit-src.git

Editor's Notes

  1. Усім привіт! Дякую що знайшли час відвідати мою доповідь. Мене звати Віталій Торшин. Працюю на проекті openet, C/C++ розробником. Я розумію що ваш час дорогоцінний, тому давайте не будем гаяти його. Отже, доповідь стосується декількох аспектів розробки програмного забезпечення і від вас очікуються мінімальні, проте знання, архітектури та розробки ПЗ, для прикладу - клієнт сервер. Сьогодні ми не будемо глибоко занурюватись у теорію, проте ми розглянемо декілька ключових пов’язанних саме із базами данних (RDBMS).
  2. В дійсності, наша команда вже має успішний досвід використання voltdb на реальному проекті у галузі телеком. Одна із вимог щодо швидкодії під час розробки усієї системи була TPS > 250 000. Що нам і вдалось отримати навіть із кластером у одну ноду.
  3. Доповідь поділена на 4 розділи таким чином, щоб ми мали змогу пригадати, що таке Shard, HP,VP; Зрозуміти що це таке voltdb, і чому варто зупинитись на voltdb а не на Mongo чи MySQL; звичайно чи підійде voltdb для вашого проекту. У наступній частині ми розглянемо простий проте повністю робочий приклад роботи із voltdb на мові C++ із використанням клієнта С++. Остання частина присвячена різним хитростям та підводним каменям повязаним із використанням voltdb.
  4. Bla-bla Давайте розглянемо приклад із реального світу. Я звернувся за допомогою до торговців фруктами, зокрема яблуками Джамшута та Чіпко. Джамшут вже досить довго у цьому бізнесі, і він розуміється як позбавитись черги біля свого прилавку. Проте Чіпко, ярий противник нових методів продаж. Його не хвилюють черги біля прилавків. VP – row splitting. Виносять колонки навіть якщо таблиця нормалізована
  5. Отже на данному етапі можна скористатись нормалізацією, тобто піддати логічну модель данних процессу реструктуризації бази данних аби уникнути надлишковості. Форми нормалізації знаходяться поза топіком цієї доповіді, та і у мережі є досить багато інформації щодо усіх 6 форм. В основному ідея полягає у розділення інформації що знаходиться у рядку на окремі колонки (які можуть знаходитись як і у тій самій таблиці, так і у інших таблицях)
  6. Horizontal partitioning splits one or more tables by row, usually within a single instance of a schema and a database server. It may offer an advantage by reducing index size (and thus search effort) provided that there is some obvious, robust, implicit way to identify in which table a particular row will be found, without first needing to search the index, e.g., the classic example of the 'CustomersEast' and 'CustomersWest' tables, where their zip code already indicates where they will be found.
  7. Sharding goes beyond this: it partitions the problematic table(s) in the same way, but it does this across potentially multiple instances of the schema. The obvious advantage would be that search load for the large partitioned table can now be split across multiple servers (logical or physical), not just multiple indexes on the same logical server. Splitting shards across multiple isolated instances requires more than simple horizontal partitioning. The hoped-for gains in efficiency would be lost, if querying the database required both instances to be queried, just to retrieve a simple dimension table. Beyond partitioning, sharding thus splits large partitionable tables across the servers, while smaller tables are replicated as complete units.
  8. - Атомарність гарантує, що жодна транзакція не буде виконана частково. Будуть або виконані всі операції, що беруть участь у транзакції або не виконано жодної. - Відповідно до цієї вимоги, система повинна знаходитись в узгодженому, несуперечливому стані до початку дії транзакції і по її завершенню. При цьому вона може знаходитись у неузгодженому стані у процесі виконання транзакції, проте ця неузгодженість завдяки іншим властивостям - атомарності та ізольованості - не буде видимою за межами транзакції. -зольованість означає що ніякі проміжні зміни не будуть видимі за межами транзакції аж до її завершення -Довговічність гарантує, що незалежно від інших проблем після відновлення роботоздатності системи результати завершених транзакцій будуть збережені. Іншими словами, якщо користувач отримав повідомлення про успішне завершення транзакції, то він може бути впевнений, що дані будуть збережені і відновлені у випадку збоїв.
  9. Still, voltdb is not popular as MySQL or Oracle or even MongoDB. Creators is Michael Stonebraker. First release in 2010.
  10. Atomicity, Consistency, Isolation, Durability Фактично кожна нода (шард) є незалежним. Тобто, якщо ляжуть усі ноди окрім однієї – вона залишеться повністю функціональною. Звичайно немає жодних посилань на данні із однієї ноди до іншої, так само як із одного розділу до іншого.
  11. claims to be 100 times faster than MySQL, up to 13 times faster than Cassandra, and 45 times faster than Oracle, with near-linear scaling.
  12. Розподілене та серіалізоване виконання ріквестів. Фактично VoltDB не має вимог до обєму ОЗУ чи дискового простору – розробник має сам визначати ці цифри. Єдина вимога – кількість розділів на одному сервері має відповідати кількості фізичних ядер процесора. Серцем voltdb є високо оптимізований С++ код, який використовує JNI для виконання сторед процедур. Взагалі у волдб будь-яке виконання sql запиту (на з сторед процедури) автоматично є сторед процедурою, що робить автоматично транзакцією.
  13. Значення K-factor або k-safety у конфігурації voltdb фактично відповідає кількості копій розділів у кластері. Іншими словами це є множник кількості реплік, тобто для прикладу у нас є 4 розділи на шарді, і при значені k-safety=1 кількість розділів вже буде 8, при 2 – 12 і тд. Варто зазначити що використання значень більше а ніж 1 має бути обгрунтованим, так як у цьому випадку швидкодія буде суттєво нижчою.
  14. Значення K-factor або k-safety у конфігурації voltdb фактично відповідає кількості копій розділів у кластері. Іншими словами це є множник кількості реплік, тобто для прикладу у нас є 4 розділи на шарді, і при значені k-safety=1 кількість розділів вже буде 8, при 2 – 12 і тд. Варто зазначити що використання значень більше а ніж 1 має бути обгрунтованим, так як у цьому випадку швидкодія буде суттєво нижчою.
  15. K-factor 1 = nodecount = parts/2 K-factor 2 = nodecount = parts/3 USL – universal scalability law
  16. K-factor 1 = nodecount = parts/2 K-factor 2 = nodecount = parts/3 USL – universal scalability law