You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dm...@apache.org on 2020/03/11 22:11:46 UTC

svn commit: r1875105 [4/7] - in /ignite/site/branches/ignite-redisign: ./ arch/ community/ css/ features/ scss/ use-cases/

Modified: ignite/site/branches/ignite-redisign/features/sql.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/features/sql.html?rev=1875105&r1=1875104&r2=1875105&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/features/sql.html (original)
+++ ignite/site/branches/ignite-redisign/features/sql.html Wed Mar 11 22:11:46 2020
@@ -48,105 +48,100 @@ under the License.
     <!--#include virtual="/includes/sh.html" -->
 </head>
 <body>
-<div id="wrapper">
-    <!--#include virtual="/includes/header.html" -->
-
-
-    <main id="main" role="main" class="container">
-        <section id="sql-queries" class="page-section">
-            <h1 class="first">Distributed ANSI SQL With JOINs</h1>
-            <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 20px 0;">
-                <div class="col-sm-6 col-md-7 col-xs-12" style="padding-left:0;">
-                    <p>
-                        Apache Ignite comes with ANSI-99 compliant, horizontally scalable, and fault-tolerant SQL engine
-                        allowing you to interact with Ignite as with a regular SQL database using JDBC, ODBC drivers, or
-                        native SQL APIs available for Java, C#, C++, Python, and other programming languages.
-
-                    </p>
-                    <p>
-                        Ignite supports all DML commands, including SELECT, UPDATE, INSERT, and DELETE queries as well
-                        as a subset of DDL commands relevant for distributed systems.
-                    </p>
-                </div>
-
-                <div class="col-sm-6 col-md-5 col-xs-12" style="padding-right:0">
-                    <img class="img-responsive" alt="SQL Database diagram" src="/images/sql_database.png" width="400px" style="float:right;"/>
-                </div>
-            </div>
-            <div class="page-heading">SQL Joins</div>
+<!--#include virtual="/includes/header.html" -->
+<article>
+  <div class="container">
+      <h1>Distributed ANSI SQL <strong>With JOINs</strong></h1>
+		
+      <p>
+          Apache Ignite comes with ANSI-99 compliant, horizontally scalable, and fault-tolerant SQL engine.
+          That allows you to interact with Ignite as with a regular SQL database using JDBC, ODBC drivers,
+          or native SQL APIs available for Java, C#, C++, Python, and other programming languages.
+      </p>
+      <p>
+          Ignite supports all DML commands, including SELECT, UPDATE, INSERT, and DELETE
+          queries as well as a subset of DDL commands relevant for distributed systems.
+      </p>
+          
+      <img class="img-responsive diagram-right" alt="SQL Database diagram" src="/images/sql_database.png" />
+      
+      <h2>SQL Joins</h2>
             <p>
                 Ignite fully supports distributed joins for advanced querying needs. A distributed join is a SQL statement
                 with a join clause that combines two or more tables. If the tables are joined on the partitioning column
                 (affinity or primary key), the join is called a co-located join. Otherwise, if the tables were not
-                co-located initially, then Ignite does the join in a non-colocated fashion. Co-located joins avoid data
-                shuffling between nodes and minimize network usage, thus, performing much faster than a non-colocated
-                counterpart.
-            </p>
-
-            <div class="page-heading">SQL and In-Memory Mode</div>
-            <p>
-                Apache Ignite can function in a pure in-memory mode when all the data and indexes are located solely in
-                memory. In this mode, Ignite SQL shows the highest performance since all the data is served from memory
-                wih no usage of the disk tier at all.
-            </p>
-
-            <div class="page-heading">SQL and Native Persistence</div>
+                co-located initially, then Ignite does the join in a non-colocated fashion. The co-located joins avoid
+                data shuffling between nodes, minimizes network usage, thus, performing much faster than a non
+                co-located counterpart.
+            </p>
+			
+            <h2>SQL and In-Memory Mode</h2>
+            <p>
+                Apache Ignite can function in a pure in-memory mode when all data and indexes are located solely in memory.
+                In this mode, Ignite SQL shows the highest performance as long as all the data is served from memory,
+                and there is no need to update the disk tier.
+            </p>					
+		
+            <h2>SQL and Native Persistence</h2>
             <p>
                 In this mode, Ignite persists 100% of data and indexes in the native persistence while caching as much
                 as possible in memory. Ignite SQL engine does not require to cache an entire data set in memory to
