<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ovais Tariq</title>
    <description>The latest articles on DEV Community by Ovais Tariq (@ot).</description>
    <link>https://dev.to/ot</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F932908%2F8d5c0094-1a8b-4cee-8b02-21aa641028c5.jpg</url>
      <title>DEV Community: Ovais Tariq</title>
      <link>https://dev.to/ot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ot"/>
    <language>en</language>
    <item>
      <title>Databases are legacy. It's time to rethink data storage and usage.</title>
      <dc:creator>Ovais Tariq</dc:creator>
      <pubDate>Thu, 29 Sep 2022 18:00:16 +0000</pubDate>
      <link>https://dev.to/tigrisdata/databases-are-legacy-its-time-to-rethink-data-storage-and-usage-oa</link>
      <guid>https://dev.to/tigrisdata/databases-are-legacy-its-time-to-rethink-data-storage-and-usage-oa</guid>
      <description>&lt;p&gt;Data is the lifeblood of modern applications, powering rich and diverse user experiences. We rely on these applications in our daily life to do everything from managing logistics, finances, shopping needs, and even the most mundane and basic of tasks.&lt;/p&gt;

&lt;p&gt;However, as much as these modern applications have become data-dependent, the supporting data infrastructure hasn't evolved to support these rich data needs. Today's applications still rely on "databases" in the classical sense, a concept designed in the 1970s and 1980s.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we got here&lt;a href="https://blog.tigrisdata.com/databases-are-legacy#how-we-got-here" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Over the past five years, we have seen not only the exponential growth of new applications being launched but also the diversification of tools and infrastructure components needed to support those applications. Most new applications are built using a microservice architecture.&lt;/p&gt;

&lt;p&gt;Each of these microservices will often have its own disparate database components, many times more than one. This variance is usually driven by the requirements of the services around data structure, model, and access patterns. The need to support multiple data models and patterns has led to the idea of a specific toolset or component for a particular use-case has become the norm. There has been a "gold" rush for infrastructure companies to stake a place in this new landscape, creating new tools and resulting in increasingly complex architectures. The tools being released are generally focused on specific usage cases or components instead of solving the larger problem.&lt;/p&gt;

&lt;p&gt;Looking at the current &lt;a href="https://landscape.cncf.io/" rel="noopener noreferrer"&gt;CNCF landscape&lt;/a&gt; you can see how evident the variety and sprawl is&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tigrisdata.com%2Fassets%2Fimages%2Fcncf-landscape-bec911c73e241808fbe492dd77f51007.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tigrisdata.com%2Fassets%2Fimages%2Fcncf-landscape-bec911c73e241808fbe492dd77f51007.jpg" alt="CNCF landscape - databases and streaming" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This complex map shows the hundreds and hundreds of different infrastructure components that can be bundled together. Most of them are focused on performing one specific niche item. We often need many of these components to build a robust modern application because the core infrastructure components ( like the database ) were never designed to meet today's needs. We are now in a time when DIY builders can couple together Frankenstein's monster to support their application.&lt;/p&gt;

&lt;h2&gt;
  
  
  The impact of increased complexity&lt;a href="https://blog.tigrisdata.com/databases-are-legacy#the-impact-of-increased-complexity" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;While purpose-built tooling and components have some benefits, the downside is that the environments in which we currently build applications are getting larger and more complex.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mongodb.com/blog/post/survey-2000-it-professionals-reveals-importance-innovation-challenges" rel="noopener noreferrer"&gt;MongoDB recently surveyed 2,000 IT professionals; over 50% described their data architecture as "Complex"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.percona.com/open-source-data-management-software-survey" rel="noopener noreferrer"&gt;Percona ( an Open Source Database Vendor ) did a similar survey and found that the number of organizations supporting 1000s of databases in production more than doubled in the last year&lt;/a&gt;. That same survey found over 90% of the respondents run multiple databases, and most running five or more.&lt;/p&gt;

&lt;p&gt;This complexity has grown not only the footprint of companies' data infrastructure. Still, it has forced developers to learn and maintain the skills to build and support dozens of disparate components, with each component having its APIs, characteristics, access methods, operations, and best practices.&lt;/p&gt;

