<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Apache Cassandra | Apache Cassandra Documentation</title>
    <link rel="stylesheet" href="../../assets/css/site.css">
    <meta name="description" content="The Apache Cassandra Community">
    <link rel="schema.dcterms" href="https://purl.org/dc/terms/">
    <meta name="dcterms.subject" content="_">
    <meta name="dcterms.identifier" content="master">
    <meta name="generator" content="Antora 2.3.4">
    <link rel="icon" href="../../assets/img/favicon.ico" type="image/x-icon">
<script>
  const script = document.createElement("script");
  const domain = window.location.hostname;
  script.type = "text/javascript";
  script.src = "https://plausible.cassandra.apache.org/js/plausible.js";
  script.setAttribute("data-domain",domain);
  script.setAttribute("defer",'true');
  script.setAttribute("async",'true');
  document.getElementsByTagName("head")[0].appendChild(script);
</script>  </head>
  <body class="case-study">
      <div class="container mx-auto relative">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <meta property="og:type" content="website" />
	<meta property="og:description" content="" />
	<meta property="og:url" content="/" />
	<meta property="og:site_name" content="Apache Cassandra" />

<header id="top-nav">
    <div class="inner relative">
        <div class="header-social-icons text-right">
            <a href="https://twitter.com/cassandra?lang=en" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
            <a href="https://www.linkedin.com/company/apache-cassandra/"  target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
            <a href="https://www.youtube.com/c/PlanetCassandra" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
        </div>
        <div class="cf">
            <div class="logo left"><a href="/"><img src="../../assets/img/logo-white-r.png" alt="cassandra logo"></a></div>
            <div class="mobile-nav-icon right">
                <img class="toggle-icon" src="../../assets/img/hamburger-nav.svg">
            </div>
            <ul class="main-nav nav-links right flex flex-vert-center flex-space-between">
    <li>
        <a class="nav-link hide-mobile">Get Started</a>
        <ul class="sub-menu bg-white">
            <li class="pa-micro">
                <a href="/_/cassandra-basics.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-basics.png" alt="cassandra basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Cassandra Basics
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/quickstart.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-rocket.png" alt="cassandra basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Quickstart
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/ecosystem.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-ecosystem.png" alt="cassandra basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Ecosystem
                    </div>
                </a>
            </li>
        </ul>
    </li>
    <li><a class="nav-link" href="/doc/latest/">Documentation</a></li>
    <li>
        <a class="nav-link" href="/_/community.html">Community</a>
        <ul class="sub-menu bg-white">
            <li class="pa-micro">
                <a href="/_/community.html#code-of-conduct">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-welcome.png" alt="welcome icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Welcome
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#discussions">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-discussions.png" alt="discussions icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Discussions
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#project-governance">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-governance.png" alt="Governance icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Governance
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#how-to-contribute">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-contribute.png" alt="Contribute icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Contribute
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#meet-the-community">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-community.png" alt="Meet the Community icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Meet the Community
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/cassandra-catalyst-program.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-catalyst.png" alt="Catalyst icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Catalyst Program
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/events.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-events.png" alt="Events icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Events
                    </div>
                </a>
            </li>
        </ul>
    </li>
    <li>
        <a class="nav-link hide-mobile">Learn</a>
        <ul class="sub-menu bg-white">
            <li class="pa-micro">
                <a href="/_/Apache-Cassandra-5.0-Moving-Toward-an-AI-Driven-Future.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-basics.png" alt="Basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Cassandra 5.0
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/case-studies.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-case-study.png" alt="Case Studies icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Case Studies
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/resources.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-resources.png" alt="Resources icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Resources
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/blog.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-blog.png" alt="Blog icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Blog
                    </div>
                </a>
            </li>
        </ul>
    </li>
    <li><a class="nav-link btn btn--filled" href="/_/download.html">Download Now</a></li>
</ul>
        </div>
    </div>
</header>

        <div class="hero hero--home grad">
            <div class="eye"></div>
            <div id="home-content" class="text-center flex flex-center flex-column relative z2 ma-xlarge">
                <h1>Kinetic Data</h1>
            </div>
        </div>
        <div id="blog-post" class="flex-center py-large arrow">
            <div class="post-content">
                <div class="inner inner--narrow">
                    <div id="preamble">