-                operate correctly. If the engine finds that a record is not cached, then it will read the record from
-                disk. Your application only executes SQL queries, and Ignite gets the records from both memory and disk
+                operate correctly. If the engine finds that any record is not cached, then it will be taken from disk.
+                Your application merely executes SQL queries, and Ignite gets the records from both memory and disk
                 automatically.
             </p>
             <p>
-                On cluster restarts, Ignite reads data and indexes from disk, eliminating the need for memory warm-up,
-                which significantly decreases the time of any potential downtimes.
-
+                On cluster restarts, Ignite reads data and indexes from disk, eliminating the need for memory warm-up.
+                That significantly decreases the time of any potential downtimes.
+            </p>					
+			
+	            <h2>SQL and 3rd Party Databases</h2>
+            <p>
+                Ignite can be used as a caching layer for external databases such as RDBMS, NoSQL, or Hadoop.
+                In this mode, the Ignite SQL engine requires to cache all the data needed for SQL queries in memory as
+                long as the engine does not support federated queries at the moment.
             </p>
 
-            <div class="page-heading">SQL and 3rd Party Databases</div>
             <p>
-                Ignite can be used as a caching layer for external databases such as RDBMS, NoSQL, or Hadoop. In this mode,
-                the Ignite SQL engine requires caching all the data needed for SQL queries in memory since the engine
-                currently does not support federated queries.
-            </p>
-
-            <p>
-                If federated queries between Ignite and an external database are required, then you can consider Ignite
-                integration for Spark, where the DataFrames API can join the data stored in Ignite and other systems.
-            </p>
-
-            <div class="page-heading">Learn More</div>
-            <p>
-                <a href="https://apacheignite-sql.readme.io/docs/how-ignite-sql-works" target="docs">
-                    <b>Ignite SQL implementation details <i class="fa fa-angle-double-right"></i></b>
-                </a>
-            </p>
-            <p>
-                <a href="https://apacheignite-sql.readme.io/docs/distributed-joins" target="docs">
-                    <b>Distributed JOINs <i class="fa fa-angle-double-right"></i></b>
-                </a>
-            </p>
-            <p>
-                <a href="https://apacheignite-sql.readme.io/docs/sql-reference-overview" target="docs">
-                    <b>SQL Reference <i class="fa fa-angle-double-right"></i></b>
-                </a>
-            </p>
-            <p>
-                <a href="/use-cases/spark-acceleration.html">
-                    <b>Apache Ignite and Spark <i class="fa fa-angle-double-right"></i></b>
-                </a>
-            </p>
-            <p>
-                <a href="/arch/multi-tier-storage.html">
-                    <b>Multi-Tier Storage <i class="fa fa-angle-double-right"></i></b>
-                </a>
-            </p>
-        </section>
-    </main>
-
-    <!--#include virtual="/includes/footer.html" -->
+                If federate queries between Ignite and an external database are required, then you can consider Ignite
+                integration for Spark -- DataFrames API can join data stored in Ignite and other systems.
+            </p>				
+			
+      <div class="jumbotron jumbotron-fluid">
+        <div class="container">
+          <div class="display-6 title">Learn More</div>
+          <hr class="my-4">
+          <div class="row">
+            <div class="col-6 col-xs-12">
+              <ul>
+                <li>
+                  <p><a href="https://apacheignite-sql.readme.io/docs/how-ignite-sql-works" target="docs">Ignite SQL implementation details <i class="fa fa-angle-double-right"></i></a></p>
+                </li>
+                <li>
+                  <p><a href="https://apacheignite-sql.readme.io/docs/distributed-joins" target="docs">Distributed JOINs <i class="fa fa-angle-double-right"></i></a></p>
+                </li>
+                <li>
+                  <p><a href="https://apacheignite-sql.readme.io/docs/sql-reference-overview" target="docs">SQL Reference <i class="fa fa-angle-double-right"></i></a></p>
+                </li>
+              </ul>
+            </div>
+            <div class="col-6 col-xs-12">
+              <ul>
+                <li>
+                  <p><a href="/use-cases/spark-acceleration.html">Apache Ignite and Spark <i class="fa fa-angle-double-right"></i></a></p>
+                </li>
+                <li>
+                  <p><a href="/arch/multi-tier-storage.html">Multi-Tier Storage <i class="fa fa-angle-double-right"></i></a></p>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </div>
+      </div>
+    
 </div>