&lt;p&gt;And time is a resource developers are lacking!&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://www.revealbi.io/whitepapers/software-developers-biggest-challenges" rel="noopener noreferrer"&gt;2022 study by Reveal.io&lt;/a&gt; showed that 40%+ of developers are challenged by not only the high demands being placed on them but the constant raising of those requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://survey.stackoverflow.co/2022/#productivity-impacts-time-searching" rel="noopener noreferrer"&gt;Stack Overflow's 2022 survey&lt;/a&gt; showed that a quarter of all developers spend more than 25% of their time every week looking for solutions to problems. No wonder that same study showed that nearly 53% of developers are looking at Low or No Code solutions to help reduce the time to release applications.&lt;/p&gt;

&lt;p&gt;The more complex the environment, the more time is spent maintaining, troubleshooting, learning, and getting components to play nicely together. Much of the complexity of the infrastructure comes from how data is stored and accessed using legacy database management systems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tigrisdata.com/beta#signup-form" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tigrisdata.com%2Fassets%2Fimages%2Fdatabases-legacy-blog-header-f3e3d3071b0db237baaf3b49d5c867a8.jpg" alt="Databases are dead" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Databases are legacy&lt;a href="https://blog.tigrisdata.com/databases-are-legacy#databases-are-legacy" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;One of the main reasons for the explosion in data infrastructure tools is that the databases were never designed for the rich use cases applications have today. Then, instead of rethinking the developer experience related to data and widening the functions of the database, we added more bolt-on tools.&lt;/p&gt;

&lt;p&gt;Our idea of how we need to store and interact with data in applications dates back to the 1970s. While databases have evolved regarding stability, security, and scalability, the core functionality remains the same. At its core, all databases have these common tenants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Stores data in a self-describing universal format&lt;/li&gt;
&lt;li&gt;  Allows you to query data with a specific language&lt;/li&gt;
&lt;li&gt;  Separates the data from the application, allowing many applications to connect and use the same data source&lt;/li&gt;
&lt;li&gt;  Handles the persistence of the data&lt;/li&gt;
&lt;li&gt;  Secures data in some manner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By definition, database management systems are designed to separate the application and data, focusing on interacting with data in a narrow way. This is archaic thinking in today's modern environments.&lt;/p&gt;

&lt;p&gt;Today applications and data are as connected as ever before. The application should dictate the best way to store and retrieve data, not the other way around.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developer Data Platform&lt;a href="https://blog.tigrisdata.com/databases-are-legacy#the-developer-data-platform" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;If we were to go back and redesign the core systems we use to store, access, and use data with what we know now, we would build a completely different experience. Instead of adding more disparate components and bolt-ons, we need a new solution to handle the modern requirements. We need a Data Platform purpose-build for Developers with the following characteristics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Has the capabilities to meet the demands of a multi-model application.&lt;/li&gt;
&lt;li&gt; Data stored is optimized for application access patterns, not the application designed to adhere to the database's preferred patterns.&lt;/li&gt;
&lt;li&gt; All data is queryable and searchable directly from common application frameworks (the tools, libraries, and packages developers use daily) and APIs without learning a new language.&lt;/li&gt;
&lt;li&gt; Data is sharable in common formats for end users, applications, APIs, and services in real time.&lt;/li&gt;
&lt;li&gt; Infrastructureless from the developers' perspective: indexing, sharding, HA, recovery, and standard database administration operations are handled automatically.&lt;/li&gt;
&lt;li&gt; Built with modern cloud-native architecture with independently scalable components.&lt;/li&gt;
&lt;li&gt; Provides control of their data to the users in a secure way that complies with laws and regulations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Many database companies like to say they are taking a developer-first approach to designing their products, but most of the time, they remain stuck in the past.&lt;/p&gt;

&lt;p&gt;It is time to start building the data platforms that conform to how developers think, code, and create.&lt;/p&gt;

&lt;p&gt;This is why we are building Tigris. We hope other vendors will evolve as well to better support a modern developer's needs.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tigris is the all-in-one open source developer data platform. Use it as a scalable transactional document store. Perform real-time search across your data stores automatically. Build event-driven apps with real-time event streaming. All provided to you through a unified serverless API enabling you to focus on building applications and stop worrying about the data infrastructure.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tigrisdata.com/beta#signup-form" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tigrisdata.com%2Fassets%2Fimages%2Fhand-laptop-08df8ce107a739b1f0fb27f84b07b85b.png" alt="Sign up for the beta" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tigrisdata.com/beta#signup-form" rel="noopener noreferrer"&gt;Get early access and try out Tigris for your next application&lt;/a&gt;. You can also follow the &lt;a href="https://docs.tigrisdata.com/quickstart" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to learn more.&lt;/p&gt;