<div class="sectionbody">
<div class="imageblock text-center">
<div class="content">
<img src="../_images/companies/kinetic_data.svg" alt="Kinetic Data">
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="kinetic-data-chooses-apache-cassandra-to-deliver-workflow-automation-solution"><a class="anchor" href="#kinetic-data-chooses-apache-cassandra-to-deliver-workflow-automation-solution"></a>Kinetic Data Chooses Apache Cassandra to Deliver Workflow Automation Solution</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>Company information</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Enterprise workflow automation</p>
</li>
<li>
<p>50 employees</p>
</li>
<li>
<p>Global 2000 clients and government customers, including the USDA, US Army and Navy, Federal Reserve, Fairfax County Public Schools, Emory Healthcare.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>Benefits</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Distributed fault tolerance</p>
</li>
<li>
<p>Load balancing</p>
</li>
<li>
<p>Data durability through replicas</p>
</li>
<li>
<p>Low friction for operations teams</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Kinetic Data is a leading provider of enterprise workflow automation software. Its Kinetic Platform combines custom workflow builds and pre-built solutions with a low-code environment that enables tech-savvy ‘smarties’ to automate workflow processes. The platform also features pro-code functionality that allows architects to custom code for ease of digital transformation, helping enterprises extend technology investments and lower costs for their systems at scale.</p>
</div>
<div class="paragraph">
<p>When it came to developing the Kinetic Platform, John Sundberg, president of Kinetic Data wanted a data management system that was robust and minimized friction when using the product: "Everything we do is focused on helping IT and business professionals, those closest to the problems, build their own solutions to those issues," says Sundberg, and when it came to building its workflow platform, Kinetic decided to build atop of Apache Cassandra.</p>
</div>
<div class="paragraph">
<p>Ultimately, Apache Cassandra was chosen for its robustness. Features including automatic failover, load balancing, and replication eliminated many headaches for Kinetic Data and its customers. Additionally, Kinetic Data wanted to reduce any friction using its products, and the fact Cassandra is open source was appealing as users would not have to wrestle with licensing concerns.</p>
</div>
<div class="sect2">
<h3 id="testimonial-quote"><a class="anchor" href="#testimonial-quote"></a>Testimonial quote</h3>
<div class="quoteblock">
<blockquote>
Once it&#8217;s set up and running it’s hands off. Quite frankly, it&#8217;s easy from an operations perspective. So our customers, they&#8217;re using Cassandra, but they don&#8217;t really realize it. But they do say, ‘it&#8217;s always up. It&#8217;s always fast.’ It&#8217;s all these benefits that you really want the end-user to know about.
</blockquote>
<div class="attribution">
&#8212; John Sundberg<br>
<cite>president of Kinetic Data</cite>
</div>
</div>
</div>
<div class="sect2">
<h3 id="performant-at-scale"><a class="anchor" href="#performant-at-scale"></a>Performant at scale</h3>
<div class="paragraph">
<p>Previously, Sundberg had experienced a low-code system that used SQL Server underneath, which highlighted a key challenge: Low-code systems have to be capable of handling the unknown plans of users and how their plans are likely to scale. Normally, a system architect builds a tech stack for a specific use case, understanding the performance requirements and potential bottlenecks. A low-code system, in contrast, provides a framework for someone else to build what they like.</p>
</div>
</div>
<div class="sect2">
<h3 id="optimized-queries"><a class="anchor" href="#optimized-queries"></a>Optimized queries</h3>
<div class="paragraph">
<p>No matter what is being built, Kinetic Data has to guarantee excellent performance. In the past, users would build up a form, and performance would be as they expected initially but as records increased from 5,000 to 50,000 or 500,000 records, users would see a performance drop. Essentially, this is because SQL will accept and execute an inefficient query and take as long as needed to return the result. In contrast, Apache Cassandra would refuse such a query, which meant users would find a problem at record one not record 500,000. Kinetic Data found that, in the development stage, Apache Cassandra guides the user to create efficient queries.</p>
</div>
</div>
<div class="sect2">
<h3 id="fault-tolerant-and-scalable"><a class="anchor" href="#fault-tolerant-and-scalable"></a>Fault-tolerant and scalable</h3>
<div class="paragraph">
<p>“I did not want the environment to be a fear,” says Sundberg. “I wanted users to be able to say to themselves, ‘I want to create a form this way’ and be able to go and create it, and when they submitted a form we needed it to fire in the way they wanted.” Kinetic Data found that SQL wasn’t enabling them to eliminate the thought process around the database. “A lot of database talk would pop up when building forms and workflows,” says Sundberg, where they would need to consider creating an index, for instance, in certain situations. This was enabling the hardcore, computer people, but it didn’t enable Kinetic Data to abstract away those issues and empower the subject matter experts to create forms. By choosing Apache Cassandra, a database that was resilient and powerful, Sundberg says “users didn’t have to talk about the database, quite frankly.”</p>
</div>
<div class="paragraph">
<p>This has enabled the Kinetic platform, to benefit one of the largest healthcare organizations in the Southeast US as a self-service portal to reduce the workload for the IT team. In 2021, the portal was able to track and handle 120,000 tickets and 40,000 incidents quickly, directing the relevant task to the right individual or internal team. In another example, the Technology division for Anne Arundel County Public Schools has been able to manage and track the workflows for 180,000 Chromebooks that are handed out to students. This IT team also manages and tracks all the devices used by 12,000 teachers.</p>
</div>
<div class="paragraph">
<p>As Kinetic Data abstracts away the complex infrastructure, customers don’t realize they are using Apache Cassandra, but “they do know it’s always up; it’s always fast, and it’s all these benefits you want the end-user to know about,” says Sundberg.</p>
</div>
</div>
<div class="sect2">
<h3 id="about-kinetic-data"><a class="anchor" href="#about-kinetic-data"></a>About Kinetic Data</h3>
<div class="paragraph">
<p>Founded in 1998 and headquartered in St. Paul, Minnesota, Kinetic Data is an enterprise software company with its workflow platform that connects human and technology interactions across systems of record at scale. Built on the core tenets of security, scalability, flexibility, and safety, Enterprise organizations are empowered to transform their entire organization with highly efficient, automated workflows that reduces labor cost, cost of service delivery, and risk.</p>
</div>
</div>
</div>
</div>
                </div>
            </div>
        </div>
        <footer class="grad grad--two flex-center pb-xlarge">
    <div class="inner text-center z2 relative">
        <h2 class="white py-small">Get started with Cassandra, fast.</h2>
        <a id="footer-cta" href="/_/quickstart.html" class="btn btn--filled ma-medium">Quickstart Guide</a>
    </div>
    <div class="inner flex flex-distribute-items mt-xlarge z2 relative">
        <div class="col-2">
            <div id="footer-logo" class="logo logo--footer mb-medium"><img src="../../assets/img/logo-white-r.png" alt="Cassandra Logo"></div>
            <p>Apache Cassandra<img src="../../assets/img/registered.svg" alt="®" style="width:18px;"> powers mission-critical deployments with improved performance and unparalleled levels of scale in the cloud.</p>
            <div class="footer-social-icons">
                <a href="https://twitter.com/cassandra?lang=en" target="_blank"><img src="../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
                <a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank"><img src="../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
                 <a href="https://www.youtube.com/c/PlanetCassandra" target="_blank"><img src="../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
            </div>
        </div>
        <div class="col-2 flex flex-center">
            <ul class="columns-2">
                <li class="mb-small"><a href="/">Home</a></li>
                <li class="mb-small"><a href="/_/cassandra-basics.html">Cassandra Basics</a></li>
                <li class="mb-small"><a href="/_/quickstart.html">Quickstart</a></li>
                <li class="mb-small"><a href="/_/ecosystem.html">Ecosystem</a></li>
                <li class="mb-small"><a href="/doc/latest/">Documentation</a></li>
                <li class="mb-small"><a href="/_/community.html">Community</a></li>
                <li class="mb-small"><a href="/_/case-studies.html">Case Studies</a></li>
                <li class="mb-small"><a href="/_/resources.html">Resources</a></li>
                <li class="mb-small"><a href="/_/blog.html">Blog</a></li>
            </ul>
        </div>
    </div>
