{"id":6962,"date":"2019-02-24T05:00:14","date_gmt":"2019-02-24T13:00:14","guid":{"rendered":"http:\/\/softwareengineeringdaily.com\/?p=6962"},"modified":"2019-02-23T18:54:28","modified_gmt":"2019-02-24T02:54:28","slug":"what-is-new-about-newsql","status":"publish","type":"post","link":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/","title":{"rendered":"What Is New About NewSQL?"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Most programmers are familiar with SQL and the relational database management systems, or RDBMSs, like MySQL or PostgreSQL. The basic principles for such architectures have been around for decades. Around 2000s came NoSQL solutions, like MongoDB or Cassandra, developed for distributed, scalable data needs. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">But, for the past few years, there has been a new kid on the block: NewSQL.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">NewSQL is a new approach to relational databases that wants to combine transactional <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/ACID_(computer_science)\"><span style=\"font-weight: 400;\">ACID <\/span><\/a><span style=\"font-weight: 400;\">(atomicity, consistency, isolation, durability) guarantees of good ol\u2019 RDBMSs and the horizontal scalability of NoSQL. It sounds like a perfect solution, the best of both worlds. What took it so long to arrive? <\/span><\/p>\n<p><a href=\"https:\/\/sqlserver-help.com\/2014\/05\/01\/\"><img fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"6964\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/acidproperties\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?fit=853%2C499&amp;ssl=1\" data-orig-size=\"853,499\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ACIDproperties\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?fit=300%2C175&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?fit=853%2C499&amp;ssl=1\" class=\"aligncenter wp-image-6964\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties-300x175.png?resize=499%2C292&#038;ssl=1\" alt=\"\" width=\"499\" height=\"292\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?resize=300%2C175&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?resize=768%2C449&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?resize=120%2C69&amp;ssl=1 120w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/ACIDproperties.png?w=853&amp;ssl=1 853w\" sizes=\"(max-width: 499px) 100vw, 499px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Databases were born out of a need to separate code from data in the mid-1960s. These first databases were designed with several considerations: <\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The number of users querying the database is limited.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The types of queries are unlimited &#8211; the developer can use any query they want. <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Hardware is quite expensive. <\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">In those days of developers entering interactive queries to a terminal, as the only users with access to the database, these considerations were relevant and valuable.<\/span><a href=\"https:\/\/db.cs.cmu.edu\/papers\/2016\/pavlo-newsql-sigmodrec2016.pdf\"><span style=\"font-weight: 400;\"> Correctness and consistency were the two important metrics, rather than today\u2019s metrics of performance and availability.<\/span><\/a><span style=\"font-weight: 400;\"> Vertical scaling was the solution to growing data needs, and downtime needed for the data to be moved in case of database migration or recovery was bearable. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fast forwarding a couple of decades, the requirements from databases in the Internet and cloud era are much more different. The scale of data is enormous, and commodity hardware is much cheaper compared to the 20th-century costs. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">As the scale of data grew and real-time interactions through Internet became widespread, basic needs from databases started to be divided into the two main categories of OLAP and OLTP, Online Analytical Processing and Online Transaction Processing, respectively. <\/span><\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Online_analytical_processing\"><span style=\"font-weight: 400;\">OLAP<\/span><\/a><span style=\"font-weight: 400;\"> databases are commonly known as data warehouses. They store a historical footprint for statistical analysis purposes in business intelligence operations. OLAP databases are thus focused on read-only workloads with ad-hoc queries for batch processing. The number of users querying the database is considerably low, as usually, only the employees of a company have access to the historical information. <\/span><\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Online_transaction_processing\"><span style=\"font-weight: 400;\">OLTP<\/span><\/a><span style=\"font-weight: 400;\"> databases correspond to the highly concurrent, transactional data processing, characterized by short-lived and pre-defined queries enacted by real-time users. Searches a regular user does on an e-commerce website and buying of items are basic examples of transactional processing. While the users access a smaller subset of the data when compared with OLAP users, the number of users are considerably higher and the queries can include both read and write operations. The important considerations in OLTP databases thus are high availability, concurrency, and performance. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For most websites, for any given time, there are hundreds or thousands of users effectively querying the database concurrently. With this scale in mind, the system needs to be highly available, as every minute of downtime can cost the bigger companies thousands or <\/span><a href=\"https:\/\/www.businessinsider.nl\/amazon-prime-day-website-issues-cost-it-millions-in-lost-sales-2018-7\/?international=true&amp;r=US\"><span style=\"font-weight: 400;\">even millions of dollars<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">On websites, the queries made by the users are pre-defined; the users do not have access to the terminal of the database to execute any query that they\u2019d like. The queries are buried in the application logic. This allows for optimizations towards high performance.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In the new database ecosystem where scalability is an important metric, and high availability is essential for making profits, NoSQL databases were offered as a solution for achieving easier scalability and better performance, opting for an AP design from the CAP theorem. However, this meant giving up strong consistency and the transactional ACID properties offered by RDMBSs in favor of <\/span><a href=\"https:\/\/www.allthingsdistributed.com\/2008\/12\/eventually_consistent.html\"><span style=\"font-weight: 400;\">eventual consistency<\/span><\/a><span style=\"font-weight: 400;\"> in most NoSQL designs. <\/span><\/p>\n<p><a href=\"https:\/\/jvns.ca\/blog\/2016\/11\/19\/a-critique-of-the-cap-theorem\/\"><img decoding=\"async\" data-attachment-id=\"6965\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/captheorem\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?fit=1652%2C1275&amp;ssl=1\" data-orig-size=\"1652,1275\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CAPtheorem\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?fit=300%2C232&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?fit=1024%2C790&amp;ssl=1\" class=\"aligncenter wp-image-6965\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem-300x232.png?resize=500%2C386&#038;ssl=1\" alt=\"\" width=\"500\" height=\"386\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?resize=300%2C232&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?resize=768%2C593&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?resize=1024%2C790&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/CAPtheorem.png?w=1652&amp;ssl=1 1652w\" sizes=\"(max-width: 500px) 100vw, 500px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">NoSQL databases use a different model than the relational, such as key-value, document, wide-column, or graph. With these models, NoSQL databases are not normalized, and are inherently schemaless by design. Most NoSQL databases support auto-sharding, allowing for easy horizontal scaling without developer intervention.<\/span><\/p>\n<p><a href=\"https:\/\/www.mongodb.com\/scale\/when-to-use-nosql-database\"><span style=\"font-weight: 400;\">NoSQL can be useful for applications<\/span><\/a><span style=\"font-weight: 400;\"> such as social media, where eventual consistency is acceptable &#8211; users do not notice if they see a non-consistent view of the database, and since the data involves status updates, tweets, etc. strong consistency is not essential. However, NoSQL databases are not easy to use for systems where consistency is critical, such as e-commerce platforms. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">NewSQL systems are born out of the desire to combine the scalability and high availability of NoSQL alongside the relational model, transaction support, and SQL of traditional RDBMSs. <\/span><a href=\"https:\/\/cs.brown.edu\/~ugur\/fits_all.pdf\"><span style=\"font-weight: 400;\">The one-size-fits-all solutions are at an end,<\/span><\/a><span style=\"font-weight: 400;\"> and specialized databases for different workloads like OLTP started to rise. Most NewSQL databases are born out of a complete redesign focused heavily on OLTP or hybrid workloads. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Traditional RDMBS architecture was not designed with a distributed system in mind. Rather, when the need arose, support for distributed designs was built as an afterthought on top of the original design. Due to their normalized structure, rather than the aggregated form of NoSQL, RDBMS had to introduce complicated concepts to both scale out and conserve its consistency requirements. Manual sharding \u00a0and master-slave architectures were developed to allow horizontal scaling. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, RDBMS loses much of its performance when scaling out, as joins become more costly with moving data between different nodes for aggregation, and maintenance overhead became time consuming. To preserve the performance, complex systems and products were developed &#8211; but today, still, traditional RDBMSs are not regarded as inherently scalable.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">NewSQL databases are built for the cloud era, with a distributed architecture in mind from the start. <\/span><\/p>\n<h2><\/h2>\n<h2><b>What are the different characteristics observed in NewSQL solutions?<\/b><\/h2>\n<p><b>Consistency:<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Favoring consistency over availability, CP from CAP, most <\/span><a href=\"https:\/\/dbmsmusings.blogspot.com\/2018\/09\/newsql-database-systems-are-failing-to.html\"><span style=\"font-weight: 400;\">NewSQL databases offer strong consistency by sacrificing some availability<\/span><\/a><span style=\"font-weight: 400;\">. Using consensus protocols such as Paxos or Raft, from a global system or local partition level, these databases are able to achieve consistency. Some solutions, such as <\/span><a href=\"https:\/\/www.memsql.com\/blog\/why-nosql-databases-wrong-tool-for-modern-application\/\"><span style=\"font-weight: 400;\">MemSQL, also offer tuning the tradeoff<\/span><\/a><span style=\"font-weight: 400;\"> between consistency and availability, allowing for different configurations in different use cases. <\/span><\/p>\n<p><b>Main Memory:<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Traditional RDBMSs rely on secondary storage, or disk, as the medium for storing data, most commonly SSDs or HDDs. Since OLTP workloads do not require as much data, as the historical data can be archived in data warehouses and only the more current information is needed, a couple of NewSQL solutions use main memory (RAM) as storage. Memory access is significantly faster than disk access, almost 100 times faster than SSD, and 10.000 times faster than HDD. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In-memory solutions offer the added performance boosts of eliminating or simplifying heavy concurrency systems and especially <\/span><a href=\"https:\/\/web.stanford.edu\/class\/cs346\/2015\/notes\/Lecture_One.pdf\"><span style=\"font-weight: 400;\">buffer managers<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Since all the data (or most of it) is already in the main memory, buffer managers become obsolete. As for concurrency, different solutions exist in different implementations, e.g. serialization. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">What about persistence? RAMs are, by nature, volatile. When power is lost, the data that needs to persist can be lost. In-memory databases alleviate this in different ways, usually by combinations of infrequent backups on disks, logging for preserving state and for recoverability, or by utilizing non-volatile RAMs for critical data. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The two main examples of in-memory NewSQL solutions are VoltDB and MemSQL.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>VoltDB<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">VoltDB is an in-memory ACID-compliant relational database. VoltDB\u2019s architecture is based on <\/span><a href=\"http:\/\/nms.csail.mit.edu\/~stavros\/pubs\/hstore.pdf\"><span style=\"font-weight: 400;\">H-Store, designed by Michael Stonebraker et. al<\/span><\/a><span style=\"font-weight: 400;\">., an in-memory database designed for OLTP workloads. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">VoltDB is focused on fast data and is built to serve the specific applications where large streams of data must be processed quickly, such as trading applications, online gaming, IoT sensors, <\/span><a href=\"https:\/\/www.voltdb.com\/solutions\/\"><span style=\"font-weight: 400;\">and more.<\/span><\/a><span style=\"font-weight: 400;\"> Fitting with the OLTP principles, VoltDB is designed from scratch to be performant. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">With the conscious decision of having only stored procedures and moving them closer to the data, <\/span><a href=\"https:\/\/www.voltdb.com\/product\/data-architecture\/no-wait-design\/\"><span style=\"font-weight: 400;\">VoltDB can execute serialized transactions<\/span><\/a><span style=\"font-weight: 400;\">. The procedures are broken up into atomic transactions, and these transactions, in turn, are serialized and performed from a queue. This serialized transaction scheme gets rid of the overhead for managing concurrency, improving performance. While VoltDB also supports ad-hoc queries, these stored procedures are the ones that benefit from performance optimizations. This fits well with the OLTP workloads, as the end-user cannot execute ad-hoc queries. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For in-memory databases, an important question, and one of the requirements for ACID principles is durability. VoltDB achieves durability through various techniques, <\/span><a href=\"https:\/\/docs.voltdb.com\/UsingVoltDB\/ChapKSafety.php\"><span style=\"font-weight: 400;\">including snapshots, command logging, K-safety, and database replication<\/span><\/a><span style=\"font-weight: 400;\">. With these approaches, VoltDB ensures redundancy and allows for durable data. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you want more information on VoltDB and its architecture, you can check our past shows <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2016\/02\/23\/voltdb-and-in-memory-databases-with-john-hugg\/\"><span style=\"font-weight: 400;\">with John Hugg<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2015\/08\/24\/transactions-and-analytics-with-voltdbs-ryan-betts\/\"><span style=\"font-weight: 400;\">with Ryan Betts<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><a href=\"https:\/\/www.slideshare.net\/VoltDB\/realtime-big-data-analytics-in-the-ibm-softlayer-cloud-with-voltdb\"><img decoding=\"async\" data-attachment-id=\"6966\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/fastdatapipeline\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?fit=638%2C359&amp;ssl=1\" data-orig-size=\"638,359\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"FastDataPipeline\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?fit=300%2C169&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?fit=638%2C359&amp;ssl=1\" class=\"aligncenter wp-image-6966\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline-300x169.png?resize=499%2C281&#038;ssl=1\" alt=\"\" width=\"499\" height=\"281\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?resize=120%2C69&amp;ssl=1 120w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?resize=269%2C151&amp;ssl=1 269w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/FastDataPipeline.png?w=638&amp;ssl=1 638w\" sizes=\"(max-width: 499px) 100vw, 499px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>HTAP<\/b><\/p>\n<p><span style=\"font-weight: 400;\">As I pointed out before, most NewSQL databases are designed from scratch. With the possibilities such an endeavor brings, some projects wanted to bring a unified database, where transactional and analytical workloads can be handled. The term Hybrid Transactional\/Analytical Processing, or HTAP, was <\/span><a href=\"https:\/\/www.gartner.com\/imagesrv\/media-products\/pdf\/Kx\/KX-1-3CZ44RH.pdf\"><span style=\"font-weight: 400;\">coined by Gartner<\/span><\/a><span style=\"font-weight: 400;\">. HTAP capabilities in a database enable advanced real-time analytics and can lead to real-time business decisions and intelligent transactional processing. While VoltDB also offers HTAP capabilities, it focuses more on transactional workloads. Other notable HTAP databases include TiDB and Google\u2019s Spanner.<\/span><\/p>\n<p><a href=\"https:\/\/www.softwareadvice.com\/resources\/olap-data-warehouse-alternatives\/\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6967\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/olap\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?fit=800%2C739&amp;ssl=1\" data-orig-size=\"800,739\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"OLAP\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?fit=300%2C277&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?fit=800%2C739&amp;ssl=1\" class=\"aligncenter wp-image-6967 size-medium\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?resize=300%2C277\" alt=\"\" width=\"300\" height=\"277\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?resize=300%2C277&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?resize=768%2C709&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/OLAP.png?w=800&amp;ssl=1 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>TiDB<\/b><\/p>\n<p><span style=\"font-weight: 400;\">An open-source solution to come out of China, <\/span><a href=\"https:\/\/github.com\/pingcap\/tidb\"><span style=\"font-weight: 400;\">TiDB<\/span><\/a><span style=\"font-weight: 400;\"> is a strongly consistent distributed scalable MySQL-compatible HTAP database. TiDB has a layered architecture: TiDB server sits on top, as a stateless computing layer. Underlying storage model comes to life in TiKV, a transactional key-value database inspired by Google\u2019s Spanner. <\/span><\/p>\n<p><a href=\"https:\/\/github.com\/pingcap\/tidb\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6968\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/mysqlprotocol\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?fit=1996%2C1112&amp;ssl=1\" data-orig-size=\"1996,1112\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"MySQLprotocol\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?fit=300%2C167&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?fit=1024%2C570&amp;ssl=1\" class=\"aligncenter wp-image-6968\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol-300x167.png?resize=501%2C279&#038;ssl=1\" alt=\"\" width=\"501\" height=\"279\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?resize=300%2C167&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?resize=768%2C428&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?resize=1024%2C570&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?resize=269%2C151&amp;ssl=1 269w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/MySQLprotocol.png?w=1996&amp;ssl=1 1996w\" sizes=\"(max-width: 501px) 100vw, 501px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">TiDB layer listens to SQL queries, parses them and creates an execution plan. The query is then, if desirable, split into parts and sent to corresponding TiKV stores. Since it is stateless, it\u2019s easy to scale the TiDB layer. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">TiKV is the underlying storage layer, a key-value database using RocksDB for physical storage. TiKV organizes data by regions: these regions are stored and replicated. To achieve the durability and high availability with this replication scheme, TiKV utilizes the Raft consensus algorithm for strong consistency. The distributed nature of TiKV allows for distributed queries. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">What enables TiDB to be powerful in both OLTP and OLAP situations is its decoupled architecture: the computation layer is different from the storage layer. While TiDB can handle both OLTP and simple OLAP workloads, <\/span><a href=\"https:\/\/github.com\/pingcap\/tispark\"><span style=\"font-weight: 400;\">TiSpark<\/span><\/a><span style=\"font-weight: 400;\"> is an OLAP solution that runs Spark SQL directly on TiKV and can be added easily to the TiDB\/TiKV architecture. TiDB on its own, through its cost optimizer and distributed executor can handle 80% of ad-hoc OLAP queries. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">TiSpark is optimized for complex OLAP queries. Just like TiDB, TiSpark is also a stateless compute layer that communicates with TiKV, however it\u2019s designed to handle complex OLAP queries, and communicates using Spark SQL. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">So, deploying both TiDB and TiSpark results in eliminating ETL costs and allowing for a unified solution for both analytical and transactional needs. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Check out <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2019\/01\/24\/tidb-distributed-newsql-with-kevin-xu\/\"><span style=\"font-weight: 400;\">our recent episode on TiDB with Kevin Xu<\/span><\/a><span style=\"font-weight: 400;\"> for more information about TiDB and its architecture; our episode on <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/05\/rocksdb-with-dhruba-borthakur-and-igor-canadi\/\"><span style=\"font-weight: 400;\">RocksDB with Dhruba Borthakur and Igor Canadi<\/span><\/a><span style=\"font-weight: 400;\">, for more information about the physical data store RocksDB that powers TiKV and TiDB, and <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2018\/12\/09\/chinese-open-source-software\/\"><span style=\"font-weight: 400;\">our article on Chinese open source projects<\/span><\/a><span style=\"font-weight: 400;\"> for more information about TiKV. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Cosmos DB<\/b><\/p>\n<p><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/cosmos-db\/\"><span style=\"font-weight: 400;\">Azure Cosmos DB<\/span><\/a><span style=\"font-weight: 400;\"> from Microsoft is a highly flexible solution, and through numerous tuneable features that can be tweaked to fit various use cases, it can be considered as a NewSQL database. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cosmos DB is a globally distributed, <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Multi-model_database\"><span style=\"font-weight: 400;\">multi-model database<\/span><\/a><span style=\"font-weight: 400;\"> service. As a multi-model service, it supports key-value, column-family, document, and graph databases as the underlying storage models. The API with which the data is exposed can be both SQL and and NoSQL APIs. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">With global distribution, Cosmos DB holds replicas of the data in several data centers around the world, ensuring reliability and high availability. The developer can create replicas and horizontally scale their data with a few simple API calls. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cosmos DB is designed to alleviate the costs of database management. The developers don\u2019t need to deal with index or schema management, as Cosmos DB handles indexing automatically to ensure performance. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Through <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/consistency-levels\"><span style=\"font-weight: 400;\">several consistency levels<\/span><\/a><span style=\"font-weight: 400;\">, Cosmos DB lets developers decide the trade-offs that they want to make with appropriate SLAs. Instead of the two extreme ends of strong consistency and eventual consistency, there are five well-defined consistency levels alongside the spectrum. Each consistency level comes with a separate SLA, ensuring certain levels of availability and performance. <\/span><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/consistency-levels\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6969\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/consistency\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?fit=1040%2C211&amp;ssl=1\" data-orig-size=\"1040,211\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Consistency\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?fit=300%2C61&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?fit=1024%2C208&amp;ssl=1\" class=\"aligncenter wp-image-6969 size-large\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?resize=1024%2C208\" alt=\"\" width=\"1024\" height=\"208\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?resize=1024%2C208&amp;ssl=1 1024w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?resize=300%2C61&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?resize=768%2C156&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Consistency.png?w=1040&amp;ssl=1 1040w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Being the product of a tech and cloud giant, Cosmos DB is simple for developers to use, and gives comprehensive guarantees for performance, availability, and consistency. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Augmenting RDBMS<\/b><\/p>\n<p><span style=\"font-weight: 400;\">NewSQL can also come in the form of augmenting existing RDBMSs to give them the ability to scale-out. Without a completely redesigned database, these solutions are implemented on top of an already battle-tested SQL database to enhance their capabilities. This idea is useful for large enterprises that have an established system and not willing to migrate to a new database solution. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Citus<\/b><\/p>\n<p><span style=\"font-weight: 400;\">A successful example that builds upon PostgreSQL is Citus. <\/span><\/p>\n<p><a href=\"https:\/\/www.citusdata.com\/\"><span style=\"font-weight: 400;\">Citus Data<\/span><\/a><span style=\"font-weight: 400;\">, recently <\/span><a href=\"https:\/\/www.citusdata.com\/blog\/2019\/01\/24\/microsoft-acquires-citus-data\/\"><span style=\"font-weight: 400;\">acquired by Microsoft<\/span><\/a><span style=\"font-weight: 400;\">, develops and maintains <\/span><a href=\"https:\/\/github.com\/citusdata\/citus\"><span style=\"font-weight: 400;\">Citus<\/span><\/a><span style=\"font-weight: 400;\">: an open-source PostgreSQL extension that allows for a distributed PostgreSQL by transparently distributing tables and queries to support horizontal scaling. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In a cluster managed by Citus, <\/span><a href=\"http:\/\/docs.citusdata.com\/en\/v8.1\/get_started\/concepts.html\"><span style=\"font-weight: 400;\">the tables are distributed:<\/span><\/a><span style=\"font-weight: 400;\"> tables are horizontally partitioned across different worker nodes, and appear as normal SQL tables. The coordinator, having a table metadata to oversee the worker PostreSQL nodes, handles query processing and parallelizes the queries to the appropriate table partitions. <\/span><\/p>\n<p><a href=\"http:\/\/docs.citusdata.com\/en\/v8.1\/get_started\/concepts.html\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6970\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/citusimg\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Citusimg.png?fit=660%2C293&amp;ssl=1\" data-orig-size=\"660,293\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Citusimg\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Citusimg.png?fit=300%2C133&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Citusimg.png?fit=660%2C293&amp;ssl=1\" class=\"aligncenter wp-image-6970 size-full\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Citusimg.png?resize=660%2C293\" alt=\"\" width=\"660\" height=\"293\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Citusimg.png?w=660&amp;ssl=1 660w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Citusimg.png?resize=300%2C133&amp;ssl=1 300w\" sizes=\"(max-width: 660px) 100vw, 660px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">By adding features such as query routing, distributed tables and distributed transactions, and stored procedures, <\/span><a href=\"https:\/\/www.citusdata.com\/blog\/2018\/11\/30\/why-rdbms-is-the-future-of-distributed-databases\/\"><span style=\"font-weight: 400;\">Citus takes care of the numerous low-level details<\/span><\/a><span style=\"font-weight: 400;\"> to present a horizontally scalable, performant PostgreSQL. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Check out our episodes on <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2016\/06\/01\/scaling-postgresql-citus-datas-ozgun-erdogan\/\"><span style=\"font-weight: 400;\">Scaling PostgreSQL with Ozgun Erdogan<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2018\/06\/13\/postgres-sharding-and-scalability-with-marco-slot\/\"><span style=\"font-weight: 400;\">Postgres Sharding with Marco Slot <\/span><\/a><span style=\"font-weight: 400;\">for more information about Citus. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Vitess<\/b><\/p>\n<p><span style=\"font-weight: 400;\">While Citus builds upon PostgreSQL, Vitess is built to enhance MySQL, and make it fit to the current requirements of the cloud age. <\/span><\/p>\n<p><a href=\"https:\/\/vitess.io\/\"><span style=\"font-weight: 400;\">Vitess<\/span><\/a><span style=\"font-weight: 400;\"> was built first at Youtube for their scaling needs in 2011. With a growing user base and data, horizontal scaling and sharding became necessary, and Vitess was created to handle this scaling transparently. It has been open-sourced, and is <\/span><a href=\"https:\/\/www.cncf.io\/blog\/2018\/02\/05\/cncf-host-vitess\/\"><span style=\"font-weight: 400;\">now hosted under the CNCF<\/span><\/a><span style=\"font-weight: 400;\">. Getting the stamp of approval as a cloud-native technology, Vitess provides <\/span><a href=\"https:\/\/vitess.io\/docs\/overview\/whatisvitess\/#vitess-vs-vanilla-mysql\"><span style=\"font-weight: 400;\">several improvements to MySQL<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">First improvement is the introduction of various sharding schemas. Users can create their own sharding schemas, and Vitess is responsible for organizing the shards and the data accordingly. Vitess allows for automatic sharding without requiring manual application code, and enables live (re)sharding with minimal read-only down time. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sharding is done through Vindexes and keyspaces. A Primary Vindex is similar to a primary index used in the indexing schemes of databases. User can specify the attribute they want as the Primary Vindex, and how many different shards the data can be split based on this vindex. After the database is sharded, the queries based on keyspaces are directed to the appropriate shards. <\/span><\/p>\n<p><a href=\"https:\/\/vitess.io\/docs\/overview\/whatisvitess\/#architecture\"><span style=\"font-weight: 400;\">Vitess\u2019s architecture<\/span><\/a><span style=\"font-weight: 400;\"> provides load-balancing and query routing through vtgates. Since these gates are stateless layers, they can be easily scaled up and down. In turn, these vtgates route queries to vtablets that are proxies into shards, which return the aggregated result to vtgates.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6971\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/architecture-3\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture.png?fit=890%2C479&amp;ssl=1\" data-orig-size=\"890,479\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Architecture\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture.png?fit=300%2C161&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture.png?fit=890%2C479&amp;ssl=1\" class=\"aligncenter wp-image-6971\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture-300x161.png?resize=600%2C323&#038;ssl=1\" alt=\"\" width=\"600\" height=\"323\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture.png?resize=300%2C161&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture.png?resize=768%2C413&amp;ssl=1 768w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/Architecture.png?w=890&amp;ssl=1 890w\" sizes=\"(max-width: 600px) 100vw, 600px\" data-recalc-dims=\"1\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Vitess retains all its benefits <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=paOiIkASDjg\"><span style=\"font-weight: 400;\">when deployed on a cluster orchestration tool like Kubernetes<\/span><\/a><span style=\"font-weight: 400;\">. Since the vtgates act as stateless proxies, they are suitable for deployment on a container cluster. lockserver or etcd acts as the metadata store, and handles the administrative work such as schema definitions. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Implemented in Go, Vitess can handle thousands of connections using Go\u2019s concurrency support. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Listen to <\/span><a href=\"https:\/\/softwareengineeringdaily.com\/2018\/05\/15\/vitess-scaling-mysql-with-sugu-sougoumarane\/\"><span style=\"font-weight: 400;\">our episode on Vitess with Sugu Sougoumarane<\/span><\/a><span style=\"font-weight: 400;\"> for deeper discussions on Vitess\u2019 history, architecture, and use cases. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The NewSQL ecosystem is constantly growing and evolving. While it is almost impossible to make a general definition or come up with general characteristics that can encapsulate all NewSQL databases, the distinctive database designs that come out as a result under the umbrella of NewSQL add to the range of options that developers can choose from for specific use cases. One-size-fits-all architectures are not desirable anymore, and NewSQL is the movement towards innovation and specialized database designs. <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most programmers are familiar with SQL and the relational database management systems, or RDBMSs, like MySQL or PostgreSQL. The basic principles for such architectures have been around for decades. Around 2000s came NoSQL solutions, like MongoDB or Cassandra, developed for distributed, scalable data needs. But, for the past few years, there has been a new<\/p>\n","protected":false},"author":15,"featured_media":6963,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1363,1081,83,2143],"tags":[88,2402,268],"class_list":["post-6962","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all-episodes","category-data","category-articles","category-exclusive-content","tag-databases","tag-gokhan-simsek","tag-newsql"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What Is New About NewSQL? - Software Engineering Daily<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What Is New About NewSQL? - Software Engineering Daily\" \/>\n<meta property=\"og:description\" content=\"Most programmers are familiar with SQL and the relational database management systems, or RDBMSs, like MySQL or PostgreSQL. The basic principles for such architectures have been around for decades. Around 2000s came NoSQL solutions, like MongoDB or Cassandra, developed for distributed, scalable data needs. But, for the past few years, there has been a new\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Engineering Daily\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-24T13:00:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-02-24T02:54:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gokhan Simsek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GokhanSimseek\" \/>\n<meta name=\"twitter:site\" content=\"@software_daily\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gokhan Simsek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\"},\"author\":{\"name\":\"Gokhan Simsek\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d\"},\"headline\":\"What Is New About NewSQL?\",\"datePublished\":\"2019-02-24T13:00:14+00:00\",\"dateModified\":\"2019-02-24T02:54:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\"},\"wordCount\":2653,\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1\",\"keywords\":[\"Databases\",\"Gokhan Simsek\",\"NewSQL\"],\"articleSection\":[\"All Content\",\"Data\",\"Exclusive Articles\",\"Exclusive Content\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\",\"url\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\",\"name\":\"What Is New About NewSQL? - Software Engineering Daily\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1\",\"datePublished\":\"2019-02-24T13:00:14+00:00\",\"dateModified\":\"2019-02-24T02:54:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/softwareengineeringdaily.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What Is New About NewSQL?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"name\":\"Software Engineering Daily\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\",\"name\":\"Software Engineering Daily\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"width\":549,\"height\":169,\"caption\":\"Software Engineering Daily\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/software_daily\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d\",\"name\":\"Gokhan Simsek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg\",\"caption\":\"Gokhan Simsek\"},\"description\":\"Gokhan is a computer science graduate, currently pursuing a MSc. degree in Data Science at Eindhoven University of Technology.\",\"sameAs\":[\"https:\/\/x.com\/GokhanSimseek\"],\"url\":\"https:\/\/softwareengineeringdaily.com\/author\/gokhan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What Is New About NewSQL? - Software Engineering Daily","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/","og_locale":"en_US","og_type":"article","og_title":"What Is New About NewSQL? - Software Engineering Daily","og_description":"Most programmers are familiar with SQL and the relational database management systems, or RDBMSs, like MySQL or PostgreSQL. The basic principles for such architectures have been around for decades. Around 2000s came NoSQL solutions, like MongoDB or Cassandra, developed for distributed, scalable data needs. But, for the past few years, there has been a new","og_url":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/","og_site_name":"Software Engineering Daily","article_published_time":"2019-02-24T13:00:14+00:00","article_modified_time":"2019-02-24T02:54:28+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1","type":"image\/jpeg"}],"author":"Gokhan Simsek","twitter_card":"summary_large_image","twitter_creator":"@GokhanSimseek","twitter_site":"@software_daily","twitter_misc":{"Written by":"Gokhan Simsek","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#article","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/"},"author":{"name":"Gokhan Simsek","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d"},"headline":"What Is New About NewSQL?","datePublished":"2019-02-24T13:00:14+00:00","dateModified":"2019-02-24T02:54:28+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/"},"wordCount":2653,"publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1","keywords":["Databases","Gokhan Simsek","NewSQL"],"articleSection":["All Content","Data","Exclusive Articles","Exclusive Content"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/","url":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/","name":"What Is New About NewSQL? - Software Engineering Daily","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1","datePublished":"2019-02-24T13:00:14+00:00","dateModified":"2019-02-24T02:54:28+00:00","breadcrumb":{"@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#primaryimage","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/softwareengineeringdaily.com\/2019\/02\/24\/what-is-new-about-newsql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareengineeringdaily.com\/"},{"@type":"ListItem","position":2,"name":"What Is New About NewSQL?"}]},{"@type":"WebSite","@id":"https:\/\/softwareengineeringdaily.com\/#website","url":"https:\/\/softwareengineeringdaily.com\/","name":"Software Engineering Daily","description":"","publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareengineeringdaily.com\/#organization","name":"Software Engineering Daily","url":"https:\/\/softwareengineeringdaily.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","width":549,"height":169,"caption":"Software Engineering Daily"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/software_daily"]},{"@type":"Person","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e890d5bb8941fc76fb69909e6702c34d","name":"Gokhan Simsek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9ad291f06753e23a47e536bcfe34701f?s=96&d=retro&r=pg","caption":"Gokhan Simsek"},"description":"Gokhan is a computer science graduate, currently pursuing a MSc. degree in Data Science at Eindhoven University of Technology.","sameAs":["https:\/\/x.com\/GokhanSimseek"],"url":"https:\/\/softwareengineeringdaily.com\/author\/gokhan\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2019\/02\/NewSQL.jpg?fit=1280%2C720&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p7GuoD-1Oi","_links":{"self":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/6962"}],"collection":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/comments?post=6962"}],"version-history":[{"count":0,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/6962\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media\/6963"}],"wp:attachment":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media?parent=6962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/categories?post=6962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/tags?post=6962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}