extend ../_components/base.pug

block pagetitle
    title Digital Integration Hub - Apache Ignite
    meta(name="description", content="Apache Ignite functions as a low-latency and shared store of the digital integration hub architecture that caches and persists data sets scattered across many disjointed back-end databases and systems.")
    link(rel="canonical", href="https://ignite.apache.org/use-cases/digital-integration-hub.html")

    meta(property="og:title", content="Digital Integration Hub - Apache Ignite")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/use-cases/digital-integration-hub.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="Apache Ignite functions as a low-latency and shared store of the digital integration hub architecture that caches and persists data sets scattered across many disjointed back-end databases and systems.") 

block css 
    link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/digital-hub.css?ver=" + config.version)



block main
    - global.pageHref = "usecases"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main.innerhero__mainhub
                h1.h1.innerhero__h1 Digital Integration Hub
                     <br> 
                     span.with-apache  With Apache Ignite
                .innerhero__descr.pt-2.h5.
                    Build new types of applications that require real-time access<br> to data scattered across disparate data sources
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
            img.innerhero__pic.innerhero__pic--hub(src="/img/usecases/digital-hub/hero-image.svg", alt="hero-image")
    // /.innerhero

  
    section.hub1 
       .container
          h2.compute2__h2 Digital Integration Hub Overview 
          .hub1__block.flexi
            .hub1__info
              h3.h5.hub1__title What is a digital integration hub?
              p.hub1__text A digital integration hub (DIH) is an advanced platform architecture that aggregates multiple back-end systems and databases into a low-latency and shared data store. 
              p.pt-1 The store caches and persists data sets scattered across many disjointed back-end databases and makes them available to your applications through high-performance APIs.
              h3.h5.hub1__title.hub1__titleend How digital integration hub works
              p.hub1__text Applications access Ignite via an API service layer and experience substantial performance improvements by requesting data from only the Ignite distributed store. 
            img.hub1__image(src="/img/usecases/digital-hub/image.svg", alt="image")
    // /.hub1 
    
    
    section.compute2
     .container
       h2.compute2__h2 Benefits Of Using Apache Ignite as a Digital Integration Hub
       .compute2__grid.flexi.hub2__grid 
            .compute2item.hub2item
              .compute2-points__item.fz20
              .compute2item__block
                h3.fz20.compute2item__title Advanced architecture that aggregates data<br> from multiple back-end data sources
                p.compute2__text.hub2__text No need to clutter the applications with logic accessing numerous data stores.
          
            .compute2item.hub2item
              .compute2-points__item.fz20
              .compute2item__block
                h3.fz20.compute2item__title Unified data access layer for new types<br> of applications and services
                p.compute2__text.hub2__text Have applications accessing a single low-latency store for hybrid operations.
                
            
    // /.compute2

    section.hub3 
      .container 
          h2.h4 Digital Integration Hub Synchronization Techniques
          p.hub3__subtext Ignite, as a high-performance data store, can be synchronized with the back-end databases via:
          .hub3__parts.flexi
            .hub3__part.flexi
              .compute2-points__item.fz20 
              .hub3__item Streaming
            .hub3__part.flexi 
                 .compute2-points__item.fz20 
                 .hub3__item Event-based
            .hub3__part.flexi
               .compute2-points__item.fz20 
               .hub3__item Change data capture (CDC)
            .hub3__part.flexi
                .compute2-points__item.fz20  
                .hub3__item And other techniques
          .hub3__blocks.flexi
             .hub3__block 
                 p.hub3__text <strong>For uni-directional synchronization</strong> between an Ignite cluster<br> and an external store, Ignite provides the CacheStore interface.
                 p.hub3__text.pt-1 This interface allows Ignite to write-through or write-behind all the changes to the backend-systems automatically.
                 p.hub3__text.pt-1 It also includes transactions. Ignite coordinates and commits a transaction across its in-memory cluster as well as an external transactional database.
             .hub3__block 
                 p.hub3__text <strong>For bi-directional synchronization,</strong> you can consider various streaming, CDC, and event-based technologies, such as: Kafka, Spark, Debezium and others.
    // /.hub3

    section.hub4
       .container 
           h2.hub4__h2.h4 Why Do Businesses Need<br> Digital Integration Hub Solutions?
           .hub4__blocks.flexi
             p.hub4__subtext.h5 To create new types of applications that can query data from disperse data sources.
             p.hub4__grey.h5 DIH is a contemporary way to complete this challenging task.
           .hub4__numbers.flexi
              .hub4__number
                .hub4__num.h5 01
                p.hub4__text Accumulate data from dozens of data sources
              .hub4__number
                .hub4__num.h5 02
                p.hub4__text.hub4__textall Keep data in a shared and low-latency store
              .hub4__number
                .hub4__num.h5 03
                p.hub4__text.hub4__textall Get data synchronized with back-end systems

    // /.hub4 

    section.hub5 
      .container
         h2.compute2__h2 Apache Ignite User Stories 
         .highcases__two
            .hub5__twowrap.flexi.pt-5
                .hub5__item
                    +powvideo(
                        "https://www.youtube.com/watch?v=EdFOKJIjRSg&feature=emb_imp_woyt",
                        "/img/usecases/digital-hub/one-video.png",
                        "",
                        "Fitness + In Memory Computing = Getting Ahead Of The Game",
                        "comvideo__txt--white hub5__video"
                    )
                    .h4.hub5__title 24 Hour Fitness 
                    p.hub5__text implements a Digital Integration Hub to offload API calls and enable new data access patterns.
                .hub5__item
                    +powvideo(
                        "https://www.youtube.com/watch?v=g1FcrOPXWyg",
                        "/img/usecases/digital-hub/two-video.png",
                        "",
                        "Using Ignite And JBoss Drools To Implement A Complex Event Processing Solution",
                        "comvideo__txt--black comvideo__txthub hub5__video"
                    )
                    .h4.hub5__title Вanco do Brasil 
                    p.hub5__text uses digital integration hub capabilities to develop the omnichannel Horus platform.
            .hub5__twowrap.flexi.pt-5
                .hub5__item
                    +powvideo(
                        "https://www.youtube.com/watch?v=3FFexcYIpmA",
                        "/img/usecases/digital-hub/three-video.png",
                        "",
                        "Leveraging In-Memory Compute Grids With Core Systems Of Record",
                        "comvideo__txt--white hub5__video"
                    )
                    .h4.hub5__title IBM
                    p.hub5__text launches the Z Digital Integration Hub built on Apache Ignite to enable real-time business agility for organizations.
              



    

   
    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                .h4.nativebotblock__title
                    img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Discover our quick start guide and build your first<br> application in 5-10 minutes
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/", target="_blank") Quick Start Guide
            article.nativebotblock.nativebotblock--learn
                .h4.nativebotblock__title
                    img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Run our digital integration hub sample application
                a.nativebotblock__link.arrowlink(href="https://github.com/GridGain-Demos/gridgain-dih-demo", target="_blank") Download The Sample Project