+</article>
+<!--#include virtual="/includes/footer.html" -->
 <!--#include virtual="/includes/scripts.html" -->
 </body>
 </html>

Modified: ignite/site/branches/ignite-redisign/features/streaming.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/features/streaming.html?rev=1875105&r1=1875104&r2=1875105&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/features/streaming.html (original)
+++ ignite/site/branches/ignite-redisign/features/streaming.html Wed Mar 11 22:11:46 2020
@@ -45,312 +45,281 @@ under the License.
     <!--#include virtual="/includes/sh.html" -->
 </head>
 <body>
-<div id="wrapper">
-    <!--#include virtual="/includes/header.html" -->
-
-    <main id="main" role="main" class="container">
-        <section id="streaming" class="page-section">
-            <h1 class="first">Data Loading and Streaming</h1>
-            <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 20px 0;">
-                <div class="col-sm-6 col-md-6 col-xs-12" style="padding-left:0; padding-right:0">
-                    <p>
-                        Ignite data loading and streaming capabilities allow ingesting large finite as well as
-                        never-ending volumes of data in a scalable and fault-tolerant way into the cluster.
-                        The rate at which data can be injected into Ignite is very high and easily exceeds millions
-                        of events per second on a moderately sized cluster.
-                    </p>
-                    <p>
-                        Apache Ignite <a href="https://apacheignite-mix.readme.io/docs/overview" target="_blank" rel="noopener">
-                        integrates</a> with major streaming technologies and frameworks such as Kafka, Camel,
-                        Storm or JMS to bring even more advanced streaming capabilities to Ignite-based architectures.
-                    </p>
-                </div>
-
-                <div class="col-sm-6 col-md-6 col-xs-12" style="padding-right:0">
-                    <img class="img-responsive" src="/images/ignite-stream-query.png" style="float:right;"/>
-                </div>
+<!--#include virtual="/includes/header.html" -->
+<article>
+    <div class="container">
+     
+        <h1 >Data Loading and <strong>Streaming</strong></h1>
+                
+        <img class="img-responsive diagram-right" src="/images/ignite-stream-query.png" />
+        <p>
+            Ignite data loading and streaming capabilities allow ingesting large finite as well as
+            never-ending volumes of data in a scalable and fault-tolerant way into the cluster.
+            The rate at which data can be injected into Ignite is very high and easily exceeds millions
+            of events per second on a moderately sized cluster.
+        </p>
+        <p>
+            Apache Ignite <a href="https://apacheignite-mix.readme.io/docs/overview" target="_blank" rel="noopener">
+            integrates</a> with major streaming technologies and frameworks such as Kafka, Camel,
+            Storm or JMS to bring even more advanced streaming capabilities to Ignite-based architectures.
+        </p>
+            
+                    
+        <h2>Data Loading</h2>
+        <p>
+            Ignite provides several <a href="https://apacheignite.readme.io/docs/data-loading" target="_blank" rel="noopener">
+            techniques</a> for initial data loading. For instance, Ignite streaming APIs are a good
+            choice for clusters with Ignite native persistence enabled, while the clusters that persist
+            data in a 3rd party store can connect to it directly with <code>CacheStore</code> API.
+        </p>
+
+        <h2>How Ignite Streaming Works:</h2>
+        <ol class="page-list">
+            <li>Clients inject streams of data into Ignite.</li>
+            <li>Data is automatically partitioned between Ignite data nodes.</li>
+            <li>Data is concurrently processed across all cluster nodes.</li>
+            <li>Clients perform concurrent <code>SQL queries</code> on the streamed data.</li>
+            <li>Clients subscribe to <code>continuous queries</code> as data changes.</li>
+        </ol>
+    
+            
+        <h2>Code Examples:</h2>
+        <!-- Nav tabs -->
+        <ul id="datagrid-examples" class="nav nav-tabs">
+            <li ><a class="active" href="#streaming-data" role="tab" data-toggle="tab">Stream Data</a></li>
+            <li><a href="#streaming-transformer" role="tab" data-toggle="tab">Transform Data</a></li>
+            
+        </ul>
+
+        <!-- Tab panes -->
+        <div class="tab-content">
+            <div role="tabpanel" class="tab-pane active" id="streaming-data">
+                <pre class="brush:java">
+                    // Get the data streamer reference and stream data.
+                    try (IgniteDataStreamer&lt;Integer, String&gt; stmr = ignite.dataStreamer("myStreamCache")) {
+                        // Stream entries.
+                        for (int i = 0; i &lt; 100000; i++)
+                            stmr.addData(i, Integer.toString(i));
+                    }
+                </pre>
             </div>