</description>
      <category>database</category>
      <category>devops</category>
      <category>dataplatform</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Skipping the boring parts of building a database using FoundationDB</title>
      <dc:creator>Ovais Tariq</dc:creator>
      <pubDate>Tue, 27 Sep 2022 17:58:37 +0000</pubDate>
      <link>https://dev.to/tigrisdata/skipping-the-boring-parts-of-building-a-database-using-foundationdb-29e9</link>
      <guid>https://dev.to/tigrisdata/skipping-the-boring-parts-of-building-a-database-using-foundationdb-29e9</guid>
      <description>&lt;p&gt;The most complicated and time-consuming parts of building a new database system are usually the edge cases and low-level details. Concurrency control, consistency, handling faults, load balancing, that kind of thing. Almost every mature storage system will have to grapple with all of these problems at one point or another. For example, at a high level, load balancing hot partitions across brokers in Kafka is not that different from load balancing hot shards in MongoDB, but each system ends up re-implementing a custom load-balancing solution instead of focusing on their differentiating value to end-developers.&lt;/p&gt;

&lt;p&gt;This is one of the most confusing aspects of the modern data infrastructure industry, why does every new system have to completely rebuild (not even reinvent!) the wheel? Most of them decide to reimplement common processes and components without substantially increasing the value gained from reimplementing them. For instance, many database builders start from scratch when building their own storage and query systems, but often merely emulate existing solutions. These items usually take a massive undertaking just to get basic features working, let alone correct.&lt;/p&gt;

&lt;p&gt;Take the OLTP database industry as an example. Ensuring that transactions always execute with &lt;a href="https://www.postgresql.org/docs/current/transaction-iso.html#XACT-SERIALIZABLE" rel="noopener noreferrer"&gt;"linearizable" or "serializable" isolation&lt;/a&gt; is just one of the dozens of incredibly challenging problems that must be solved before even the most basic correctness guarantees can be provided. Other challenges that will have to be solved: fault handling, load shedding, QoS, durability, and load balancing. The list goes on and on, and every new system has to at least make a reasonable attempt at all of them! Some vendors rode the hype wave of NoSQL to avoid providing meaningful guarantees, such as not providing linearizability in a lot of cases, but we think those days are long gone.&lt;/p&gt;

&lt;p&gt;Vendors are spending so much time rebuilding existing solutions, they end up not solving the actual end users' problems, although ostensibly that's why they decided to create a new data platform in the first place! Instead of re-inventing the wheel, we think database vendors should be focused on solving the user's actual pain points like the "database sprawl" problems.&lt;/p&gt;

&lt;p&gt;The good news is there is a growing trend in the industry to reuse great open source software as a building block for higher level data infrastructure. For example, some vendors realized that a local key-value store like RocksDB could be used to deliver many features and enforce an abstraction boundary between the higher level database system and storage. They still hide RocksDB behind a custom API, but get to leverage all the development and testing effort it has received over the years. This can result in new systems that are both robust (durable, correct) and performant at the single-node level in a very short amount of time.&lt;/p&gt;

&lt;p&gt;That said, even if all these storage systems magically used RocksDB under the hood, the problem of a complicated data infrastructure with many different components and data pipelines wouldn't be solved. That's because, even if all your storage systems use RocksDB under the hood, there is no common domain to perform transactions across them. After all, RocksDB is only a local key-value store.&lt;/p&gt;