</footer>
<div class="lower-footer bg-white pa-medium">
    <div class="flex flex-row flex-vert-center">
        <div class="pr-medium"><img src="../../assets/img//feather-small.png" alt="ASF" width="20"></div>
        <div class="pr-medium"><a href="http://www.apache.org/" target="_blank">Foundation</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/events/current-event.html" target="_blank">Events</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/licenses/" target="_blank">License</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/security" target="_blank">Security</a></div>
        <div class="pr-medium"><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></div>
    </div>
    <p class="my-medium">© 2009-<script>document.write(new Date().getFullYear())</script> <a href="https://apache.org" target="_blank">The Apache Software Foundation</a> under the terms of the Apache License 2.0.  Apache, the Apache feather logo, Apache Cassandra, Cassandra, and the Cassandra logo, are either registered trademarks or trademarks of The Apache Software Foundation.</p>
</div>
<div id="fade" class="hidden"></div>
<div id="modal" class="hidden">
  <div id="close-modal" class="cursor-pointer"><svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></div>
  <div id="mod-content" class="vid-mod-content resp-container"></div>
</div>
<script>
jQuery(function(){
    var windowW = $(window).width();
    $(document)
    .on('click','.mobile-nav-icon',function(){
        $('.main-nav').fadeIn();
    })
    .on('click','.main-nav',function(){
        if(windowW <= 1000){
            $(this).fadeOut();
        }
    })
    .on('click','#version-toggle',function(){
      $(this).toggleClass('active');
      $(this).next().fadeToggle();
    })
    .on('click','#mobile-docs-nav-burger', function(){
      $(this).toggleClass('active');
      $('.docs-nav').toggleClass('active');
    });
    var url = window.location.pathname;
    var isQuickstart = url.includes('quickstart.html');
    if(isQuickstart){
      var footerCTA = document.getElementById('footer-cta');
      footerCTA.innerHTML = 'Get latest updates';
      footerCTA.setAttribute('href', '/_/blog.html');
    }
});
</script>
      </div>
  </body>
<script>
jQuery(function(){
    
});
</script>
</html>