-
-            <div class="page-heading">Data Loading</div>
-            <p>
-                Ignite provides several <a href="https://apacheignite.readme.io/docs/data-loading" target="_blank" rel="noopener">
-                techniques</a> for initial data loading. For instance, Ignite streaming APIs are a good
-                choice for clusters with Ignite native persistence enabled, while the clusters that persist
-                data in a 3rd party store can connect to it directly with <code>CacheStore</code> API.
-            </p>
-
-            <div class="page-heading">How Ignite Streaming Works:</div>
-            <ol class="page-list">
-                <li>Clients inject streams of data into Ignite.</li>
-                <li>Data is automatically partitioned between Ignite data nodes.</li>
-                <li>Data is concurrently processed across all cluster nodes.</li>
-                <li>Clients perform concurrent <code>SQL queries</code> on the streamed data.</li>
-                <li>Clients subscribe to <code>continuous queries</code> as data changes.</li>
-            </ol>
-
-            <div class="code-examples">
-                <div class="page-heading">Code Examples:</div>
-                <!-- Nav tabs -->
-                <ul id="datagrid-examples" class="nav nav-tabs">
-                    <li class="active"><a href="#streaming-data" role="tab" data-toggle="tab">Stream Data</a></li>
-                    <li><a href="#streaming-transformer" role="tab" data-toggle="tab">Transform Data</a></li>
-                    <!--<li><a href="#streaming-query" role="tab" data-toggle="tab">Query Sliding Windows</a></li>-->
-                </ul>
-
-                <!-- Tab panes -->
-                <div class="tab-content">
-                    <div role="tabpanel" class="tab-pane active" id="streaming-data">
-                        <pre class="brush:java">
-                            // Get the data streamer reference and stream data.
-                            try (IgniteDataStreamer&lt;Integer, String&gt; stmr = ignite.dataStreamer("myStreamCache")) {
-                                // Stream entries.
-                                for (int i = 0; i &lt; 100000; i++)
-                                    stmr.addData(i, Integer.toString(i));
-                            }
-                        </pre>
-                    </div>
-                    <div role="tabpanel" class="tab-pane" id="streaming-transformer">
-                        <pre class="brush:java">
-                            CacheConfiguration cfg = new CacheConfiguration("wordCountCache");
-
-                            IgniteCache&lt;Integer, Long&gt; stmCache = ignite.getOrCreateCache(cfg);
-
-                            try (IgniteDataStreamer&lt;String, Long&gt; stmr = ignite.dataStreamer(stmCache.getName())) {
-                              // Allow data updates.
-                              stmr.allowOverwrite(true);
-
-                              // Configure data transformation to count instances of the same word.
-                              stmr.receiver(StreamTransformer.from((e, arg) -> {
-                                // Get current count.
-                                Long val = e.getValue();
-
-                                // Increment count by 1.
-                                e.setValue(val == null ? 1L : val + 1);
-
-                                return null;
-                              }));
-
-                              // Stream words into the streamer cache.
-                              for (String word : text)
-                                stmr.addData(word, 1L);
-                            }
-                        </pre>
-                    </div>
-                    <!--<div role="tabpanel" class="tab-pane" id="streaming-query">-->
-                        <!--<pre class="brush:java">-->
-                            <!--CacheConfiguration&lt;String, Instrument&gt; cfg = new CacheConfiguration<>("instCache");-->
-
-                            <!--// LRU window holding 1,000,000 entries.-->
-                            <!--cfg.setEvictionPolicyFactory(new LruEvictionPolicy(1_000_000));-->
-
-                            <!--// Index some fields for querying portfolio positions.-->
-                            <!--cfg.setIndexedTypes(String.class, Instrument.class);-->
-
-                            <!--// Get a handle on the cache (create it if necessary).-->
-                            <!--IgniteCache&lt;String, Instrument&lt; instCache = ignite.getOrCreateCache(cfg);-->
-
-                            <!--// Select top 3 best performing instruments from the sliding window.-->
-                            <!--SqlFieldsQuery top3qry = new SqlFieldsQuery(-->
-                              <!--"select symbol, (latestPrice - openPrice) as change "-->
-                                <!--+ "from Instrument "-->
-                                <!--+ "order by change "-->
-                                <!--+ "desc limit 3"-->
-                            <!--);-->
-
-                            <!--// List of rows. Every row is represented as a List as well.-->
-                            <!--List&lt;List&lt;?&gt;&gt; top3 = instCache.query(top3qry).getAll();                        </pre>-->
-                    <!--</div>-->
-                </div>
+            <div role="tabpanel" class="tab-pane" id="streaming-transformer">
+                <pre class="brush:java">
+                    CacheConfiguration cfg = new CacheConfiguration("wordCountCache");
+
+                    IgniteCache&lt;Integer, Long&gt; stmCache = ignite.getOrCreateCache(cfg);
+
+                    try (IgniteDataStreamer&lt;String, Long&gt; stmr = ignite.dataStreamer(stmCache.getName())) {
+                        // Allow data updates.
+                        stmr.allowOverwrite(true);
+
+                        // Configure data transformation to count instances of the same word.
+                        stmr.receiver(StreamTransformer.from((e, arg) -> {
+                        // Get current count.
+                        Long val = e.getValue();
+
+                        // Increment count by 1.
+                        e.setValue(val == null ? 1L : val + 1);
+
+                        return null;
+                        }));
+
+                        // Stream words into the streamer cache.
+                        for (String word : text)
+                        stmr.addData(word, 1L);
+                    }
+                </pre>
             </div>