&lt;p&gt;While a local key-value store is a great abstraction for separating the storage engine from the higher-level system, Google took this a step further with Spanner, which is a SQL database built on a distributed key-value store. CockroachDB is another example of a SQL database built on top of a distributed key-value store. The distributed key-value store interface shifts the hard problems of consistency, fault tolerance, and scalability down into the storage layer and allows database developers to focus on building value-added features database users actually need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Tigris Leverages FoundationDB to Replace Multiple Database Systems&lt;a href="https://www.tigrisdata.com/blog/building-a-database-using-foundationdb/#why-tigris-leverages-foundationdb-to-replace-multiple-database-systems" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc02i7a9oqhju7vncjhh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc02i7a9oqhju7vncjhh.jpg" alt="Database" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until a few years ago, the open-source community did not have any viable options for a stand-alone, production-ready distributed key-value store with interactive transactions. FoundationDB, used by Apple, Snowflake, and others is such a system. It provides the same consistency and isolation guarantees as Spanner - strict serializability, and has an amazing correctness story through &lt;a href="https://apple.github.io/foundationdb/testing.html" rel="noopener noreferrer"&gt;simulation testing&lt;/a&gt;. FoundationDB exposes a key-value API, similar to RocksDB, but it automatically scales horizontally to support petabytes of data and millions of operations per second in a single deployment on a modest amount of commodity hardware.&lt;/p&gt;

&lt;p&gt;Tigris uses FoundationDB's transactional key-value interface as its underlying storage engine. This separation of compute from storage allows Tigris to focus its attention on higher level concerns, instead of lower level ones. For example, we'd prefer to spend our time figuring out how to incorporate an OLTP database, search indexing system, job queue, and event bus into a single transactional domain instead of spending our time building and testing a custom solution for storing petabytes of data in a durable and replicated manner. In other words, we leverage FoundationDB to handle the hard problems of durability, replication, sharding, transaction isolation, and load balancing so we can focus on higher level concerns.&lt;/p&gt;

&lt;p&gt;Building a new data platform on top of an existing distributed transactional key value interface like FoundationDB may not be the most efficient approach, but it heavily skews the implementation towards "correct and reliable by default", even in the face of extreme edge cases. Many existing distributed databases still struggle to pass the most basic aspects of &lt;a href="https://jepsen.io/" rel="noopener noreferrer"&gt;Jepsen&lt;/a&gt; testing even after over a decade of development. At Tigris, we value correctness, reliability, and user experience over raw performance. The generic abstraction of a transactional, sorted key-value store is flexible enough to support many kinds of access patterns, as well as enable rapid feature development. For example, a secondary index is just another key-value pair pointing from the secondary index key to the primary index key. Searching for records via this secondary index is as simple as a range scan on the key-value store and doing point reads on the primary index to retrieve the records. Ensuring the secondary index is always consistent only requires that the secondary index key is written in the same FoundationDB transaction in which the primary record is updated.&lt;/p&gt;

&lt;p&gt;Our goal is to provide a cohesive API for collections and streams that all work together. We use FoundationDB's transactions to ensure the invariants of these data structures remain intact regardless of the different failure modes your cluster might encounter.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Tigris encodes index keys using the FoundationDB's key encoder. It accepts high level data structures like arrays, strings, and numbers and encodes them into a lexicographically sortable byte string. Encoded keys are a common language for different components inside Tigris to communicate with.&lt;/li&gt;
&lt;li&gt;  Tigris Streams are powered by FoundationDB's support for "baking" a transaction's commit timestamp &lt;a href="https://apple.github.io/foundationdb/javadoc/com/apple/foundationdb/tuple/Versionstamp.html" rel="noopener noreferrer"&gt;into a key&lt;/a&gt;, which allows reading all collection mutations in the total order of transactions committed into the database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FoundationDB's powerful primitives allow us to focus on the high-level API and experience of using Tigris, so you can build an application with rich functionality like search, background jobs, data warehouse sync, and more without having to grapple with a unique solution for each, or figure out how to keep them all in sync with each other. We've built a cohesive set of tools for data management within a modern application. And if we don't support exactly what you need today, you can use the Streams API to ensure correct data sync to any other system.&lt;/p&gt;

&lt;p&gt;While low level concerns like durability and data replication are not where we want to spend our engineering time, they are still extremely important! So why do we feel comfortable trusting FoundationDB with our most critical data? In a nutshell, it is because while perhaps lesser known, FoundationDB is one of the most well tested and battle hardened databases in the world.&lt;/p&gt;

