Designing Data-Intensive Applications - Data Models: Relational vs Document episode artwork

EPISODE · Jan 6, 2020 · 1H 53M

Designing Data-Intensive Applications - Data Models: Relational vs Document

from Coding Blocks

We're comparing data models as we continue our deep dive into Designing Data-Intensive Applications as Coach Joe is ready to teach some basketball, Michael can't pronounce 6NF, and Allen measured some geodesic distances just this morning. For those reading these show notes via a podcast player, this episode's full show notes can be found at https://www.codingblocks.net/episode123 where you can also join in on the conversation. Sponsors Datadog.com/codingblocks – Sign up today for a free 14 day trial and get a free Datadog t-shirt after creating your first dashboard. Educative.io – Level up your coding skills, quickly and efficiently. Visit educative.io/codingblocks to get 20% off any course or, for a limited time, get 50% off an annual subscription. ABOUT YOU – One of the fastest growing e-commerce companies headquartered in Hamburg, Germany that is growing fast and looking for motivated team members like you. Apply now at aboutyou.com/job. Survey Says Which data model do you prefer? Take the survey at: https://www.codingblocks.net/episode123.   News We thank everyone that took a moment to leave us a review: iTunes: BoulderDude333, the pang1, fizch26 Hurry up and get your tickets now for NDC { London }, January 27th – 31st, where Allen will be giving his talk, Big Data Analytics in Near-Real-Time with Apache Kafka Streams. This is your chance to kick him in the shins on the other side of the pond. (ndc-london.com) Sign up for your chance to kick Joe in the shins at the South Florida Software Developers Conference 2020, February 29th, where he will be giving his talk, Streaming Architectures by Example. (fladotnet.com) Want a chance to kick all three Coding Blocks hosts in the shins? Sign up for the 15th Annual Orlando Code Camp & Tech Conference, March 28th, for your chance to kick them all in the shins and grab some swag. (orlandocodecamp.com) Data Models Data models are one of the most important pieces of developing software. It dictates how the software is written. And it dictates how we think about the problems we're solving. Software is typically written by stacking layers of modeling on top of each other. We write objects and data structures to reflect the real world. These then get translated into some format that will be persisted in JSON, XML, relational tables, graph db's, etc. The people that built the storage engine had to determine how to model the data on disk and in memory to support things like search, fast access, etc. Even further down, those bits have to be converted to electrical current, pulses of light, magnetic fields and so on. Complex applications commonly have many layers: APIs built on top of APIs. What's the purpose of these layers? To hide the complexity of the layer below it. The abstractions allow different groups of people (potentially with completely different skillsets) to work together. There are MANY types of data models, all with different usages and needs in mind. It can take a LOT of time and effort to master just a single model. Data models have a HUGE impact on how you write your applications, so its important to choose one that makes sense for what you're trying to accomplish. Relational Model vs Document Model Best-known model today is probably the ones based on SQL. The relational model was proposed by Edgar Codd back in 1970. The relational model organizes data into relations (i.e. tables in SQL) where each relation contains an unordered collection of tuples (i.e. rows in SQL). People originally doubted it would work but it's dominance has lasted since the mid-80's, which the author points out is basically an eternity in software. Origins were based in business data processing, particularly transaction processing. There have been a number of competing data storage and querying approaches over the years. Network and Hierarchical models in 70's and 80's, Object databases were competitors in the late 80's and early 90's, XML databases, Basically a number a competitors over the years but nobody has dethroned the relational database. Almost everything you see and use today has some sort of relational database working behind it. NoSQL NoSQL is the latest competitor to Relational Databases. It was originally intended as a catchy Twitter hashtag for a meetup about open source, distributed, non-relational databases. It has since been re-termed to "Not only SQL". What needs does NoSQL aim to address? The need for greater scalability than traditional RDBMS's can typically achieve, including very large datasets and fast writes. The desire for FOSS (free and open source software), as opposed to very expensive, commercial RDBMS's. Specialized query operations that are not supported well in the relational model. Shortcomings of relational models – need for more dynamic and/or expressive data models. Different applications (or even different pieces of the same application) have different needs and may require different data models. For that reason, it's very likely that NoSQL won't replace SQL, but rather it'll augment it. This is referred to as polyglot persistence. Object-Relational Mismatch Most applications today are written in an object oriented programming language. There's typically a translation layer required to map the relational data models to an object model. The disconnect between models can be referred to as impedance mismatch. Frameworks like ActiveRecord, Hibernate, Entity Framework, etc., can reduce the boilerplate code needed for the translation but typically don't fully hide the impedance mismatch issues. Resources We Like Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann (Amazon) Grokking the System Design Interview (Educative.io) Monitor Azure DevOps workflows and pipelines with Datadog (Datadog) Monitor Amazon EKS on AWS Fargate with Datadog (Datadog) Best practices for tagging your infrastructure and applications (Datadog) Introducing: Educative Subscriptions (Educative.io) Santosh Hari – Not all data is created equal: NoSQL (YouTube) TIOBE Index (tiobe.com) Database Schema for Multiple Types of Products   Tip of the Week Got data? Use DataGrip. One tool for many databases. (JetBrains) KafkaHQ – A Kafka GUI for topics, data, consumer groups, schema registry and more. (GitHub) Grafka – A GraphQL interface for Apache Kafka (GitHub) Use Google Maps to measure geodesic distances (citylab.com) How to undo (almost) anything with Git (GitHub) Will Save the Galaxy for Food by Yahtzee Croshaw (Amazon)