-            <div class="page-heading">GitHub Examples:</div>
-            <p>
-                Also see <a href="https://github.com/apache/ignite/blob/master/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheContinuousQueryExample.java" target="github">continuous queries</a>,
-                <a href="https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/streaming/wordcount" target="github">word count</a>,
-                and <a href="https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/streaming" target="github">other streaming examples</a> available on GitHub.
+        </div>
+            
+        <h2>GitHub Examples:</h2>
+            <p>Also see
+                <a href="https://github.com/apache/ignite/blob/master/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheContinuousQueryExample.java" target="github">continuous queries</a>,
+    <a href="https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/streaming/wordcount" target="github">word count</a>,
+    and <a href="https://github.com/apache/ignite/tree/master/examples/src/main/java/org/apache/ignite/examples/streaming" target="github">other streaming examples</a> available on GitHub.
             </p>
-        </section>
-        <section id="key-features" class="page-section">
-            <h2>Streaming Features</h2>
-            <table class="formatted" name="Streaming Features">
-                <thead>
-                    <tr>
-                        <th width="35%" class="left">Feature</th>
-                        <th>Description</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td class="left">Data Streamers</td>
-                        <td>
-                            <p>
-                                Data streamers are defined by <code>IgniteDataStreamer</code> API and are built to inject large
-                                amounts of continuous streams of data into Ignite stream caches. Data streamers are
-                                built in a scalable and fault-tolerant fashion and provide <b>at-least-once-guarantee</b>
-                                semantics for all the data streamed into Ignite.
-                            </p>
-                            <div class="page-links">
-                                <a href="http://apacheignite.readme.io/docs/data-streamers" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Data Loading</td>
-                        <td>
-                            <p>
-                                Data streamers can be used to load large amounts of data into Ignite cahes.
-                                They can be used for initial data loading from a 3rd party database or another source.
-                            </p>
-                            <div class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/data-loading" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Collocated Processing</td>
-                        <td>
-                            <p>
-                                For cases when you need to execute some custom logic instead of just adding new data,
-                                you can take advantage of <code>StreamReceiver</code> API.
-                            </p>
-                            <p>
-                                Stream receivers allow you to react to the streamed data in collocated fashion,
-                                directly on the nodes where it will be cached. You can change the data or add any
-                                custom pre-processing logic to it, before putting the data into cache.
-                            </p>
-                            <div class="page-links">
-                                <a href="http://apacheignite.readme.io/docs/data-streamers#streamreceiver" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Continuous Queries</td>
-                        <td>
-                            <p>
-                                Continuous queries are useful for cases when you want to execute a query and then
-                                continue to get notified about the data changes that fall into your query filter.
-                            </p>
-                            <div class="page-links">
-                                <a href="http://apacheignite.readme.io/docs/continuous-queries" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">JMS Data Streamer</td>
-                        <td>
-                            <p>
-                                Ignite JMS Data Streamer consumes messages from JMS brokers and inserts them into Ignite caches.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/jms-data-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Apache Flume Sink</td>
-                        <td>
-                            <p>
-                                IgniteSink is a Flume sink that extracts events from an associated Flume channel and injects into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/flume-data-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">MQTT Streamer</td>
-                        <td>
-                            <p>
-                                Ignite MQTT Streamer consumes messages from a MQTT topic and feeds transformed key-value pairs into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/mqtt-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Twitter Streamer</td>
-                        <td>
-                            <p>
-                                Ignite Twitter Streamer consumes messages from a Twitter Streaming API and inserts them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/twitter-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Apache Kafka Streamer</td>
-                        <td>
-                            <p>
-                                Ignite Kafka Data Streamer consumes messages for a given Kafka Topic from Kafka Broker and inserts them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/kafka-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Apache Camel streamer</td>
-                        <td>
-                            <p>
-                                Ignite Camel streamer consumes messages from an Apache Camel consumer endpoint and feeds them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/camel-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Apache Storm Streamer</td>
-                        <td>
-                            <p>
-                                Ignite Storm Streamer consumes messages from an Apache Storm consumer endpoint and feeds them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/storm-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Apache Flink Streamer</td>
-                        <td>
-                            <p>
-                                Ignite Flink Streamer consumes messages from an Apache Flink consumer endpoint and feeds them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/flink-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Apache RocketMQ Streamer</td>
-                        <td>
-                            <p>
-                                Ignite RocketMQ Streamer consumes messages from an Apache RocketMQ consumer endpoint and feeds them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/rocketmq-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">ZeroMQ Streamer</td>
-                        <td>
-                            <p>
-                                Ignite ZeroMQ Streamer consumes messages from a ZeroMQ consumer endpoint and feeds them into an Ignite cache.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/zeromq-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-        </section>
-    </main>
+		
+        <h2>Streaming Features</h2>
 