&lt;h2&gt;
  
  
  FoundationDB's Correctness and Fault Tolerance&lt;a href="https://www.tigrisdata.com/blog/building-a-database-using-foundationdb/#foundationdbs-correctness-and-fault-tolerance" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdeeh4y1j8ik9wtqgut1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdeeh4y1j8ik9wtqgut1.jpg" alt="Data Integrity" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FoundationDB has more comprehensive testing than almost any other database system on the market. It relies on &lt;a href="https://apple.github.io/foundationdb/testing.html" rel="noopener noreferrer"&gt;simulation testing&lt;/a&gt;, an approach where an entire FoundationDB cluster can be deterministically simulated in a single operating system process, alongside a wide variety of test workloads which exercise the database and assert on various properties. Simulation testing allows the test runtime to speed up time much faster than wall clock time by skipping over all the boring moments where code is waiting for a timeout to happen, or a server to come back up after being rebooted. This means many more "test hours" can pass for each real hour dedicated to running tests, and these tests can be run in parallel across many servers to explore the state of possible failure modes even further.&lt;/p&gt;

&lt;p&gt;There are very few databases which even come close to this level of testing. Those that do typically only simulate a small portion of their system, leaving many components untested by simulation and only relying on unit tests. FoundationDB even simulates the backup-restore process to ensure the operational tools are just as good as the database itself. After all, those kinds of tools are often just as important! No database is perfect, but simulation catches problems before they make it into a user facing release.&lt;/p&gt;

&lt;p&gt;FoundationDB also receives extensive real-world testing at Apple and Snowflake. The releases are beta tested by them long before being released to the community to ensure simulation results match reality of running in chaotic cloud environments. It also provides Tigris with extremely powerful workload management features. The database is constantly evaluating the load of the cluster to determine when it is "too busy", and when that happens it will artificially slow down starting new transactions until the load is stable again. By forcing all the latency to the beginning of your transaction, FoundationDB ensures every operation after that experiences a consistent, low latency. Many other database systems lack any workload management features at all, which manifests as overloaded clusters requiring operators to shut down all the clients to get it back under control.&lt;/p&gt;

&lt;p&gt;We previously mentioned that backup-restore functionality is tested in simulation. That's true of other features like disaster recovery, logging, and metrics too. These built-in tools are a core part of FoundationDB's developer experience. Many other database systems force you to use a third-party backup tool once you cross a small scale due to table locking or other concurrency problems. FoundationDB's backups and disaster recovery system are both streaming (so your recovery point objective can be measured in seconds instead of hours) and they work for large, busy databases, not just the toy sized ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tigris Operations and Reliability&lt;a href="https://www.tigrisdata.com/blog/building-a-database-using-foundationdb/#tigris-operations-and-reliability" rel="noopener noreferrer"&gt;​&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftuaqo7qeiikr1j6voxfa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftuaqo7qeiikr1j6voxfa.jpg" alt="Reliable Data Flow" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tigris is built following a microservice architecture approach. It is deployed as a layer in front of FoundationDB. This allows us to have separate components that can each be scaled independently. For example, separating storage from compute ensures a better distribution of resources. Some deployments of Tigris will store a small amount of data that requires tons of CPU for processing queries, while others will store large amounts of data and use a tiny amount of CPU. You can right-size your Tigris and FoundationDB clusters separately so that valuable CPU and memory resources are never again stranded on a big database instance which mostly sits idle because of high storage utilization.&lt;/p&gt;

&lt;p&gt;Tigris expands on FoundationDB's integrated workload management features to provide more fine-grained workload management down to the individual collection level.&lt;/p&gt;

&lt;p&gt;FoundationDB provides Tigris a strong foundation for building a high quality data platform. By leaving the low level details to a battle-tested system, Tigris can focus on building a cohesive, flexible set of tools that enable application developers to take an idea from production without stepping into the sinkhole of data pipelines, broken sync jobs, and complicated concurrency bugs present in many modern application architectures.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tigris is a globally distributed, multi-cloud object storage service with built-in support for the S3 API. It uses Dynamic Data Placement and Access-Based Rebalancing to deliver low-latency access worldwide — without the need to manage replication or caching.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tigrisdata.com/docs/get-started/" rel="noopener noreferrer"&gt;Try out Tigris for your next application&lt;/a&gt;. You can also follow the &lt;a href="https://www.tigrisdata.com/docs/get-started/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to learn more.&lt;/p&gt;

</description>
      <category>database</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