Episode metadata supplied by the publisher feed · Published Jan 6, 2020

NOW PLAYING

Designing Data-Intensive Applications - Data Models: Relational vs Document

0:00 1:53:53

No transcript for this episode yet

We transcribe on demand. Request one and we'll notify you when it's ready — usually under 10 minutes.

API Intersection Stoplight Building a successful API requires more than just coding. It starts with collaborative design, focuses on creating a great developer experience, and ends with getting your company on board, maintaining consistency, and maximizing your API’s profitability.In the API Intersection, you’ll learn from experienced API practitioners who transformed their organizations, and get tangible advice to build quality APIs with collaborative API-first design.Jason Harmon brings over a decade of industry-recognized REST API experience to discuss topics around API design, governance, identity/auth versioning, and more.They’ll answer listener questions, and discuss best practices on API design (definition, modeling, grammar), Governance (multi-team design, reviewing new API’s), Platform Transformation (culture, internal education, versioning) and more.They’ll also chat with experienced API practitioners from a wide array of industries to draw out practical takeaways and insights you can use.H Unshamed & Unchained: Carving Space For Self-Healing & Habit Transformation Danny Poelman Welcome to "Unshamed & Unchained: Carving Space For Self-Healing & Habit Transformation", the podcast where we break the chains of shame and societal expectations to create a safe space for self-healing, habit transformation, and personal growth. Hosted by a seasoned life coach, Danny Poelman DDS, with years of hands-on experience, this podcast is your guide to reclaiming your voice, embracing your story, and living life on your terms.In each episode, we dive deep into the topics that matter most to you—whether it's:-breaking free from unwanted habits like pornography-excessive people-pleasing-healing from past trauma-recovering from narcissistic abuse or religious/relational trauma-anxiety/depression-money mindset blocks-overcoming limiting beliefsWe’re not afraid to talk about the things that are often considered taboo, because we believe that through honest, unfiltered conversations, real transformation happens.You’ll hear real Khanyisa Keke TV Khanyisa Keke On Khanyisa Keke TV, developers can learn and improve their Android for Kotlin Development skills. On this podcast, programmers can learn Android for Kotlin coding from scratch, improve their existing programming skills, get tips, be kept up to date with all the latest happenings and get access to free resources. Powered by Firstory Hosting The Triathlon Mental Performance Podcast Neil Edge This podcast is for you if you are a Triathlete that is interested in learning about tools and strategies to overcome challenges and to utilize the power of your mind to race faster.I'm an experienced Triathlon Mental Performance Coach working with both Age Groupers and Pros.Episodes will cover the following and more.How to improve your mental toughnessRemoving the possibility of panic attacks in open water Removing the fear of fast descents on your bike -Removing mental blocks to improve your race times Completely remove performance anxiety (you don't have to just cope with it)4 weeks to race day - Strategies to  arrive at your a-race feeling calm and confident, with race day mental strategiesI will also talk about specific tools that you can use to ensure that you race faster.<b

Frequently Asked Questions

How long is this episode of Coding Blocks?

This episode is 1 hour and 53 minutes long.

When was this Coding Blocks episode published?

This episode was published on January 6, 2020.

What is this episode about?

We're comparing data models as we continue our deep dive into Designing Data-Intensive Applications as Coach Joe is ready to teach some basketball, Michael can't pronounce 6NF, and Allen measured some geodesic distances just this morning. For those...

Can I download this Coding Blocks episode?

Yes, you can download this episode by clicking the download button on the episode player, or subscribe to the podcast in your preferred podcast app for automatic downloads.
URL copied to clipboard!