-    <!--#include virtual="/includes/footer.html" -->
+        <table class="table table-bordered table-striped" name="Streaming Features">
+        <thead>
+            <tr>
+                <th width="35%" class="left">Feature</th>
+                <th>Description</th>
+            </tr>
+        </thead>
+        <tbody>
+            <tr>
+                <td class="left">Data Streamers</td>
+                <td>
+                    <p>
+                        Data streamers are defined by <code>IgniteDataStreamer</code> API and are built to inject large
+                        amounts of continuous streams of data into Ignite stream caches. Data streamers are
+                        built in a scalable and fault-tolerant fashion and provide <b>at-least-once-guarantee</b>
+                        semantics for all the data streamed into Ignite.
+                    </p>
+                    <div class="page-links">
+                        <a href="http://apacheignite.readme.io/docs/data-streamers" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Data Loading</td>
+                <td>
+                    <p>
+                        Data streamers can be used to load large amounts of data into Ignite cahes.
+                        They can be used for initial data loading from a 3rd party database or another source.
+                    </p>
+                    <div class="page-links">
+                        <a href="https://apacheignite.readme.io/docs/data-loading" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Collocated Processing</td>
+                <td>
+                    <p>
+                        For cases when you need to execute some custom logic instead of just adding new data,
+                        you can take advantage of <code>StreamReceiver</code> API.
+                    </p>
+                    <p>
+                        Stream receivers allow you to react to the streamed data in collocated fashion,
+                        directly on the nodes where it will be cached. You can change the data or add any
+                        custom pre-processing logic to it, before putting the data into cache.
+                    </p>
+                    <div class="page-links">
+                        <a href="http://apacheignite.readme.io/docs/data-streamers#streamreceiver" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Continuous Queries</td>
+                <td>
+                    <p>
+                        Continuous queries are useful for cases when you want to execute a query and then
+                        continue to get notified about the data changes that fall into your query filter.
+                    </p>
+                    <div class="page-links">
+                        <a href="http://apacheignite.readme.io/docs/continuous-queries" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">JMS Data Streamer</td>
+                <td>
+                    <p>
+                        Ignite JMS Data Streamer consumes messages from JMS brokers and inserts them into Ignite caches.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/jms-data-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Apache Flume Sink</td>
+                <td>
+                    <p>
+                        IgniteSink is a Flume sink that extracts events from an associated Flume channel and injects into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/flume-data-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">MQTT Streamer</td>
+                <td>
+                    <p>
+                        Ignite MQTT Streamer consumes messages from a MQTT topic and feeds transformed key-value pairs into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/mqtt-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Twitter Streamer</td>
+                <td>
+                    <p>
+                        Ignite Twitter Streamer consumes messages from a Twitter Streaming API and inserts them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/twitter-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Apache Kafka Streamer</td>
+                <td>
+                    <p>
+                        Ignite Kafka Data Streamer consumes messages for a given Kafka Topic from Kafka Broker and inserts them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/kafka-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Apache Camel streamer</td>
+                <td>
+                    <p>
+                        Ignite Camel streamer consumes messages from an Apache Camel consumer endpoint and feeds them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/camel-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Apache Storm Streamer</td>
+                <td>
+                    <p>
+                        Ignite Storm Streamer consumes messages from an Apache Storm consumer endpoint and feeds them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/storm-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Apache Flink Streamer</td>
+                <td>
+                    <p>
+                        Ignite Flink Streamer consumes messages from an Apache Flink consumer endpoint and feeds them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/flink-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">Apache RocketMQ Streamer</td>
+                <td>
+                    <p>
+                        Ignite RocketMQ Streamer consumes messages from an Apache RocketMQ consumer endpoint and feeds them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/rocketmq-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td class="left">ZeroMQ Streamer</td>
+                <td>
+                    <p>
+                        Ignite ZeroMQ Streamer consumes messages from a ZeroMQ consumer endpoint and feeds them into an Ignite cache.
+                    </p>
+                    <div  class="page-links">
+                        <a href="https://apacheignite-mix.readme.io/docs/zeromq-streamer" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
+                    </div>
+                </td>
+            </tr>
+        </tbody>
+    </table>
 </div>
+</article>
+    <!--#include virtual="/includes/footer.html" -->
+
 <!--#include virtual="/includes/scripts.html" -->
 </body>
 </html>

Modified: ignite/site/branches/ignite-redisign/features/tensorflow.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/features/tensorflow.html?rev=1875105&r1=1875104&r2=1875105&view=diff
==============================================================================
Binary files - no diff available.

Modified: ignite/site/branches/ignite-redisign/features/transactions.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/features/transactions.html?rev=1875105&r1=1875104&r2=1875105&view=diff
==============================================================================
Binary files - no diff available.

Modified: ignite/site/branches/ignite-redisign/meetup-groups.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/meetup-groups.html?rev=1875105&r1=1875104&r2=1875105&view=diff
==============================================================================
Binary files - no diff available.