You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluss.apache.org by ja...@apache.org on 2025/07/01 15:54:24 UTC

(fluss-website) branch asf-site updated: Deploy website - based on 98c2f47f2deb702bbdbdb163cff49c64daeb4af3

This is an automated email from the ASF dual-hosted git repository.

jark pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/fluss-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 3f3266c  Deploy website - based on 98c2f47f2deb702bbdbdb163cff49c64daeb4af3
3f3266c is described below

commit 3f3266c61b633e77d81f272c154271642065c1fb
Author: Jark Wu <ja...@apache.org>
AuthorDate: Tue Jul 1 23:53:30 2025 +0800

    Deploy website - based on 98c2f47f2deb702bbdbdb163cff49c64daeb4af3
---
 .DS_Store                                          |  Bin 0 -> 6148 bytes
 .asf.yaml                                          |   33 -
 .nojekyll                                          |    0
 404.html                                           |   27 +
 assets/css/styles.3ca55d09.css                     |    1 +
 ...ervability-b1c7c2103cbbdea2b24816ff0d6f914d.zip |  Bin 0 -> 15864 bytes
 .../announce-9ab924e071ec69fe7af8765954f9e966.png  |  Bin 0 -> 985074 bytes
 ...chitecture-b318beb94d717f94d6fe64b6303e79ab.png |  Bin 0 -> 1377946 bytes
 ...chitecture-c818a634d5e3360846b1ee299ff8df2e.png |  Bin 0 -> 331654 bytes
 ...background-0dd420cc202b6881c3fb4529c48f05a8.jpg |  Bin 0 -> 577329 bytes
 .../banner-5523bd3a3f5145b15e36c6bfb46796be.png    |  Bin 0 -> 683060 bytes
 .../banner-8cc4ea9295caf8358e14adf7a69beb01.png    |  Bin 0 -> 1597598 bytes
 .../banner-a09e6bac14dc2bee3dbc698347cb2d7f.png    |  Bin 0 -> 1334623 bytes
 ...lored_logo-570a85568f48c50f3ce9cdcfc57c8670.png |  Bin 0 -> 45184 bytes
 ...mpression1-0b666a1467321b28376db725380eda3c.jpg |  Bin 0 -> 76902 bytes
 ...mpression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg |  Bin 0 -> 79261 bytes
 ...mpression3-1f5de9eec6dd66394a793f26395a8f49.jpg |  Bin 0 -> 95320 bytes
 ...ganization-c63fd910ab4f86359e60234f855bbb74.png |  Bin 0 -> 270646 bytes
 ...ganization-e23ab4af273d5615b2da661138af36dd.png |  Bin 0 -> 279481 bytes
 ...delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg |  Bin 0 -> 187565 bytes
 ...t_overview-9108e1465903f9424cddd023a8301fb2.png |  Bin 0 -> 294231 bytes
 ...t_overview-e08f87d880eb2d10920b7f34ccbd9fa1.png |  Bin 0 -> 185222 bytes
 .../ff_os-2589690ef465b4d2c76c7861438ad18b.png     |  Bin 0 -> 2004705 bytes
 .../fluss-9455a8d9e5ebfcf475a714923665b1c7.png     |  Bin 0 -> 198902 bytes
 .../image1-6acb85f09ad799d93582a37896aabf30.png    |  Bin 0 -> 896951 bytes
 .../image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png    |  Bin 0 -> 2673225 bytes
 .../image3-37c9a30c044c5afbc6e35fa21c1793bc.png    |  Bin 0 -> 946276 bytes
 .../image4-c4082ae4730f49472a0414543ab5075a.png    |  Bin 0 -> 160229 bytes
 .../image5-7b6a1c8656ea141b803b8787e89d75df.png    |  Bin 0 -> 1460538 bytes
 .../image6-ec1c384b777aef0f617d3fcb08a5e39e.png    |  Bin 0 -> 418612 bytes
 .../image7-246c5eae97745ed3ae9872e84a86b134.png    |  Bin 0 -> 743331 bytes
 .../img1-163f1412a1ed7b661686302df5bf9edb.png      |  Bin 0 -> 162433 bytes
 .../img1-591c05a64a0e27a33a3ce5776391d92d.jpg      |  Bin 0 -> 539082 bytes
 .../img1-a29d423ce0b5f952b79ad2babb903cf5.jpg      |  Bin 0 -> 588711 bytes
 .../img2-846063bd092bc571aad305ae7253a190.jpg      |  Bin 0 -> 454768 bytes
 .../img2-86b0eb7b0f26884f8ead16dc4a8db648.png      |  Bin 0 -> 237274 bytes
 .../img2-d2d1a314768a1be3da0308e20851d3f3.jpg      |  Bin 0 -> 471126 bytes
 .../img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg      |  Bin 0 -> 526324 bytes
 .../img3-d0ea956fb83807118c4d522bdd7b30f4.png      |  Bin 0 -> 176746 bytes
 .../img3-f76df2882b217d4aa58efba2edae07d8.jpg      |  Bin 0 -> 405077 bytes
 .../img4-06aab50ae6bb5a5df5cc0e2658815c1f.png      |  Bin 0 -> 143425 bytes
 .../img4-5a57c638bb5dd478a86a9fcd1683734f.jpg      |  Bin 0 -> 493022 bytes
 .../img4-80846362d40e3239bfcd92216276b72d.jpg      |  Bin 0 -> 498533 bytes
 .../img5-36f56d95c22f50252c6a5caedbfed1d4.png      |  Bin 0 -> 168941 bytes
 .../img5-c1bedf1a8c60844ffd67f77f722157f9.jpg      |  Bin 0 -> 585648 bytes
 .../img5-e185731d5e249a6c80b962b77b5a16ad.jpg      |  Bin 0 -> 494481 bytes
 .../img6-3e455650eb36e97091211441c91b48ac.jpg      |  Bin 0 -> 378941 bytes
 .../img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg      |  Bin 0 -> 428351 bytes
 .../img6-5fdec641b3032d1c0f236cf990d914da.png      |  Bin 0 -> 120940 bytes
 .../img7-06886bca9797751895c82d707cb04b2d.jpg      |  Bin 0 -> 476875 bytes
 .../img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png      |  Bin 0 -> 129012 bytes
 .../img8-87cfb5887e9a49febaacd805de5216fe.jpg      |  Bin 0 -> 301463 bytes
 .../img9-fb689d41f612ef840508c4c20399822c.jpg      |  Bin 0 -> 610480 bytes
 ...o_overview-3a76e21a805e31d6bbf8e32563a22eb2.jpg |  Bin 0 -> 601260 bytes
 ...ng_service-4509c1a4b51c6821c0fe622cdda534e4.png |  Bin 0 -> 224178 bytes
 .../overview-255047ec7648f12c63660b40d1147c86.png  |  Bin 0 -> 153634 bytes
 ...ial_update-d529bf24211a76b31444bc7918872d59.png |  Bin 0 -> 119475 bytes
 .../read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg |  Bin 0 -> 103397 bytes
 ...treamhouse-5a2a3447bdfe72cc96b6ffa7e1eee39e.png |  Bin 0 -> 250947 bytes
 ...treamhouse-7b7f1260fc996ca89b50dbb9454584ab.png |  Bin 0 -> 243122 bytes
 ...treamhouse-8069e2c65c0cf01ec3db98818555089a.png |  Bin 0 -> 231195 bytes
 ...aming_join-761699227c5633f3575e2036b9e2ac61.png |  Bin 0 -> 130881 bytes
 ...ed-storage-07376e693fff78ba48fa2cb58a1aca67.png |  Bin 0 -> 146759 bytes
 ...ed-storage-7a1d1d0d91fa9b682bc80cb2713831a3.png |  Bin 0 -> 88982 bytes
 ...ed-storage-d4ec96e1b2955c7786ce217a19fe91b5.png |  Bin 0 -> 87502 bytes
 ...write_perf-25c062766e117f2c092a79653cf69a85.jpg |  Bin 0 -> 56630 bytes
 assets/js/0159e4b3.a1d1c71d.js                     |    1 +
 assets/js/019059a8.5b3a9fd0.js                     |    1 +
 assets/js/01a85c17.97728021.js                     |    1 +
 assets/js/02e30128.5892e7ee.js                     |    1 +
 assets/js/03d2caf8.e98329fa.js                     |    1 +
 assets/js/04b1c040.de2a0d3b.js                     |    1 +
 assets/js/05418681.6fc95e8e.js                     |    1 +
 assets/js/061ac8d1.3c858347.js                     |    1 +
 assets/js/063063cd.9ae7fa2b.js                     |    1 +
 assets/js/08af526d.be0d7b34.js                     |    1 +
 assets/js/0be3fcda.6327730a.js                     |    1 +
 assets/js/0cac70d5.5a20b7dd.js                     |    1 +
 assets/js/0d32679b.d98582c4.js                     |    1 +
 assets/js/0e04ef0e.c88e745d.js                     |    1 +
 assets/js/0e384e19.767d16de.js                     |    1 +
 assets/js/0f7eeec5.b8867f3d.js                     |    1 +
 assets/js/1099.428aa052.js                         |    1 +
 assets/js/11b43341.30e7d45b.js                     |    1 +
 assets/js/12079287.d61bbd17.js                     |    1 +
 assets/js/121d09c9.2b00b45d.js                     |    1 +
 assets/js/155d5593.743d5e64.js                     |    1 +
 assets/js/16fc9cae.cb8f075d.js                     |    1 +
 assets/js/17301193.a4fb931c.js                     |    1 +
 assets/js/17896441.b1dee11c.js                     |    1 +
 assets/js/18d3069c.e597f833.js                     |    1 +
 assets/js/1a4e3797.970f8127.js                     |    1 +
 assets/js/1b7d0bf1.477cbc4b.js                     |    1 +
 assets/js/1c857efc.7340880a.js                     |    1 +
 assets/js/1df93b7f.e67b8626.js                     |    1 +
 assets/js/1e7fbca2.72c47230.js                     |    1 +
 assets/js/1f391b9e.c4da6e31.js                     |    1 +
 assets/js/1f864603.9c08aa17.js                     |    1 +
 assets/js/2063472f.cada080b.js                     |    1 +
 assets/js/21ca1076.fdb09e15.js                     |    1 +
 assets/js/2237.c731bb05.js                         |    1 +
 assets/js/2282b9e6.ffe270ef.js                     |    1 +
 assets/js/2351863b.039e294e.js                     |    1 +
 assets/js/2362.71b193b1.js                         |    1 +
 assets/js/23b051ad.94430174.js                     |    1 +
 assets/js/2421e55a.81216e2f.js                     |    1 +
 assets/js/26fffdeb.6a066b8e.js                     |    1 +
 assets/js/27606b7d.9f9fe63f.js                     |    1 +
 assets/js/2f1b6021.a871f4dc.js                     |    1 +
 assets/js/2f611e4f.7b4fb968.js                     |    1 +
 assets/js/2fcb5bc8.9de2a3df.js                     |    1 +
 assets/js/30cd2908.f58c7c7f.js                     |    1 +
 assets/js/3383ef6c.2b552a69.js                     |    1 +
 assets/js/34b70234.f2e26d48.js                     |    1 +
 assets/js/3592d2f2.a2c747f9.js                     |    1 +
 assets/js/36994c47.caee855f.js                     |    1 +
 assets/js/36a7f4b5.0c490199.js                     |    1 +
 assets/js/3b7198be.9de7aa70.js                     |    1 +
 assets/js/3cd58720.8859d5d7.js                     |    1 +
 assets/js/3d4c8ad2.ec6fd162.js                     |    1 +
 assets/js/416.33bb0ef6.js                          |    1 +
 assets/js/41a78b98.c3d2e9f8.js                     |    1 +
 assets/js/42ce4c3f.5d8dc95f.js                     |    1 +
 assets/js/4334.59d2d31f.js                         |    1 +
 assets/js/458b5a55.1c0f6d2d.js                     |    1 +
 assets/js/47a7ac9f.7ddcdf88.js                     |    1 +
 assets/js/4a4f9f4e.079729e8.js                     |    1 +
 assets/js/4adbe500.508fb63a.js                     |    1 +
 assets/js/4b45c76d.48887489.js                     |    1 +
 assets/js/4c32ba49.829e6eea.js                     |    1 +
 assets/js/4d1f660e.fe58eb7b.js                     |    1 +
 assets/js/4f3276ea.822436cb.js                     |    1 +
 assets/js/5142b284.0055ce46.js                     |    1 +
 assets/js/53b982b6.ba7f6e03.js                     |    1 +
 assets/js/53e6ccc4.5193c29f.js                     |    1 +
 assets/js/53f4d36d.56a9ebab.js                     |    1 +
 assets/js/543bd0fc.57a6a8d0.js                     |    1 +
 assets/js/551ad8d7.52cd1fd1.js                     |    1 +
 assets/js/55bbe4da.1b8fb9ee.js                     |    1 +
 assets/js/570364a4.4772b91e.js                     |    1 +
 assets/js/578e9f93.35ce0d1d.js                     |    1 +
 assets/js/58eba370.2205147a.js                     |    1 +
 assets/js/59852834.2244b34d.js                     |    1 +
 assets/js/5ae8404d.2a206122.js                     |    1 +
 assets/js/5b51c36f.29d7209f.js                     |    1 +
 assets/js/5b5e36b9.fe6c15e3.js                     |    1 +
 assets/js/5c1b820e.6b9a6e84.js                     |    1 +
 assets/js/5c9f4624.63b805a6.js                     |    1 +
 assets/js/5e95c892.b0b1bb64.js                     |    1 +
 assets/js/5eb2b302.c50021d8.js                     |    1 +
 assets/js/5f03234c.db475889.js                     |    1 +
 assets/js/61744635.663e727f.js                     |    1 +
 assets/js/61e3d4cc.5a748462.js                     |    1 +
 assets/js/621db11d.11d26f97.js                     |    1 +
 assets/js/62a7ca7a.7cbc4cfd.js                     |    1 +
 assets/js/6633675b.152a5aa5.js                     |    1 +
 assets/js/671ce0dc.2e85b86f.js                     |    1 +
 assets/js/67628f41.3cebbfec.js                     |    1 +
 assets/js/6872a836.83c6a7a9.js                     |    1 +
 assets/js/6875c492.6005760d.js                     |    1 +
 assets/js/6892f617.8d5c279a.js                     |    1 +
 assets/js/6ada9c37.e19625ea.js                     |    1 +
 assets/js/6e1c1147.ad5293df.js                     |    1 +
 assets/js/6f39ec98.45eeb395.js                     |    1 +
 assets/js/6f951a55.51feb855.js                     |    1 +
 assets/js/6fa4a995.52b891b8.js                     |    1 +
 assets/js/7042dea6.aef4482b.js                     |    1 +
 assets/js/7341f5c8.ba95cdab.js                     |    1 +
 assets/js/74c0211a.a89d76c6.js                     |    1 +
 assets/js/7518.ce485ab7.js                         |    1 +
 assets/js/75814064.622992bb.js                     |    1 +
 assets/js/766a25e8.14effa8a.js                     |    1 +
 assets/js/793af37f.de43513f.js                     |    1 +
 assets/js/7a67eafe.240f8edf.js                     |    1 +
 assets/js/7b6674ff.4e53dd13.js                     |    1 +
 assets/js/7eb6f3f2.640ea4da.js                     |    1 +
 assets/js/7fff8ac1.a485420d.js                     |    1 +
 assets/js/814f3328.9279044d.js                     |    1 +
 assets/js/8158.9845449e.js                         |    1 +
 assets/js/819b95c6.6f199823.js                     |    1 +
 assets/js/81a7527c.5e5d99c5.js                     |    1 +
 assets/js/82b3d388.b7e34806.js                     |    1 +
 assets/js/831425ee.44b4dde7.js                     |    1 +
 assets/js/84700fe1.5f474ed8.js                     |    1 +
 assets/js/87ceda19.bb5e8c0e.js                     |    1 +
 assets/js/8913.091ca4da.js                         |    1 +
 assets/js/8a1416ba.b2413a8e.js                     |    1 +
 assets/js/8b1cd994.de28797f.js                     |    1 +
 assets/js/8d16c60e.c0c98296.js                     |    1 +
 assets/js/8e2e4f36.ea6d803d.js                     |    1 +
 assets/js/8e9d555c.8e8cb9d1.js                     |    1 +
 assets/js/8f16bea6.f9641cb2.js                     |    1 +
 assets/js/95c5923f.348ace97.js                     |    1 +
 assets/js/95cf59a1.fa0c2a42.js                     |    1 +
 assets/js/9730.01eafbca.js                         |    1 +
 assets/js/993f72ea.52a8f949.js                     |    1 +
 assets/js/994319c2.80968371.js                     |    1 +
 assets/js/9a4f2fbf.f2ed9082.js                     |    1 +
 assets/js/9a99019d.b44119d4.js                     |    1 +
 assets/js/9cc26f6c.49043a70.js                     |    1 +
 assets/js/9cd743c9.73105920.js                     |    1 +
 assets/js/9df7d16b.b61beae9.js                     |    1 +
 assets/js/9e4087bc.359656f3.js                     |    1 +
 assets/js/9ed1c870.946eb50a.js                     |    1 +
 assets/js/a2263507.d08e162d.js                     |    1 +
 assets/js/a41cbb43.5679dc01.js                     |    1 +
 assets/js/a468dcbb.bcbf443b.js                     |    1 +
 assets/js/a6aa9e1f.ad1370f0.js                     |    1 +
 assets/js/a7456010.c3e92d8b.js                     |    1 +
 assets/js/a78cedb8.2f79dec9.js                     |    1 +
 assets/js/a7bd4aaa.66cafdc7.js                     |    1 +
 assets/js/a94703ab.c15b0b34.js                     |    1 +
 assets/js/aa2d6c3d.9f46bb50.js                     |    1 +
 assets/js/aada36dd.34931ef7.js                     |    1 +
 assets/js/ab240437.05be38ae.js                     |    1 +
 assets/js/aba21aa0.71167bed.js                     |    1 +
 assets/js/abf5c5c3.7ac3d297.js                     |    1 +
 assets/js/acecf23e.5f6d9927.js                     |    1 +
 assets/js/add778d1.3cb6f6e2.js                     |    1 +
 assets/js/add8cc11.716b17ab.js                     |    1 +
 assets/js/aeb4150a.f5df3b14.js                     |    1 +
 assets/js/b0a08aa7.88c4a943.js                     |    1 +
 assets/js/b405f593.c44a49bf.js                     |    1 +
 assets/js/b4e94af8.1db02b2d.js                     |    1 +
 assets/js/b56224f4.fade629f.js                     |    1 +
 assets/js/b689a7df.b5208a49.js                     |    1 +
 assets/js/b86fbb72.6dcdacfd.js                     |    1 +
 assets/js/b9d28c39.c7f955fb.js                     |    1 +
 assets/js/bac2b925.0799462b.js                     |    1 +
 assets/js/bcac6c77.2f068085.js                     |    1 +
 assets/js/bdf1472e.711c56ac.js                     |    1 +
 assets/js/bdfb83fe.e7ede2d1.js                     |    1 +
 assets/js/c018ef01.b75f04c7.js                     |    1 +
 assets/js/c141421f.483a0d8b.js                     |    1 +
 assets/js/c143539c.d6a6ec00.js                     |    1 +
 assets/js/c1d17d03.e515a5ab.js                     |    1 +
 assets/js/c603b338.4e7d556b.js                     |    1 +
 assets/js/c642c7e8.305b183a.js                     |    1 +
 assets/js/c7122660.f857c136.js                     |    1 +
 assets/js/c88e3dd6.92065d26.js                     |    1 +
 assets/js/ca57b231.0b2d4ab6.js                     |    1 +
 assets/js/ca81dda5.75ddc20a.js                     |    1 +
 assets/js/cc72a6c3.99f02ce5.js                     |    1 +
 assets/js/ccc49370.195c2233.js                     |    1 +
 assets/js/cd3822f9.ca849a85.js                     |    1 +
 assets/js/cddbb034.45d1dfd2.js                     |    1 +
 assets/js/ce40231b.8434e747.js                     |    1 +
 assets/js/cfedf80e.2ed761d9.js                     |    1 +
 assets/js/d0be6a34.7f9b7175.js                     |    1 +
 assets/js/d24ecfdc.d1c7cff7.js                     |    1 +
 assets/js/d2806a11.06459ec3.js                     |    1 +
 assets/js/d2da4636.451d60b1.js                     |    1 +
 assets/js/d38c956e.5c89b423.js                     |    1 +
 assets/js/d45d71f1.bebf8efd.js                     |    1 +
 assets/js/d46a98c6.57028b53.js                     |    1 +
 assets/js/d4e85a9d.c53f4fc7.js                     |    1 +
 assets/js/d5c4569c.5cdcfaa4.js                     |    1 +
 assets/js/d717c9f5.1fb05db0.js                     |    1 +
 assets/js/d75cfc85.c76bbcfb.js                     |    1 +
 assets/js/d8b46579.5764ef5d.js                     |    1 +
 assets/js/d9129b64.a2436b54.js                     |    1 +
 assets/js/d97251e6.bc2720a2.js                     |    1 +
 assets/js/da5fc804.c7d719c4.js                     |    1 +
 assets/js/db256351.da20f1b7.js                     |    1 +
 assets/js/db5d1f48.bb8274e9.js                     |    1 +
 assets/js/dbfc4782.8f7a7243.js                     |    1 +
 assets/js/dd04b75e.5bd3fbc9.js                     |    1 +
 assets/js/de008c00.f2be1a26.js                     |    1 +
 assets/js/ded36ae0.ae2899af.js                     |    1 +
 assets/js/df47852f.7970589b.js                     |    1 +
 assets/js/dff54d80.69b506dc.js                     |    1 +
 assets/js/e01b5f8c.d0862de7.js                     |    1 +
 assets/js/e025f2f4.c31d48b8.js                     |    1 +
 assets/js/e0719818.a6531520.js                     |    1 +
 assets/js/e0e92cc1.e0c24eb8.js                     |    1 +
 assets/js/e2cc254d.0c77013b.js                     |    1 +
 assets/js/e2f56b1d.a06a6f0f.js                     |    1 +
 assets/js/e5327ea2.20e04a09.js                     |    1 +
 assets/js/e7d4f839.40c97085.js                     |    1 +
 assets/js/e8397ce1.a99a757c.js                     |    1 +
 assets/js/e8a73003.2f97a716.js                     |    1 +
 assets/js/e8ef73cd.867ed824.js                     |    1 +
 assets/js/eb05eaac.1bab7ae5.js                     |    1 +
 assets/js/eb5be0bf.0656c776.js                     |    1 +
 assets/js/ee8ec7f8.f759db31.js                     |    1 +
 assets/js/f39116bd.e9352550.js                     |    1 +
 assets/js/f47dd6e5.daa143cf.js                     |    1 +
 assets/js/f593d43a.87812e5d.js                     |    1 +
 assets/js/f5e8f464.3473abca.js                     |    1 +
 assets/js/f79b4041.5490eddd.js                     |    1 +
 assets/js/f8dbdc9a.f5e2af1b.js                     |    1 +
 assets/js/fe66138b.b2cdef42.js                     |    1 +
 assets/js/ff2ceeff.06a4dc1f.js                     |    1 +
 assets/js/ffad4089.a4b4fe06.js                     |    1 +
 assets/js/main.a06cb6b9.js                         |    2 +
 assets/js/main.a06cb6b9.js.LICENSE.txt             |   64 +
 assets/js/runtime~main.264c6f6f.js                 |    1 +
 blog/archive/index.html                            |   27 +
 blog/atom.css                                      |   75 +
 blog/atom.xml                                      |  799 ++++
 blog/atom.xsl                                      |   92 +
 blog/authors/index.html                            |   27 +
 blog/fluss-intro/index.html                        |   94 +
 blog/fluss-open-source/index.html                  |   56 +
 blog/index.html                                    |   60 +
 blog/partial-updates/index.html                    |  111 +
 blog/releases/0.6/index.html                       |  150 +
 blog/releases/0.7/index.html                       |  143 +
 blog/rss.css                                       |   75 +
 blog/rss.xml                                       |  765 ++++
 blog/rss.xsl                                       |   86 +
 blog/tags/index.html                               |   27 +
 blog/tags/releases/index.html                      |   32 +
 blog/unified-streaming-lakehouse/index.html        |  198 +
 blog/unveil-fluss-logo/index.html                  |   63 +
 blog/why-fluss/index.html                          |   88 +
 community/dev/building/index.html                  |   56 +
 community/dev/ide-setup/index.html                 |  169 +
 community/fluss-logos/index.html                   |   56 +
 .../how-to-contribute/contribute-code/index.html   |   75 +
 .../how-to-contribute/contribute-docs/index.html   |  137 +
 .../review-pull-requests/index.html                |   57 +
 community/how-to-release/index.html                |   28 +
 community/welcome/index.html                       |   43 +
 docs/0.5/concepts/architecture/index.html          |   68 +
 docs/0.5/dev/building/index.html                   |   43 +
 docs/0.5/dev/ide-setup/index.html                  |  151 +
 docs/0.5/engine-flink/ddl/index.html               |   63 +
 docs/0.5/engine-flink/getting-started/index.html   |   92 +
 docs/0.5/engine-flink/lookups/index.html           |   44 +
 docs/0.5/engine-flink/reads/index.html             |   77 +
 docs/0.5/engine-flink/writes/index.html            |   53 +
 .../deploying-distributed-cluster/index.html       |   98 +
 .../deploying-local-cluster/index.html             |   60 +
 .../deploying-with-docker/index.html               |  135 +
 docs/0.5/install-deploy/overview/index.html        |   49 +
 docs/0.5/intro/index.html                          |   42 +
 docs/0.5/maintenance/configuration/index.html      |   73 +
 docs/0.5/maintenance/filesystems/hdfs/index.html   |   34 +
 docs/0.5/maintenance/filesystems/oss/index.html    |   42 +
 .../maintenance/filesystems/overview/index.html    |   51 +
 docs/0.5/maintenance/filesystems/s3/index.html     |   31 +
 docs/0.5/maintenance/logging/index.html            |   74 +
 docs/0.5/maintenance/metric-reporters/index.html   |   67 +
 docs/0.5/maintenance/monitor-metrics/index.html    |  111 +
 .../tiered-storage/lakehouse-storage/index.html    |   53 +
 .../maintenance/tiered-storage/overview/index.html |   35 +
 .../tiered-storage/remote-storage/index.html       |   53 +
 docs/0.5/quickstart/flink/index.html               |  165 +
 .../integrate-data-lakes/paimon/index.html         |   70 +
 docs/0.5/streaming-lakehouse/overview/index.html   |   60 +
 .../data-distribution/bucketing/index.html         |   45 +
 .../data-distribution/partitioning/index.html      |   55 +
 .../table-design/data-distribution/ttl/index.html  |   30 +
 docs/0.5/table-design/data-types/index.html        |   29 +
 docs/0.5/table-design/overview/index.html          |   72 +
 .../table-design/table-types/log-table/index.html  |   49 +
 .../table-design/table-types/pk-table/index.html   |   55 +
 docs/0.6/concepts/architecture/index.html          |   68 +
 docs/0.6/engine-flink/ddl/index.html               |   95 +
 docs/0.6/engine-flink/getting-started/index.html   |   96 +
 docs/0.6/engine-flink/lookups/index.html           |   87 +
 docs/0.6/engine-flink/options/index.html           |   54 +
 docs/0.6/engine-flink/reads/index.html             |   86 +
 docs/0.6/engine-flink/writes/index.html            |   58 +
 .../deploying-distributed-cluster/index.html       |   98 +
 .../deploying-local-cluster/index.html             |   60 +
 .../deploying-with-docker/index.html               |  134 +
 docs/0.6/install-deploy/overview/index.html        |   49 +
 docs/0.6/intro/index.html                          |   42 +
 docs/0.6/maintenance/configuration/index.html      |   55 +
 docs/0.6/maintenance/filesystems/hdfs/index.html   |   34 +
 docs/0.6/maintenance/filesystems/oss/index.html    |   42 +
 .../maintenance/filesystems/overview/index.html    |   51 +
 docs/0.6/maintenance/filesystems/s3/index.html     |   31 +
 .../maintenance/observability/logging/index.html   |   75 +
 .../observability/metric-reporters/index.html      |   67 +
 .../observability/monitor-metrics/index.html       |  111 +
 .../observability/quickstart/index.html            |   77 +
 .../tiered-storage/lakehouse-storage/index.html    |   53 +
 .../maintenance/tiered-storage/overview/index.html |   35 +
 .../tiered-storage/remote-storage/index.html       |   53 +
 docs/0.6/quickstart/flink/index.html               |  166 +
 .../integrate-data-lakes/paimon/index.html         |   72 +
 docs/0.6/streaming-lakehouse/overview/index.html   |   60 +
 .../data-distribution/bucketing/index.html         |   45 +
 .../data-distribution/partitioning/index.html      |   60 +
 .../table-design/data-distribution/ttl/index.html  |   30 +
 docs/0.6/table-design/data-types/index.html        |   29 +
 docs/0.6/table-design/overview/index.html          |   72 +
 .../table-design/table-types/log-table/index.html  |   83 +
 .../table-design/table-types/pk-table/index.html   |   85 +
 .../pk-table/merge-engines/first-row/index.html    |   39 +
 .../table-types/pk-table/merge-engines/index.html  |   36 +
 .../pk-table/merge-engines/versioned/index.html    |   50 +
 docs/apis/java-client/index.html                   |   85 +
 docs/concepts/architecture/index.html              |   68 +
 docs/engine-flink/datastream/index.html            |  147 +
 docs/engine-flink/ddl/index.html                   |  101 +
 docs/engine-flink/getting-started/index.html       |   98 +
 docs/engine-flink/lookups/index.html               |   87 +
 docs/engine-flink/options/index.html               |   54 +
 docs/engine-flink/reads/index.html                 |  131 +
 docs/engine-flink/writes/index.html                |   58 +
 .../deploying-distributed-cluster/index.html       |  103 +
 .../deploying-local-cluster/index.html             |   60 +
 .../deploying-with-docker/index.html               |  110 +
 docs/install-deploy/overview/index.html            |   49 +
 docs/intro/index.html                              |   56 +
 docs/maintenance/configuration/index.html          |   58 +
 docs/maintenance/filesystems/hdfs/index.html       |   34 +
 docs/maintenance/filesystems/oss/index.html        |   48 +
 docs/maintenance/filesystems/overview/index.html   |   51 +
 docs/maintenance/filesystems/s3/index.html         |   31 +
 docs/maintenance/observability/logging/index.html  |   75 +
 .../observability/metric-reporters/index.html      |   67 +
 .../observability/monitor-metrics/index.html       |  115 +
 .../observability/quickstart/index.html            |   75 +
 docs/maintenance/operations/racks/index.html       |   45 +
 docs/maintenance/operations/upgrading/index.html   |   74 +
 .../tiered-storage/lakehouse-storage/index.html    |   81 +
 .../maintenance/tiered-storage/overview/index.html |   35 +
 .../tiered-storage/remote-storage/index.html       |   53 +
 docs/next/apis/java-client/index.html              |   85 +
 docs/next/concepts/architecture/index.html         |   68 +
 docs/next/engine-flink/datastream/index.html       |  147 +
 docs/next/engine-flink/ddl/index.html              |  101 +
 docs/next/engine-flink/getting-started/index.html  |   98 +
 docs/next/engine-flink/lookups/index.html          |   87 +
 docs/next/engine-flink/options/index.html          |   54 +
 docs/next/engine-flink/reads/index.html            |  131 +
 docs/next/engine-flink/writes/index.html           |   58 +
 .../deploying-distributed-cluster/index.html       |  103 +
 .../deploying-local-cluster/index.html             |   60 +
 .../deploying-with-docker/index.html               |  110 +
 docs/next/install-deploy/overview/index.html       |   49 +
 docs/next/intro/index.html                         |   56 +
 docs/next/maintenance/configuration/index.html     |   58 +
 docs/next/maintenance/filesystems/hdfs/index.html  |   34 +
 docs/next/maintenance/filesystems/oss/index.html   |   48 +
 .../maintenance/filesystems/overview/index.html    |   51 +
 docs/next/maintenance/filesystems/s3/index.html    |   31 +
 .../maintenance/observability/logging/index.html   |   75 +
 .../observability/metric-reporters/index.html      |   67 +
 .../observability/monitor-metrics/index.html       |  115 +
 .../observability/quickstart/index.html            |   75 +
 docs/next/maintenance/operations/racks/index.html  |   45 +
 .../maintenance/operations/upgrading/index.html    |   74 +
 .../tiered-storage/lakehouse-storage/index.html    |   81 +
 .../maintenance/tiered-storage/overview/index.html |   35 +
 .../tiered-storage/remote-storage/index.html       |   53 +
 docs/next/quickstart/flink/index.html              |  168 +
 docs/next/quickstart/security/index.html           |  161 +
 docs/next/security/authentication/index.html       |   77 +
 docs/next/security/authorization/index.html        |   84 +
 docs/next/security/overview/index.html             |  115 +
 .../integrate-data-lakes/paimon/index.html         |   72 +
 docs/next/streaming-lakehouse/overview/index.html  |   60 +
 .../data-distribution/bucketing/index.html         |   45 +
 .../data-distribution/partitioning/index.html      |   70 +
 .../table-design/data-distribution/ttl/index.html  |   30 +
 docs/next/table-design/data-types/index.html       |   29 +
 docs/next/table-design/overview/index.html         |   72 +
 .../table-design/table-types/log-table/index.html  |   83 +
 .../table-design/table-types/pk-table/index.html   |   87 +
 .../pk-table/merge-engines/default/index.html      |   33 +
 .../pk-table/merge-engines/first-row/index.html    |   39 +
 .../table-types/pk-table/merge-engines/index.html  |   36 +
 .../pk-table/merge-engines/versioned/index.html    |   50 +
 docs/quickstart/flink/index.html                   |  168 +
 docs/quickstart/security/index.html                |  161 +
 docs/security/authentication/index.html            |   77 +
 docs/security/authorization/index.html             |   84 +
 docs/security/overview/index.html                  |  115 +
 .../integrate-data-lakes/paimon/index.html         |   72 +
 docs/streaming-lakehouse/overview/index.html       |   60 +
 .../data-distribution/bucketing/index.html         |   45 +
 .../data-distribution/partitioning/index.html      |   70 +
 docs/table-design/data-distribution/ttl/index.html |   30 +
 docs/table-design/data-types/index.html            |   29 +
 docs/table-design/overview/index.html              |   72 +
 docs/table-design/table-types/log-table/index.html |   83 +
 docs/table-design/table-types/pk-table/index.html  |   87 +
 .../pk-table/merge-engines/default/index.html      |   33 +
 .../pk-table/merge-engines/first-row/index.html    |   39 +
 .../table-types/pk-table/merge-engines/index.html  |   36 +
 .../pk-table/merge-engines/versioned/index.html    |   50 +
 downloads/index.html                               |   77 +
 img/.DS_Store                                      |  Bin 0 -> 6148 bytes
 img/background.jpg                                 |  Bin 0 -> 577329 bytes
 img/banner.png                                     |  Bin 0 -> 649744 bytes
 img/feature_changelog.svg                          |   53 +
 img/feature_column.svg                             |   38 +
 img/feature_lake.svg                               |   36 +
 img/feature_lookup.svg                             |   36 +
 img/feature_query.svg                              |   37 +
 img/feature_real_time.svg                          |   36 +
 img/feature_update.svg                             |   42 +
 img/fluss.png                                      |  Bin 0 -> 198902 bytes
 img/github_icon.svg                                |   21 +
 img/logo/.DS_Store                                 |  Bin 0 -> 6148 bytes
 img/logo/fluss_favicon.svg                         |   19 +
 img/logo/logo_overview.jpg                         |  Bin 0 -> 601260 bytes
 img/logo/png/.DS_Store                             |  Bin 0 -> 6148 bytes
 img/logo/png/black_outline.png                     |  Bin 0 -> 29923 bytes
 img/logo/png/black_outline_notext.png              |  Bin 0 -> 31082 bytes
 img/logo/png/colored_logo.png                      |  Bin 0 -> 45184 bytes
 img/logo/png/colored_logo_notext.png               |  Bin 0 -> 68924 bytes
 img/logo/png/white_color_logo.png                  |  Bin 0 -> 54294 bytes
 img/logo/png/white_color_logo_notext.png           |  Bin 0 -> 61041 bytes
 img/logo/png/white_filled.png                      |  Bin 0 -> 38091 bytes
 img/logo/png/white_filled_notext.png               |  Bin 0 -> 49183 bytes
 img/logo/svg/.DS_Store                             |  Bin 0 -> 6148 bytes
 img/logo/svg/black_outline.svg                     |   33 +
 img/logo/svg/black_outline_notext.svg              |   19 +
 img/logo/svg/colored_logo.svg                      |   19 +
 img/logo/svg/colored_logo_notext.svg               |   19 +
 img/logo/svg/white_color_logo.svg                  |   19 +
 img/logo/svg/white_color_logo_notext.svg           |   19 +
 img/logo/svg/white_filled.svg                      |   20 +
 img/logo/svg/white_filled_notext.svg               |   19 +
 img/slack_icon.svg                                 |   21 +
 index.html                                         |   27 +
 manifest.json                                      |   16 +
 opensearch.xml                                     |   11 +
 roadmap/index.html                                 |   72 +
 search/index.html                                  |   27 +
 sitemap.xml                                        |    1 +
 sw.js                                              | 4622 ++++++++++++++++++++
 sw.js.map                                          |    1 +
 530 files changed, 20659 insertions(+), 33 deletions(-)

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..b961cce
Binary files /dev/null and b/.DS_Store differ
diff --git a/.asf.yaml b/.asf.yaml
deleted file mode 100644
index c134c08..0000000
--- a/.asf.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-github:
-  description: "Apache Fluss Website"
-  homepage: https://fluss.apache.org/
-  features:
-    issues: false
-    projects: false
-    wiki: false
-  labels:
-    - fluss
-  enabled_merge_buttons:
-    squash:  true
-    merge:   false
-    rebase:  false
-
-publish:
-  whoami: asf-site
\ No newline at end of file
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..3b24bbb
--- /dev/null
+++ b/404.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="plugin-native plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Page Not Found | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/assets/css/styles.3ca55d09.css b/assets/css/styles.3ca55d09.css
new file mode 100644
index 0000000..2f7f042
--- /dev/null
+++ b/assets/css/styles.3ca55d09.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middl [...]
\ No newline at end of file
diff --git a/assets/files/fluss-quickstart-observability-b1c7c2103cbbdea2b24816ff0d6f914d.zip b/assets/files/fluss-quickstart-observability-b1c7c2103cbbdea2b24816ff0d6f914d.zip
new file mode 100644
index 0000000..8a1ecda
Binary files /dev/null and b/assets/files/fluss-quickstart-observability-b1c7c2103cbbdea2b24816ff0d6f914d.zip differ
diff --git a/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png b/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png
new file mode 100644
index 0000000..0c8e888
Binary files /dev/null and b/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png differ
diff --git a/assets/images/architecture-b318beb94d717f94d6fe64b6303e79ab.png b/assets/images/architecture-b318beb94d717f94d6fe64b6303e79ab.png
new file mode 100644
index 0000000..34ccaf9
Binary files /dev/null and b/assets/images/architecture-b318beb94d717f94d6fe64b6303e79ab.png differ
diff --git a/assets/images/architecture-c818a634d5e3360846b1ee299ff8df2e.png b/assets/images/architecture-c818a634d5e3360846b1ee299ff8df2e.png
new file mode 100644
index 0000000..d6cb9ee
Binary files /dev/null and b/assets/images/architecture-c818a634d5e3360846b1ee299ff8df2e.png differ
diff --git a/assets/images/background-0dd420cc202b6881c3fb4529c48f05a8.jpg b/assets/images/background-0dd420cc202b6881c3fb4529c48f05a8.jpg
new file mode 100644
index 0000000..ea84e01
Binary files /dev/null and b/assets/images/background-0dd420cc202b6881c3fb4529c48f05a8.jpg differ
diff --git a/assets/images/banner-5523bd3a3f5145b15e36c6bfb46796be.png b/assets/images/banner-5523bd3a3f5145b15e36c6bfb46796be.png
new file mode 100644
index 0000000..168c7e5
Binary files /dev/null and b/assets/images/banner-5523bd3a3f5145b15e36c6bfb46796be.png differ
diff --git a/assets/images/banner-8cc4ea9295caf8358e14adf7a69beb01.png b/assets/images/banner-8cc4ea9295caf8358e14adf7a69beb01.png
new file mode 100644
index 0000000..24a6586
Binary files /dev/null and b/assets/images/banner-8cc4ea9295caf8358e14adf7a69beb01.png differ
diff --git a/assets/images/banner-a09e6bac14dc2bee3dbc698347cb2d7f.png b/assets/images/banner-a09e6bac14dc2bee3dbc698347cb2d7f.png
new file mode 100644
index 0000000..55f50c8
Binary files /dev/null and b/assets/images/banner-a09e6bac14dc2bee3dbc698347cb2d7f.png differ
diff --git a/assets/images/colored_logo-570a85568f48c50f3ce9cdcfc57c8670.png b/assets/images/colored_logo-570a85568f48c50f3ce9cdcfc57c8670.png
new file mode 100644
index 0000000..2cd7dd3
Binary files /dev/null and b/assets/images/colored_logo-570a85568f48c50f3ce9cdcfc57c8670.png differ
diff --git a/assets/images/compression1-0b666a1467321b28376db725380eda3c.jpg b/assets/images/compression1-0b666a1467321b28376db725380eda3c.jpg
new file mode 100644
index 0000000..3f8ca4a
Binary files /dev/null and b/assets/images/compression1-0b666a1467321b28376db725380eda3c.jpg differ
diff --git a/assets/images/compression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg b/assets/images/compression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg
new file mode 100644
index 0000000..fb7a400
Binary files /dev/null and b/assets/images/compression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg differ
diff --git a/assets/images/compression3-1f5de9eec6dd66394a793f26395a8f49.jpg b/assets/images/compression3-1f5de9eec6dd66394a793f26395a8f49.jpg
new file mode 100644
index 0000000..8abf66b
Binary files /dev/null and b/assets/images/compression3-1f5de9eec6dd66394a793f26395a8f49.jpg differ
diff --git a/assets/images/data_organization-c63fd910ab4f86359e60234f855bbb74.png b/assets/images/data_organization-c63fd910ab4f86359e60234f855bbb74.png
new file mode 100644
index 0000000..c868b9e
Binary files /dev/null and b/assets/images/data_organization-c63fd910ab4f86359e60234f855bbb74.png differ
diff --git a/assets/images/data_organization-e23ab4af273d5615b2da661138af36dd.png b/assets/images/data_organization-e23ab4af273d5615b2da661138af36dd.png
new file mode 100644
index 0000000..ce52810
Binary files /dev/null and b/assets/images/data_organization-e23ab4af273d5615b2da661138af36dd.png differ
diff --git a/assets/images/delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg b/assets/images/delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg
new file mode 100644
index 0000000..2cc66dc
Binary files /dev/null and b/assets/images/delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg differ
diff --git a/assets/images/deployment_overview-9108e1465903f9424cddd023a8301fb2.png b/assets/images/deployment_overview-9108e1465903f9424cddd023a8301fb2.png
new file mode 100644
index 0000000..c2c44f5
Binary files /dev/null and b/assets/images/deployment_overview-9108e1465903f9424cddd023a8301fb2.png differ
diff --git a/assets/images/deployment_overview-e08f87d880eb2d10920b7f34ccbd9fa1.png b/assets/images/deployment_overview-e08f87d880eb2d10920b7f34ccbd9fa1.png
new file mode 100644
index 0000000..928b511
Binary files /dev/null and b/assets/images/deployment_overview-e08f87d880eb2d10920b7f34ccbd9fa1.png differ
diff --git a/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png b/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png
new file mode 100644
index 0000000..a31b7a5
Binary files /dev/null and b/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png differ
diff --git a/assets/images/fluss-9455a8d9e5ebfcf475a714923665b1c7.png b/assets/images/fluss-9455a8d9e5ebfcf475a714923665b1c7.png
new file mode 100644
index 0000000..2cf5f9c
Binary files /dev/null and b/assets/images/fluss-9455a8d9e5ebfcf475a714923665b1c7.png differ
diff --git a/assets/images/image1-6acb85f09ad799d93582a37896aabf30.png b/assets/images/image1-6acb85f09ad799d93582a37896aabf30.png
new file mode 100644
index 0000000..438b3b1
Binary files /dev/null and b/assets/images/image1-6acb85f09ad799d93582a37896aabf30.png differ
diff --git a/assets/images/image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png b/assets/images/image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png
new file mode 100644
index 0000000..e8f2485
Binary files /dev/null and b/assets/images/image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png differ
diff --git a/assets/images/image3-37c9a30c044c5afbc6e35fa21c1793bc.png b/assets/images/image3-37c9a30c044c5afbc6e35fa21c1793bc.png
new file mode 100644
index 0000000..6f5b300
Binary files /dev/null and b/assets/images/image3-37c9a30c044c5afbc6e35fa21c1793bc.png differ
diff --git a/assets/images/image4-c4082ae4730f49472a0414543ab5075a.png b/assets/images/image4-c4082ae4730f49472a0414543ab5075a.png
new file mode 100644
index 0000000..e26aa8e
Binary files /dev/null and b/assets/images/image4-c4082ae4730f49472a0414543ab5075a.png differ
diff --git a/assets/images/image5-7b6a1c8656ea141b803b8787e89d75df.png b/assets/images/image5-7b6a1c8656ea141b803b8787e89d75df.png
new file mode 100644
index 0000000..4f742a9
Binary files /dev/null and b/assets/images/image5-7b6a1c8656ea141b803b8787e89d75df.png differ
diff --git a/assets/images/image6-ec1c384b777aef0f617d3fcb08a5e39e.png b/assets/images/image6-ec1c384b777aef0f617d3fcb08a5e39e.png
new file mode 100644
index 0000000..3e8470e
Binary files /dev/null and b/assets/images/image6-ec1c384b777aef0f617d3fcb08a5e39e.png differ
diff --git a/assets/images/image7-246c5eae97745ed3ae9872e84a86b134.png b/assets/images/image7-246c5eae97745ed3ae9872e84a86b134.png
new file mode 100644
index 0000000..ffff855
Binary files /dev/null and b/assets/images/image7-246c5eae97745ed3ae9872e84a86b134.png differ
diff --git a/assets/images/img1-163f1412a1ed7b661686302df5bf9edb.png b/assets/images/img1-163f1412a1ed7b661686302df5bf9edb.png
new file mode 100644
index 0000000..716456b
Binary files /dev/null and b/assets/images/img1-163f1412a1ed7b661686302df5bf9edb.png differ
diff --git a/assets/images/img1-591c05a64a0e27a33a3ce5776391d92d.jpg b/assets/images/img1-591c05a64a0e27a33a3ce5776391d92d.jpg
new file mode 100644
index 0000000..dd305b0
Binary files /dev/null and b/assets/images/img1-591c05a64a0e27a33a3ce5776391d92d.jpg differ
diff --git a/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg b/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg
new file mode 100644
index 0000000..f0d4671
Binary files /dev/null and b/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg differ
diff --git a/assets/images/img2-846063bd092bc571aad305ae7253a190.jpg b/assets/images/img2-846063bd092bc571aad305ae7253a190.jpg
new file mode 100644
index 0000000..819370f
Binary files /dev/null and b/assets/images/img2-846063bd092bc571aad305ae7253a190.jpg differ
diff --git a/assets/images/img2-86b0eb7b0f26884f8ead16dc4a8db648.png b/assets/images/img2-86b0eb7b0f26884f8ead16dc4a8db648.png
new file mode 100644
index 0000000..17b35c8
Binary files /dev/null and b/assets/images/img2-86b0eb7b0f26884f8ead16dc4a8db648.png differ
diff --git a/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg b/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg
new file mode 100644
index 0000000..60cf887
Binary files /dev/null and b/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg differ
diff --git a/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg b/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg
new file mode 100644
index 0000000..c56638b
Binary files /dev/null and b/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg differ
diff --git a/assets/images/img3-d0ea956fb83807118c4d522bdd7b30f4.png b/assets/images/img3-d0ea956fb83807118c4d522bdd7b30f4.png
new file mode 100644
index 0000000..31b7326
Binary files /dev/null and b/assets/images/img3-d0ea956fb83807118c4d522bdd7b30f4.png differ
diff --git a/assets/images/img3-f76df2882b217d4aa58efba2edae07d8.jpg b/assets/images/img3-f76df2882b217d4aa58efba2edae07d8.jpg
new file mode 100644
index 0000000..9bdd56e
Binary files /dev/null and b/assets/images/img3-f76df2882b217d4aa58efba2edae07d8.jpg differ
diff --git a/assets/images/img4-06aab50ae6bb5a5df5cc0e2658815c1f.png b/assets/images/img4-06aab50ae6bb5a5df5cc0e2658815c1f.png
new file mode 100644
index 0000000..abff06e
Binary files /dev/null and b/assets/images/img4-06aab50ae6bb5a5df5cc0e2658815c1f.png differ
diff --git a/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg b/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg
new file mode 100644
index 0000000..8125b31
Binary files /dev/null and b/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg differ
diff --git a/assets/images/img4-80846362d40e3239bfcd92216276b72d.jpg b/assets/images/img4-80846362d40e3239bfcd92216276b72d.jpg
new file mode 100644
index 0000000..379cfd2
Binary files /dev/null and b/assets/images/img4-80846362d40e3239bfcd92216276b72d.jpg differ
diff --git a/assets/images/img5-36f56d95c22f50252c6a5caedbfed1d4.png b/assets/images/img5-36f56d95c22f50252c6a5caedbfed1d4.png
new file mode 100644
index 0000000..bba6dc4
Binary files /dev/null and b/assets/images/img5-36f56d95c22f50252c6a5caedbfed1d4.png differ
diff --git a/assets/images/img5-c1bedf1a8c60844ffd67f77f722157f9.jpg b/assets/images/img5-c1bedf1a8c60844ffd67f77f722157f9.jpg
new file mode 100644
index 0000000..fee4e41
Binary files /dev/null and b/assets/images/img5-c1bedf1a8c60844ffd67f77f722157f9.jpg differ
diff --git a/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg b/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg
new file mode 100644
index 0000000..970974f
Binary files /dev/null and b/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg differ
diff --git a/assets/images/img6-3e455650eb36e97091211441c91b48ac.jpg b/assets/images/img6-3e455650eb36e97091211441c91b48ac.jpg
new file mode 100644
index 0000000..48ed084
Binary files /dev/null and b/assets/images/img6-3e455650eb36e97091211441c91b48ac.jpg differ
diff --git a/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg b/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg
new file mode 100644
index 0000000..347ad8a
Binary files /dev/null and b/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg differ
diff --git a/assets/images/img6-5fdec641b3032d1c0f236cf990d914da.png b/assets/images/img6-5fdec641b3032d1c0f236cf990d914da.png
new file mode 100644
index 0000000..6565bb2
Binary files /dev/null and b/assets/images/img6-5fdec641b3032d1c0f236cf990d914da.png differ
diff --git a/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg b/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg
new file mode 100644
index 0000000..5f7094f
Binary files /dev/null and b/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg differ
diff --git a/assets/images/img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png b/assets/images/img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png
new file mode 100644
index 0000000..0496b5f
Binary files /dev/null and b/assets/images/img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png differ
diff --git a/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg b/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg
new file mode 100644
index 0000000..f9f107a
Binary files /dev/null and b/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg differ
diff --git a/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg b/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg
new file mode 100644
index 0000000..3536371
Binary files /dev/null and b/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg differ
diff --git a/assets/images/logo_overview-3a76e21a805e31d6bbf8e32563a22eb2.jpg b/assets/images/logo_overview-3a76e21a805e31d6bbf8e32563a22eb2.jpg
new file mode 100644
index 0000000..99a049a
Binary files /dev/null and b/assets/images/logo_overview-3a76e21a805e31d6bbf8e32563a22eb2.jpg differ
diff --git a/assets/images/new_tiering_service-4509c1a4b51c6821c0fe622cdda534e4.png b/assets/images/new_tiering_service-4509c1a4b51c6821c0fe622cdda534e4.png
new file mode 100644
index 0000000..11d0aa2
Binary files /dev/null and b/assets/images/new_tiering_service-4509c1a4b51c6821c0fe622cdda534e4.png differ
diff --git a/assets/images/overview-255047ec7648f12c63660b40d1147c86.png b/assets/images/overview-255047ec7648f12c63660b40d1147c86.png
new file mode 100644
index 0000000..c1f9291
Binary files /dev/null and b/assets/images/overview-255047ec7648f12c63660b40d1147c86.png differ
diff --git a/assets/images/partial_update-d529bf24211a76b31444bc7918872d59.png b/assets/images/partial_update-d529bf24211a76b31444bc7918872d59.png
new file mode 100644
index 0000000..9a35191
Binary files /dev/null and b/assets/images/partial_update-d529bf24211a76b31444bc7918872d59.png differ
diff --git a/assets/images/read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg b/assets/images/read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg
new file mode 100644
index 0000000..ce47448
Binary files /dev/null and b/assets/images/read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg differ
diff --git a/assets/images/streamhouse-5a2a3447bdfe72cc96b6ffa7e1eee39e.png b/assets/images/streamhouse-5a2a3447bdfe72cc96b6ffa7e1eee39e.png
new file mode 100644
index 0000000..a59ec39
Binary files /dev/null and b/assets/images/streamhouse-5a2a3447bdfe72cc96b6ffa7e1eee39e.png differ
diff --git a/assets/images/streamhouse-7b7f1260fc996ca89b50dbb9454584ab.png b/assets/images/streamhouse-7b7f1260fc996ca89b50dbb9454584ab.png
new file mode 100644
index 0000000..7092c12
Binary files /dev/null and b/assets/images/streamhouse-7b7f1260fc996ca89b50dbb9454584ab.png differ
diff --git a/assets/images/streamhouse-8069e2c65c0cf01ec3db98818555089a.png b/assets/images/streamhouse-8069e2c65c0cf01ec3db98818555089a.png
new file mode 100644
index 0000000..45de7cf
Binary files /dev/null and b/assets/images/streamhouse-8069e2c65c0cf01ec3db98818555089a.png differ
diff --git a/assets/images/streaming_join-761699227c5633f3575e2036b9e2ac61.png b/assets/images/streaming_join-761699227c5633f3575e2036b9e2ac61.png
new file mode 100644
index 0000000..daf17ac
Binary files /dev/null and b/assets/images/streaming_join-761699227c5633f3575e2036b9e2ac61.png differ
diff --git a/assets/images/tiered-storage-07376e693fff78ba48fa2cb58a1aca67.png b/assets/images/tiered-storage-07376e693fff78ba48fa2cb58a1aca67.png
new file mode 100644
index 0000000..9ca1e1d
Binary files /dev/null and b/assets/images/tiered-storage-07376e693fff78ba48fa2cb58a1aca67.png differ
diff --git a/assets/images/tiered-storage-7a1d1d0d91fa9b682bc80cb2713831a3.png b/assets/images/tiered-storage-7a1d1d0d91fa9b682bc80cb2713831a3.png
new file mode 100644
index 0000000..6312659
Binary files /dev/null and b/assets/images/tiered-storage-7a1d1d0d91fa9b682bc80cb2713831a3.png differ
diff --git a/assets/images/tiered-storage-d4ec96e1b2955c7786ce217a19fe91b5.png b/assets/images/tiered-storage-d4ec96e1b2955c7786ce217a19fe91b5.png
new file mode 100644
index 0000000..2803890
Binary files /dev/null and b/assets/images/tiered-storage-d4ec96e1b2955c7786ce217a19fe91b5.png differ
diff --git a/assets/images/write_perf-25c062766e117f2c092a79653cf69a85.jpg b/assets/images/write_perf-25c062766e117f2c092a79653cf69a85.jpg
new file mode 100644
index 0000000..628a776
Binary files /dev/null and b/assets/images/write_perf-25c062766e117f2c092a79653cf69a85.jpg differ
diff --git a/assets/js/0159e4b3.a1d1c71d.js b/assets/js/0159e4b3.a1d1c71d.js
new file mode 100644
index 0000000..4e3e564
--- /dev/null
+++ b/assets/js/0159e4b3.a1d1c71d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1838],{8605:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/tiered-storage/lakehouse-storage","title":"Lakehouse Storage","description":"Lakehouse represents a new, open architecture that combines the best elements of data lakes and data warehouses.","source":"@site/versioned_docs/version-0.6/main [...]
\ No newline at end of file
diff --git a/assets/js/019059a8.5b3a9fd0.js b/assets/js/019059a8.5b3a9fd0.js
new file mode 100644
index 0000000..2119f5b
--- /dev/null
+++ b/assets/js/019059a8.5b3a9fd0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4944],{3097:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"engine-flink/reads","title":"Flink Reads","description":"\x3c!--","source":"@site/docs/engine-flink/reads.md","sourceDirName":"engine-flink","slug":"/engine-flink/reads","permalink":"/docs/next/engine-flink/reads","draft":false,"unlisted":false,"edit [...]
\ No newline at end of file
diff --git a/assets/js/01a85c17.97728021.js b/assets/js/01a85c17.97728021.js
new file mode 100644
index 0000000..efdd690
--- /dev/null
+++ b/assets/js/01a85c17.97728021.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8209],{1715:(e,t,a)=>{a.d(t,{in:()=>c,OU:()=>P,Ki:()=>y,kJ:()=>b,x:()=>l,e7:()=>m,J_:()=>f,Gx:()=>A});var s=a(6540),n=a(9532),i=a(6803),r=a(4848);function l(){const e=(0,i.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=s.createContext(null);function c({children:e [...]
\ No newline at end of file
diff --git a/assets/js/02e30128.5892e7ee.js b/assets/js/02e30128.5892e7ee.js
new file mode 100644
index 0000000..539f499
--- /dev/null
+++ b/assets/js/02e30128.5892e7ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8474],{2715:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"maintenance/observability/monitor-metrics","title":"Monitor Metrics","description":"\x3c!--","source":"@site/docs/maintenance/observability/monitor-metrics.md","sourceDirName":"maintenance/observability","slug":"/maintenance/observability/monitor-met [...]
\ No newline at end of file
diff --git a/assets/js/03d2caf8.e98329fa.js b/assets/js/03d2caf8.e98329fa.js
new file mode 100644
index 0000000..22fe7b2
--- /dev/null
+++ b/assets/js/03d2caf8.e98329fa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1116],{3940:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/first-row","title":"FirstRow Merge Engine","description":"\x3c!--","source":"@site/docs/table-design/table-types/pk-table/merge-engines/first-row.md","sourceDirName":"table-design/table-types/pk-table/m [...]
\ No newline at end of file
diff --git a/assets/js/04b1c040.de2a0d3b.js b/assets/js/04b1c040.de2a0d3b.js
new file mode 100644
index 0000000..8f3ce3f
--- /dev/null
+++ b/assets/js/04b1c040.de2a0d3b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[957],{9132:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"how-to-release","title":"How to Release","description":"\x3c!--","source":"@site/community/how-to-release.md","sourceDirName":".","slug":"/how-to-release","permalink":"/community/how-to-release","draft":false,"unlisted":false,"editUrl":"https://github [...]
\ No newline at end of file
diff --git a/assets/js/05418681.6fc95e8e.js b/assets/js/05418681.6fc95e8e.js
new file mode 100644
index 0000000..c323866
--- /dev/null
+++ b/assets/js/05418681.6fc95e8e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3592],{6212:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"engine-flink/options","title":"Connector Options","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/options.md","sourceDirName":"engine-flink","slug":"/engine-flink/options","permalink":"/docs/engine-flink/options","draf [...]
\ No newline at end of file
diff --git a/assets/js/061ac8d1.3c858347.js b/assets/js/061ac8d1.3c858347.js
new file mode 100644
index 0000000..9b804c4
--- /dev/null
+++ b/assets/js/061ac8d1.3c858347.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1007],{5663:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>g,frontMatter:()=>o,metadata:()=>n,toc:()=>u});var n=s(7848),r=s(4848),a=s(8453);const o={slug:"fluss-intro",title:"Introducing Fluss: Streaming Storage for Real-Time Analytics",sidebar_label:"Introducing Fluss",authors:["jark"]},i=void 0,l={authorsImageUrls:[void 0]},u=[];function c(e){const t={a:"a",p:"p",...(0,a.R)(),.. [...]
\ No newline at end of file
diff --git a/assets/js/063063cd.9ae7fa2b.js b/assets/js/063063cd.9ae7fa2b.js
new file mode 100644
index 0000000..8f15eb3
--- /dev/null
+++ b/assets/js/063063cd.9ae7fa2b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[252],{9189:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"security/authentication","title":"Security Authentication","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/security/authentication.md","sourceDirName":"security","slug":"/security/authentication","permalink":"/docs/security/authenti [...]
\ No newline at end of file
diff --git a/assets/js/08af526d.be0d7b34.js b/assets/js/08af526d.be0d7b34.js
new file mode 100644
index 0000000..59e8ee9
--- /dev/null
+++ b/assets/js/08af526d.be0d7b34.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[529],{1344:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":8,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/0be3fcda.6327730a.js b/assets/js/0be3fcda.6327730a.js
new file mode 100644
index 0000000..52a320d
--- /dev/null
+++ b/assets/js/0be3fcda.6327730a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1965],{218:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"engine-flink/writes","title":"Flink Writes","description":"You can directly insert or update data into a Fluss table using the INSERT INTO statement.","source":"@site/versioned_docs/version-0.6/engine-flink/writes.md","sourceDirName":"engine-flink","s [...]
\ No newline at end of file
diff --git a/assets/js/0cac70d5.5a20b7dd.js b/assets/js/0cac70d5.5a20b7dd.js
new file mode 100644
index 0000000..4435392
--- /dev/null
+++ b/assets/js/0cac70d5.5a20b7dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8616],{6191:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/default","title":"Default Merge Engine","description":"\x3c!--","source":"@site/docs/table-design/table-types/pk-table/merge-engines/default.md","sourceDirName":"table-design/table-types/pk-table/merge- [...]
\ No newline at end of file
diff --git a/assets/js/0d32679b.d98582c4.js b/assets/js/0d32679b.d98582c4.js
new file mode 100644
index 0000000..817c573
--- /dev/null
+++ b/assets/js/0d32679b.d98582c4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7844],{9825:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"table-design/data-distribution/ttl","title":"TTL","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/data-distribution/ttl.md","sourceDirName":"table-design/data-distribution","slug":"/table-design/data-distribution/ttl", [...]
\ No newline at end of file
diff --git a/assets/js/0e04ef0e.c88e745d.js b/assets/js/0e04ef0e.c88e745d.js
new file mode 100644
index 0000000..6ee39cd
--- /dev/null
+++ b/assets/js/0e04ef0e.c88e745d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8710],{5830:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"concepts/architecture","title":"Architecture","description":"A Fluss cluster consists of two main processes: the CoordinatorServer and the TabletServer.","source":"@site/versioned_docs/version-0.6/concepts/architecture.md","sourceDirName":"concepts", [...]
\ No newline at end of file
diff --git a/assets/js/0e384e19.767d16de.js b/assets/js/0e384e19.767d16de.js
new file mode 100644
index 0000000..e65f234
--- /dev/null
+++ b/assets/js/0e384e19.767d16de.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3976],{2053:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"intro","title":"Introduction","description":"\x3c!--","source":"@site/docs/intro.md","sourceDirName":".","slug":"/intro","permalink":"/docs/next/intro","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fluss/edit/main/website/docs/i [...]
\ No newline at end of file
diff --git a/assets/js/0f7eeec5.b8867f3d.js b/assets/js/0f7eeec5.b8867f3d.js
new file mode 100644
index 0000000..4667209
--- /dev/null
+++ b/assets/js/0f7eeec5.b8867f3d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9615],{3798:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/default","title":"Default Merge Engine","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/table-types/pk-table/merge-engines/default.md","sourceDirName":"table-design/table [...]
\ No newline at end of file
diff --git a/assets/js/1099.428aa052.js b/assets/js/1099.428aa052.js
new file mode 100644
index 0000000..bc8eb2b
--- /dev/null
+++ b/assets/js/1099.428aa052.js
@@ -0,0 +1 @@
+(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1099],{7293:(e,t,n)=>{"use strict";n.d(t,{A:()=>M});var s=n(6540),a=n(4848);function r(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),r=t.filter((e=>e!==n)),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:r.length>0?(0,a.jsx)(a.Fragment,{children:r}):null}}(e.children),r=e.title??t;return{...e,...r&&{title:r},ch [...]
\ No newline at end of file
diff --git a/assets/js/11b43341.30e7d45b.js b/assets/js/11b43341.30e7d45b.js
new file mode 100644
index 0000000..f9cef7a
--- /dev/null
+++ b/assets/js/11b43341.30e7d45b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2256],{7674:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.7","label":"0.7","banner":null,"badge":true,"noIndex":false,"className":"docs-version-0.7","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Introduction","href":"/docs/intro","docId":"intro","unlisted":false},{"type":"category","label":"Quick Start","collapsible":true,"collapsed":true,"items":[{"typ [...]
\ No newline at end of file
diff --git a/assets/js/12079287.d61bbd17.js b/assets/js/12079287.d61bbd17.js
new file mode 100644
index 0000000..e7c2301
--- /dev/null
+++ b/assets/js/12079287.d61bbd17.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7715],{6731:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/index","title":"Merge Engines","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/table-types/pk-table/merge-engines/index.md","sourceDirName":"table-design/table-types/pk-t [...]
\ No newline at end of file
diff --git a/assets/js/121d09c9.2b00b45d.js b/assets/js/121d09c9.2b00b45d.js
new file mode 100644
index 0000000..e9e6f5a
--- /dev/null
+++ b/assets/js/121d09c9.2b00b45d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[196],{1318:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"table-design/table-types/pk-table/index","title":"PrimaryKey Table","description":"Basic Concept","source":"@site/versioned_docs/version-0.6/table-design/table-types/pk-table/index.md","sourceDirName":"table-design/table-types/pk-table","slug":"/table [...]
\ No newline at end of file
diff --git a/assets/js/155d5593.743d5e64.js b/assets/js/155d5593.743d5e64.js
new file mode 100644
index 0000000..b2500b8
--- /dev/null
+++ b/assets/js/155d5593.743d5e64.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1440],{6592:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"streaming-lakehouse/integrate-data-lakes/paimon","title":"Paimon","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/streaming-lakehouse/integrate-data-lakes/paimon.md","sourceDirName":"streaming-lakehouse/integrate-data-lakes","slug" [...]
\ No newline at end of file
diff --git a/assets/js/16fc9cae.cb8f075d.js b/assets/js/16fc9cae.cb8f075d.js
new file mode 100644
index 0000000..fedbab0
--- /dev/null
+++ b/assets/js/16fc9cae.cb8f075d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3085],{2461:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"engine-flink/getting-started","title":"Getting Started with Flink","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/getting-started.md","sourceDirName":"engine-flink","slug":"/engine-flink/getting-started","permalink":" [...]
\ No newline at end of file
diff --git a/assets/js/17301193.a4fb931c.js b/assets/js/17301193.a4fb931c.js
new file mode 100644
index 0000000..0f68607
--- /dev/null
+++ b/assets/js/17301193.a4fb931c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9456],{1264:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"engine-flink/ddl","title":"Flink DDL","description":"\x3c!--","source":"@site/docs/engine-flink/ddl.md","sourceDirName":"engine-flink","slug":"/engine-flink/ddl","permalink":"/docs/next/engine-flink/ddl","draft":false,"unlisted":false,"editUrl":"http [...]
\ No newline at end of file
diff --git a/assets/js/17896441.b1dee11c.js b/assets/js/17896441.b1dee11c.js
new file mode 100644
index 0000000..c37606d
--- /dev/null
+++ b/assets/js/17896441.b1dee11c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8401],{2234:(e,n,t)=>{t.d(n,{A:()=>c});t(6540);var s=t(4164),a=t(4084),i=t(7559),l=t(7293),o=t(4848);function r({className:e}){return(0,o.jsx)(l.A,{type:"caution",title:(0,o.jsx)(a.Rc,{}),className:(0,s.A)(e,i.G.common.unlistedBanner),children:(0,o.jsx)(a.Uh,{})})}function c(e){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.AE,{}),(0,o.jsx)(r,{...e})]})}},1689:(e,n,t)=>{t.d(n,{A:()=>d});t(6540);va [...]
\ No newline at end of file
diff --git a/assets/js/18d3069c.e597f833.js b/assets/js/18d3069c.e597f833.js
new file mode 100644
index 0000000..1089401
--- /dev/null
+++ b/assets/js/18d3069c.e597f833.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1017],{3342:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/filesystems/s3","title":"Amazon S3","description":"\x3c!--","source":"@site/docs/maintenance/filesystems/s3.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/s3","permalink":"/docs/next/maintenance/filesystems [...]
\ No newline at end of file
diff --git a/assets/js/1a4e3797.970f8127.js b/assets/js/1a4e3797.970f8127.js
new file mode 100644
index 0000000..8531c34
--- /dev/null
+++ b/assets/js/1a4e3797.970f8127.js
@@ -0,0 +1 @@
+(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2138],{2733:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function i(e){return"object"==typeof e&&null!==e}function n(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError( [...]
\ No newline at end of file
diff --git a/assets/js/1b7d0bf1.477cbc4b.js b/assets/js/1b7d0bf1.477cbc4b.js
new file mode 100644
index 0000000..1681871
--- /dev/null
+++ b/assets/js/1b7d0bf1.477cbc4b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1430],{4609:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"table-design/table-types/log-table","title":"Log Table","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/table-types/log-table.md","sourceDirName":"table-design/table-types","slug":"/table-design/table-types/log-table", [...]
\ No newline at end of file
diff --git a/assets/js/1c857efc.7340880a.js b/assets/js/1c857efc.7340880a.js
new file mode 100644
index 0000000..c624509
--- /dev/null
+++ b/assets/js/1c857efc.7340880a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7839],{8707:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"engine-flink/lookups","title":"Flink Lookup Joins","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/lookups.md","sourceDirName":"engine-flink","slug":"/engine-flink/lookups","permalink":"/docs/engine-flink/lookups","dra [...]
\ No newline at end of file
diff --git a/assets/js/1df93b7f.e67b8626.js b/assets/js/1df93b7f.e67b8626.js
new file mode 100644
index 0000000..a1ed2bf
--- /dev/null
+++ b/assets/js/1df93b7f.e67b8626.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4583],{5763:(e,t,n)=>{n.d(t,{A:()=>l});var a,i=n(6540);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},s.apply(null,arguments)}const l=({title:e,titleId:t,...n})=>i.createElement("svg",s({xmlns:"http://www.w3.org/2000/svg",fill:"none",shapeRendering:"geometric [...]
\ No newline at end of file
diff --git a/assets/js/1e7fbca2.72c47230.js b/assets/js/1e7fbca2.72c47230.js
new file mode 100644
index 0000000..d0f3381
--- /dev/null
+++ b/assets/js/1e7fbca2.72c47230.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1654],{4584:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"quickstart/flink","title":"Real-Time Analytics With Flink","description":"This guide will get you up and running with Apache Flink to do real-time analytics, covering some powerful features of Fluss,","source":"@site/versioned_docs/version-0.5/quicks [...]
\ No newline at end of file
diff --git a/assets/js/1f391b9e.c4da6e31.js b/assets/js/1f391b9e.c4da6e31.js
new file mode 100644
index 0000000..0b25e4e
--- /dev/null
+++ b/assets/js/1f391b9e.c4da6e31.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6061],{2234:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var i=t(4164),a=t(4084),s=t(7559),r=t(7293),l=t(4848);function c({className:e}){return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(a.Rc,{}),className:(0,i.A)(e,s.G.common.unlistedBanner),children:(0,l.jsx)(a.Uh,{})})}function o(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(a.AE,{}),(0,l.jsx)(c,{...e})]})}},1689:(e,n,t)=>{t.d(n,{A:()=>d});t(6540);va [...]
\ No newline at end of file
diff --git a/assets/js/1f864603.9c08aa17.js b/assets/js/1f864603.9c08aa17.js
new file mode 100644
index 0000000..5dfc961
--- /dev/null
+++ b/assets/js/1f864603.9c08aa17.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7237],{6844:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"engine-flink/lookups","title":"Flink Lookup Joins","description":"Flink lookup joins are important because they enable efficient, real-time enrichment of streaming data with reference data, a common requirement in many real-time analytics and process [...]
\ No newline at end of file
diff --git a/assets/js/2063472f.cada080b.js b/assets/js/2063472f.cada080b.js
new file mode 100644
index 0000000..b38a672
--- /dev/null
+++ b/assets/js/2063472f.cada080b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3215],{7646:e=>{e.exports=JSON.parse('{"tags":[{"label":"releases","permalink":"/blog/tags/releases","description":"Content related release announcement.","count":2}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/21ca1076.fdb09e15.js b/assets/js/21ca1076.fdb09e15.js
new file mode 100644
index 0000000..0970db1
--- /dev/null
+++ b/assets/js/21ca1076.fdb09e15.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7720],{4551:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"table-design/data-distribution/partitioning","title":"Partitioning","description":"Partitioned Tables","source":"@site/versioned_docs/version-0.5/table-design/data-distribution/partitioning.md","sourceDirName":"table-design/data-distribution","slug": [...]
\ No newline at end of file
diff --git a/assets/js/2237.c731bb05.js b/assets/js/2237.c731bb05.js
new file mode 100644
index 0000000..d07550d
--- /dev/null
+++ b/assets/js/2237.c731bb05.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2237],{3363:(e,t,s)=>{s.d(t,{A:()=>a});s(6540);var i=s(4164),n=s(1312),o=s(1107),r=s(4848);function a({className:e}){return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",e),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(n.A,{id:"theme.NotFound.title",d [...]
\ No newline at end of file
diff --git a/assets/js/2282b9e6.ffe270ef.js b/assets/js/2282b9e6.ffe270ef.js
new file mode 100644
index 0000000..f86db36
--- /dev/null
+++ b/assets/js/2282b9e6.ffe270ef.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3875],{8702:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>g,frontMatter:()=>a,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/index","title":"Merge Engines","description":"The Merge Engine in Fluss is a core component designed to efficiently handle and consolidate data updates for PrimaryKey Tables.","source":"@site/versioned_ [...]
\ No newline at end of file
diff --git a/assets/js/2351863b.039e294e.js b/assets/js/2351863b.039e294e.js
new file mode 100644
index 0000000..a9f1403
--- /dev/null
+++ b/assets/js/2351863b.039e294e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7757],{7103:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/index","title":"Merge Engines","description":"\x3c!--","source":"@site/docs/table-design/table-types/pk-table/merge-engines/index.md","sourceDirName":"table-design/table-types/pk-table/merge-engines","s [...]
\ No newline at end of file
diff --git a/assets/js/2362.71b193b1.js b/assets/js/2362.71b193b1.js
new file mode 100644
index 0000000..1274e67
--- /dev/null
+++ b/assets/js/2362.71b193b1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2362],{2362:(e,t,o)=>{o.r(t),o.d(t,{default:()=>i});var n=o(6540),s=o(4164),a=o(1312);const l={popup:"popup_wph0",buttonContainer:"buttonContainer_ox5C"};var r=o(4848);function i({onReload:e}){const[t,o]=(0,n.useState)(!0);return t&&(0,r.jsxs)("div",{className:(0,s.A)("alert","alert--secondary",l.popup),children:[(0,r.jsx)("p",{children:(0,r.jsx)(a.A,{id:"theme.PwaReloadPopup.info",description:"The te [...]
\ No newline at end of file
diff --git a/assets/js/23b051ad.94430174.js b/assets/js/23b051ad.94430174.js
new file mode 100644
index 0000000..820b76c
--- /dev/null
+++ b/assets/js/23b051ad.94430174.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2381],{3700:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>c});var n=s(6560),o=s(4848),i=s(8453);const a={slug:"unveil-fluss-logo",title:"The Story of Fluss Logo",authors:["jark"]},r=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Introducing the Little Otter",id:"introducing-the-little-otter",level:2},{value:"Logo symbolism: what do we w [...]
\ No newline at end of file
diff --git a/assets/js/2421e55a.81216e2f.js b/assets/js/2421e55a.81216e2f.js
new file mode 100644
index 0000000..a88dabe
--- /dev/null
+++ b/assets/js/2421e55a.81216e2f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3234],{6596:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"maintenance/observability/quickstart","title":"Observability Quickstart Guides","description":"On this page, you can find the following guides to set up an observability stack based on the instructions in the Flink quickstart guide:","source":"@site/ [...]
\ No newline at end of file
diff --git a/assets/js/26fffdeb.6a066b8e.js b/assets/js/26fffdeb.6a066b8e.js
new file mode 100644
index 0000000..1e3c421
--- /dev/null
+++ b/assets/js/26fffdeb.6a066b8e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3984],{2211:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"concepts/architecture","title":"Architecture","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/concepts/architecture.md","sourceDirName":"concepts","slug":"/concepts/architecture","permalink":"/docs/concepts/architecture","draft":fa [...]
\ No newline at end of file
diff --git a/assets/js/27606b7d.9f9fe63f.js b/assets/js/27606b7d.9f9fe63f.js
new file mode 100644
index 0000000..ad79993
--- /dev/null
+++ b/assets/js/27606b7d.9f9fe63f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3593],{6598:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"install-deploy/deploying-distributed-cluster","title":"Deploying Distributed Cluster","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/install-deploy/deploying-distributed-cluster.md","sourceDirName":"install-deploy","slug":"/instal [...]
\ No newline at end of file
diff --git a/assets/js/2f1b6021.a871f4dc.js b/assets/js/2f1b6021.a871f4dc.js
new file mode 100644
index 0000000..553e1c1
--- /dev/null
+++ b/assets/js/2f1b6021.a871f4dc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4359],{3126:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"install-deploy/deploying-distributed-cluster","title":"Deploying Distributed Cluster","description":"This page provides instructions on how to deploy a distributed cluster for Fluss on bare machines.","source":"@site/versioned_docs/version-0.5/instal [...]
\ No newline at end of file
diff --git a/assets/js/2f611e4f.7b4fb968.js b/assets/js/2f611e4f.7b4fb968.js
new file mode 100644
index 0000000..fa6af95
--- /dev/null
+++ b/assets/js/2f611e4f.7b4fb968.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8552],{8428:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"maintenance/filesystems/oss","title":"Aliyun OSS","description":"\x3c!--","source":"@site/docs/maintenance/filesystems/oss.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/oss","permalink":"/docs/next/maintenance/filesys [...]
\ No newline at end of file
diff --git a/assets/js/2fcb5bc8.9de2a3df.js b/assets/js/2fcb5bc8.9de2a3df.js
new file mode 100644
index 0000000..97fd67a
--- /dev/null
+++ b/assets/js/2fcb5bc8.9de2a3df.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7400],{9324:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"maintenance/filesystems/hdfs","title":"HDFS","description":"HDFS (Hadoop Distributed File System) is the primary storage system used by Hadoop applications. Fluss","source":"@site/versioned_docs/version-0.6/maintenance/filesystems/hdfs.md","sourceDir [...]
\ No newline at end of file
diff --git a/assets/js/30cd2908.f58c7c7f.js b/assets/js/30cd2908.f58c7c7f.js
new file mode 100644
index 0000000..491cbc7
--- /dev/null
+++ b/assets/js/30cd2908.f58c7c7f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4616],{843:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>d});var r=s(7086),t=s(4848),i=s(8453);const a={slug:"partial-updates",title:"Understanding Partial Updates",authors:["giannis"]},o=void 0,l={authorsImageUrls:[void 0]},d=[{value:"Partial Updates: A Different Approach with Fluss",id:"partial-updates-a-different-approach-with-fluss", [...]
\ No newline at end of file
diff --git a/assets/js/3383ef6c.2b552a69.js b/assets/js/3383ef6c.2b552a69.js
new file mode 100644
index 0000000..c09ae5e
--- /dev/null
+++ b/assets/js/3383ef6c.2b552a69.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[322],{4695:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"install-deploy/overview","title":"Overview","description":"Below, we provide an overview of the key components of a Fluss cluster, detailing their functionalities and implementations. Additionally, we will introduce the various deployment methods avai [...]
\ No newline at end of file
diff --git a/assets/js/34b70234.f2e26d48.js b/assets/js/34b70234.f2e26d48.js
new file mode 100644
index 0000000..757d871
--- /dev/null
+++ b/assets/js/34b70234.f2e26d48.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3720],{3935:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"table-design/data-distribution/partitioning","title":"Partitioning","description":"Partitioned Tables","source":"@site/versioned_docs/version-0.6/table-design/data-distribution/partitioning.md","sourceDirName":"table-design/data-distribution","slug": [...]
\ No newline at end of file
diff --git a/assets/js/3592d2f2.a2c747f9.js b/assets/js/3592d2f2.a2c747f9.js
new file mode 100644
index 0000000..45cdaf5
--- /dev/null
+++ b/assets/js/3592d2f2.a2c747f9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3472],{7307:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"security/overview","title":"Security Overview","description":"\x3c!--","source":"@site/docs/security/overview.md","sourceDirName":"security","slug":"/security/overview","permalink":"/docs/next/security/overview","draft":false,"unlisted":false,"editUr [...]
\ No newline at end of file
diff --git a/assets/js/36994c47.caee855f.js b/assets/js/36994c47.caee855f.js
new file mode 100644
index 0000000..9c44d4a
--- /dev/null
+++ b/assets/js/36994c47.caee855f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9858],{5516:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/36a7f4b5.0c490199.js b/assets/js/36a7f4b5.0c490199.js
new file mode 100644
index 0000000..af33ec7
--- /dev/null
+++ b/assets/js/36a7f4b5.0c490199.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8269],{1789:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"streaming-lakehouse/overview","title":"Lakehouse Overview","description":"Introducing Lakehouse","source":"@site/versioned_docs/version-0.6/streaming-lakehouse/overview.md","sourceDirName":"streaming-lakehouse","slug":"/streaming-lakehouse/overview", [...]
\ No newline at end of file
diff --git a/assets/js/3b7198be.9de7aa70.js b/assets/js/3b7198be.9de7aa70.js
new file mode 100644
index 0000000..6f04851
--- /dev/null
+++ b/assets/js/3b7198be.9de7aa70.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6800],{6242:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"table-design/overview","title":"Table Overview","description":"Database","source":"@site/versioned_docs/version-0.5/table-design/overview.md","sourceDirName":"table-design","slug":"/table-design/overview","permalink":"/docs/0.5/table-design/overview" [...]
\ No newline at end of file
diff --git a/assets/js/3cd58720.8859d5d7.js b/assets/js/3cd58720.8859d5d7.js
new file mode 100644
index 0000000..2faed2f
--- /dev/null
+++ b/assets/js/3cd58720.8859d5d7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5957],{7894:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"apis/java-client","title":"Java Client","description":"\x3c!--","source":"@site/docs/apis/java-client.md","sourceDirName":"apis","slug":"/apis/java-client","permalink":"/docs/next/apis/java-client","draft":false,"unlisted":false,"editUrl":"https://gi [...]
\ No newline at end of file
diff --git a/assets/js/3d4c8ad2.ec6fd162.js b/assets/js/3d4c8ad2.ec6fd162.js
new file mode 100644
index 0000000..15aa905
--- /dev/null
+++ b/assets/js/3d4c8ad2.ec6fd162.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6638],{992:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/first-row","title":"FirstRow Merge Engine","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/table-types/pk-table/merge-engines/first-row.md","sourceDirName":"table-design/t [...]
\ No newline at end of file
diff --git a/assets/js/416.33bb0ef6.js b/assets/js/416.33bb0ef6.js
new file mode 100644
index 0000000..fcdd1a8
--- /dev/null
+++ b/assets/js/416.33bb0ef6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[416],{416:(s,e,u)=>{u.r(e)}}]);
\ No newline at end of file
diff --git a/assets/js/41a78b98.c3d2e9f8.js b/assets/js/41a78b98.c3d2e9f8.js
new file mode 100644
index 0000000..c359f02
--- /dev/null
+++ b/assets/js/41a78b98.c3d2e9f8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[323],{9459:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"dev/ide-setup","title":"IDE Setup","description":"\x3c!--","source":"@site/community/dev/ide-setup.md","sourceDirName":"dev","slug":"/dev/ide-setup","permalink":"/community/dev/ide-setup","draft":false,"unlisted":false,"editUrl":"https://github.com/ap [...]
\ No newline at end of file
diff --git a/assets/js/42ce4c3f.5d8dc95f.js b/assets/js/42ce4c3f.5d8dc95f.js
new file mode 100644
index 0000000..85788e3
--- /dev/null
+++ b/assets/js/42ce4c3f.5d8dc95f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5025],{9006:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"how-to-contribute/contribute-docs","title":"Contribute Documentation","description":"\x3c!--","source":"@site/community/how-to-contribute/contribute-docs.md","sourceDirName":"how-to-contribute","slug":"/how-to-contribute/contribute-docs","permalink": [...]
\ No newline at end of file
diff --git a/assets/js/4334.59d2d31f.js b/assets/js/4334.59d2d31f.js
new file mode 100644
index 0000000..af3d3b8
--- /dev/null
+++ b/assets/js/4334.59d2d31f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4334],{4334:(e,t,n)=>{n.r(t),n.d(t,{renderReloadPopup:()=>c});n(6540);var s=n(5338),d=n(4848);const o="pwa-popup-container",r=()=>document.getElementById(o),u=()=>{const e=document.createElement("div");return e.id=o,document.body.appendChild(e),e};function c(e){const t=r()??u();return Promise.all([n.e(1869),n.e(2362)]).then(n.bind(n,2362)).then((({default:n})=>{(0,s.createRoot)(t).render((0,d.jsx)(n,{ [...]
\ No newline at end of file
diff --git a/assets/js/458b5a55.1c0f6d2d.js b/assets/js/458b5a55.1c0f6d2d.js
new file mode 100644
index 0000000..3abbe1f
--- /dev/null
+++ b/assets/js/458b5a55.1c0f6d2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6060],{7300:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/overview","title":"Table Overview","description":"\x3c!--","source":"@site/docs/table-design/overview.md","sourceDirName":"table-design","slug":"/table-design/overview","permalink":"/docs/next/table-design/overview","draft":false,"unlist [...]
\ No newline at end of file
diff --git a/assets/js/47a7ac9f.7ddcdf88.js b/assets/js/47a7ac9f.7ddcdf88.js
new file mode 100644
index 0000000..8f4f955
--- /dev/null
+++ b/assets/js/47a7ac9f.7ddcdf88.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7317],{3299:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"security/authorization","title":"Authorization and ACLs","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/security/authorization.md","sourceDirName":"security","slug":"/security/authorization","permalink":"/docs/security/authorizati [...]
\ No newline at end of file
diff --git a/assets/js/4a4f9f4e.079729e8.js b/assets/js/4a4f9f4e.079729e8.js
new file mode 100644
index 0000000..e7eb7eb
--- /dev/null
+++ b/assets/js/4a4f9f4e.079729e8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9676],{9052:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/first-row","title":"FirstRow Merge Engine","description":"By setting \'table.merge-engine\' = \'first_row\' in the table properties, users can retain the first record for each primary key.","source":"@s [...]
\ No newline at end of file
diff --git a/assets/js/4adbe500.508fb63a.js b/assets/js/4adbe500.508fb63a.js
new file mode 100644
index 0000000..70eaef9
--- /dev/null
+++ b/assets/js/4adbe500.508fb63a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4366],{4031:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/data-distribution/partitioning","title":"Partitioning","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/data-distribution/partitioning.md","sourceDirName":"table-design/data-distribution","slug":"/table-des [...]
\ No newline at end of file
diff --git a/assets/js/4b45c76d.48887489.js b/assets/js/4b45c76d.48887489.js
new file mode 100644
index 0000000..94fc04b
--- /dev/null
+++ b/assets/js/4b45c76d.48887489.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[432],{62:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});const l=JSON.parse('{"id":"install-deploy/deploying-local-cluster","title":"Deploying Local Cluster","description":"This page provides instructions on how to deploy a local cluster (on one machine, but in separate processes) for Fluss.","source":"@site/versioned_docs/version-0.5/ [...]
\ No newline at end of file
diff --git a/assets/js/4c32ba49.829e6eea.js b/assets/js/4c32ba49.829e6eea.js
new file mode 100644
index 0000000..7e9b158
--- /dev/null
+++ b/assets/js/4c32ba49.829e6eea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2469],{6603:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"engine-flink/writes","title":"Flink Writes","description":"You can directly insert or update data into a Fluss table using the INSERT INTO statement.","source":"@site/versioned_docs/version-0.5/engine-flink/writes.md","sourceDirName":"engine-flink"," [...]
\ No newline at end of file
diff --git a/assets/js/4d1f660e.fe58eb7b.js b/assets/js/4d1f660e.fe58eb7b.js
new file mode 100644
index 0000000..71db7b6
--- /dev/null
+++ b/assets/js/4d1f660e.fe58eb7b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1011],{5917:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"quickstart/security","title":"Secure Your Fluss Cluster","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/quickstart/security.md","sourceDirName":"quickstart","slug":"/quickstart/security","permalink":"/docs/quickstart/security","dr [...]
\ No newline at end of file
diff --git a/assets/js/4f3276ea.822436cb.js b/assets/js/4f3276ea.822436cb.js
new file mode 100644
index 0000000..aca3aa7
--- /dev/null
+++ b/assets/js/4f3276ea.822436cb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8323],{9586:(e,a,r)=>{r.r(a),r.d(a,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"maintenance/operations/racks","title":"Racks","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/operations/racks.md","sourceDirName":"maintenance/operations","slug":"/maintenance/operations/racks","permalink":"/docs/maint [...]
\ No newline at end of file
diff --git a/assets/js/5142b284.0055ce46.js b/assets/js/5142b284.0055ce46.js
new file mode 100644
index 0000000..70246af
--- /dev/null
+++ b/assets/js/5142b284.0055ce46.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6315],{8808:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var s=n(6836),o=n(4848),a=n(8453);const r={slug:"fluss-open-source",title:"Fluss is Now Open Source",authors:["jark","giannis"]},i=void 0,c={authorsImageUrls:[void 0,void 0]},l=[];function u(e){const t={a:"a",img:"img",p:"p",strong:"strong",...(0,a.R)(),...e.components};return [...]
\ No newline at end of file
diff --git a/assets/js/53b982b6.ba7f6e03.js b/assets/js/53b982b6.ba7f6e03.js
new file mode 100644
index 0000000..819f376
--- /dev/null
+++ b/assets/js/53b982b6.ba7f6e03.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[874],{6490:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"engine-flink/writes","title":"Flink Writes","description":"\x3c!--","source":"@site/docs/engine-flink/writes.md","sourceDirName":"engine-flink","slug":"/engine-flink/writes","permalink":"/docs/next/engine-flink/writes","draft":false,"unlisted":false," [...]
\ No newline at end of file
diff --git a/assets/js/53e6ccc4.5193c29f.js b/assets/js/53e6ccc4.5193c29f.js
new file mode 100644
index 0000000..bca550b
--- /dev/null
+++ b/assets/js/53e6ccc4.5193c29f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2809],{1404:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>c});var n=s(6836),i=s(4848),a=s(8453);const r={slug:"fluss-open-source",title:"Fluss is Now Open Source",authors:["jark","giannis"]},o=void 0,l={authorsImageUrls:[void 0,void 0]},c=[{value:"Real-Time Streaming Storage for the Lakehouse Era",id:"real-time-streaming-storage-for-the- [...]
\ No newline at end of file
diff --git a/assets/js/53f4d36d.56a9ebab.js b/assets/js/53f4d36d.56a9ebab.js
new file mode 100644
index 0000000..5982b1e
--- /dev/null
+++ b/assets/js/53f4d36d.56a9ebab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5440],{5630:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"engine-flink/getting-started","title":"Getting Started with Flink Engine","description":"Quick Start","source":"@site/versioned_docs/version-0.5/engine-flink/getting-started.md","sourceDirName":"engine-flink","slug":"/engine-flink/getting-started","p [...]
\ No newline at end of file
diff --git a/assets/js/543bd0fc.57a6a8d0.js b/assets/js/543bd0fc.57a6a8d0.js
new file mode 100644
index 0000000..c0b9bee
--- /dev/null
+++ b/assets/js/543bd0fc.57a6a8d0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6166],{7421:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"table-design/data-distribution/ttl","title":"TTL","description":"Fluss supports TTL for data by setting the TTL attribute for tables with \'table.log.ttl\' = \'\' (default is 7 days). Fluss can periodically and automatically check for and clean up ex [...]
\ No newline at end of file
diff --git a/assets/js/551ad8d7.52cd1fd1.js b/assets/js/551ad8d7.52cd1fd1.js
new file mode 100644
index 0000000..f0d1c31
--- /dev/null
+++ b/assets/js/551ad8d7.52cd1fd1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1476],{9951:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"table-design/table-types/pk-table/index","title":"PrimaryKey Table","description":"\x3c!--","source":"@site/docs/table-design/table-types/pk-table/index.md","sourceDirName":"table-design/table-types/pk-table","slug":"/table-design/table-types/pk-tabl [...]
\ No newline at end of file
diff --git a/assets/js/55bbe4da.1b8fb9ee.js b/assets/js/55bbe4da.1b8fb9ee.js
new file mode 100644
index 0000000..155caef
--- /dev/null
+++ b/assets/js/55bbe4da.1b8fb9ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9719],{5184:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/filesystems/s3","title":"Amazon S3","description":"Amazon Simple Storage Service (Amazon S3) is cloud object storage with industry-leading scalability, data availability, security, and performance.","source":"@site/versioned_docs/version- [...]
\ No newline at end of file
diff --git a/assets/js/570364a4.4772b91e.js b/assets/js/570364a4.4772b91e.js
new file mode 100644
index 0000000..56dda38
--- /dev/null
+++ b/assets/js/570364a4.4772b91e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6585],{1746:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/configuration","title":"Configuration","description":"\x3c!--","source":"@site/docs/maintenance/configuration.md","sourceDirName":"maintenance","slug":"/maintenance/configuration","permalink":"/docs/next/maintenance/configuration","draft" [...]
\ No newline at end of file
diff --git a/assets/js/578e9f93.35ce0d1d.js b/assets/js/578e9f93.35ce0d1d.js
new file mode 100644
index 0000000..b1aac4b
--- /dev/null
+++ b/assets/js/578e9f93.35ce0d1d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2451],{4250:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"engine-flink/ddl","title":"Flink DDL","description":"Create Catalog","source":"@site/versioned_docs/version-0.6/engine-flink/ddl.md","sourceDirName":"engine-flink","slug":"/engine-flink/ddl","permalink":"/docs/0.6/engine-flink/ddl","draft":false,"unl [...]
\ No newline at end of file
diff --git a/assets/js/58eba370.2205147a.js b/assets/js/58eba370.2205147a.js
new file mode 100644
index 0000000..862d413
--- /dev/null
+++ b/assets/js/58eba370.2205147a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5588],{3140:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/tiered-storage/overview","title":"Overview","description":"With tiered storage, Fluss allows you to scale compute and storage resources independently, provides better client isolation, and","source":"@site/versioned_docs/version-0.6/maint [...]
\ No newline at end of file
diff --git a/assets/js/59852834.2244b34d.js b/assets/js/59852834.2244b34d.js
new file mode 100644
index 0000000..54422d3
--- /dev/null
+++ b/assets/js/59852834.2244b34d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9707],{7899:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"install-deploy/overview","title":"Installation & Deployment","description":"\x3c!--","source":"@site/docs/install-deploy/overview.md","sourceDirName":"install-deploy","slug":"/install-deploy/overview","permalink":"/docs/next/install-deploy/overview", [...]
\ No newline at end of file
diff --git a/assets/js/5ae8404d.2a206122.js b/assets/js/5ae8404d.2a206122.js
new file mode 100644
index 0000000..b0bfd98
--- /dev/null
+++ b/assets/js/5ae8404d.2a206122.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5902],{5120:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"apis/java-client","title":"Java Client","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/apis/java-client.md","sourceDirName":"apis","slug":"/apis/java-client","permalink":"/docs/apis/java-client","draft":false,"unlisted":false,"edi [...]
\ No newline at end of file
diff --git a/assets/js/5b51c36f.29d7209f.js b/assets/js/5b51c36f.29d7209f.js
new file mode 100644
index 0000000..e871577
--- /dev/null
+++ b/assets/js/5b51c36f.29d7209f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3030],{2421:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"engine-flink/ddl","title":"Flink DDL","description":"Create Catalog","source":"@site/versioned_docs/version-0.5/engine-flink/ddl.md","sourceDirName":"engine-flink","slug":"/engine-flink/ddl","permalink":"/docs/0.5/engine-flink/ddl","draft":false,"unl [...]
\ No newline at end of file
diff --git a/assets/js/5b5e36b9.fe6c15e3.js b/assets/js/5b5e36b9.fe6c15e3.js
new file mode 100644
index 0000000..0c508de
--- /dev/null
+++ b/assets/js/5b5e36b9.fe6c15e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3384],{982:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>s,toc:()=>a});const s=JSON.parse('{"id":"dev/building","title":"Building Fluss","description":"\x3c!--","source":"@site/community/dev/building.md","sourceDirName":"dev","slug":"/dev/building","permalink":"/community/dev/building","draft":false,"unlisted":false,"editUrl":"https://github.com/a [...]
\ No newline at end of file
diff --git a/assets/js/5c1b820e.6b9a6e84.js b/assets/js/5c1b820e.6b9a6e84.js
new file mode 100644
index 0000000..dd35cd5
--- /dev/null
+++ b/assets/js/5c1b820e.6b9a6e84.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1197],{925:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/tiered-storage/lakehouse-storage","title":"Lakehouse Storage","description":"Lakehouse represents a new, open architecture that combines the best elements of data lakes and data warehouses.","source":"@site/versioned_docs/version-0.5/maint [...]
\ No newline at end of file
diff --git a/assets/js/5c9f4624.63b805a6.js b/assets/js/5c9f4624.63b805a6.js
new file mode 100644
index 0000000..dbbd792
--- /dev/null
+++ b/assets/js/5c9f4624.63b805a6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9678],{1889:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"maintenance/observability/quickstart","title":"Observability Quickstart Guides","description":"\x3c!--","source":"@site/docs/maintenance/observability/quickstart.md","sourceDirName":"maintenance/observability","slug":"/maintenance/observability/quick [...]
\ No newline at end of file
diff --git a/assets/js/5e95c892.b0b1bb64.js b/assets/js/5e95c892.b0b1bb64.js
new file mode 100644
index 0000000..a7f0a59
--- /dev/null
+++ b/assets/js/5e95c892.b0b1bb64.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>f});r(6540);var u=r(4164),t=r(5500),a=r(7559),c=r(2831),l=r(6716),n=r(4848);function f(e){return(0,n.jsx)(t.e3,{className:(0,u.A)(a.G.wrapper.docsPages),children:(0,n.jsx)(l.A,{children:(0,c.v)(e.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/5eb2b302.c50021d8.js b/assets/js/5eb2b302.c50021d8.js
new file mode 100644
index 0000000..c08a836
--- /dev/null
+++ b/assets/js/5eb2b302.c50021d8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3766],{5039:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var s=n(8828),a=n(4848),t=n(8453);const r={slug:"unified-streaming-lakehouse",title:"Towards A Unified Streaming & Lakehouse Architecture",sidebar_label:"Toward Streaming Lakehouse",authors:["yuxia"]},o=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Fluss Unified Streaming &a [...]
\ No newline at end of file
diff --git a/assets/js/5f03234c.db475889.js b/assets/js/5f03234c.db475889.js
new file mode 100644
index 0000000..84c590c
--- /dev/null
+++ b/assets/js/5f03234c.db475889.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4803],{6417:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"quickstart/flink","title":"Real-Time Analytics with Flink.","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/quickstart/flink.md","sourceDirName":"quickstart","slug":"/quickstart/flink","permalink":"/docs/quickstart/flink","draft":f [...]
\ No newline at end of file
diff --git a/assets/js/61744635.663e727f.js b/assets/js/61744635.663e727f.js
new file mode 100644
index 0000000..37de434
--- /dev/null
+++ b/assets/js/61744635.663e727f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8123],{1847:(e,a,s)=>{s.r(a),s.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"maintenance/tiered-storage/lakehouse-storage","title":"Lakehouse Storage","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/tiered-storage/lakehouse-storage.md","sourceDirName":"maintenance/tiered-storage","slug":"/mainte [...]
\ No newline at end of file
diff --git a/assets/js/61e3d4cc.5a748462.js b/assets/js/61e3d4cc.5a748462.js
new file mode 100644
index 0000000..891fab2
--- /dev/null
+++ b/assets/js/61e3d4cc.5a748462.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9910],{2813:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var i=a(7848),s=a(4848),n=a(8453);const r={slug:"fluss-intro",title:"Introducing Fluss: Streaming Storage for Real-Time Analytics",sidebar_label:"Introducing Fluss",authors:["jark"]},o=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Key Features of Fluss",id:"key-features-of-f [...]
\ No newline at end of file
diff --git a/assets/js/621db11d.11d26f97.js b/assets/js/621db11d.11d26f97.js
new file mode 100644
index 0000000..6ca1aa6
--- /dev/null
+++ b/assets/js/621db11d.11d26f97.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4212],{3250:(s,t,e)=>{e.r(t),e.d(t,{default:()=>m});e(6540);var a=e(4164),r=e(5500),o=e(7559),u=e(6461),l=e(8027),n=e(1463),i=e(1107),c=e(6382);const h={authorListItem:"authorListItem_n3yI"};var g=e(4848);function p({author:s}){return(0,g.jsx)("li",{className:h.authorListItem,children:(0,g.jsx)(c.A,{as:"h2",author:s,count:s.count})})}function d({authors:s}){return(0,g.jsx)("section",{className:(0,a.A) [...]
\ No newline at end of file
diff --git a/assets/js/62a7ca7a.7cbc4cfd.js b/assets/js/62a7ca7a.7cbc4cfd.js
new file mode 100644
index 0000000..5ff6f06
--- /dev/null
+++ b/assets/js/62a7ca7a.7cbc4cfd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[275],{4598:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"table-design/overview","title":"Table Overview","description":"Database","source":"@site/versioned_docs/version-0.6/table-design/overview.md","sourceDirName":"table-design","slug":"/table-design/overview","permalink":"/docs/0.6/table-design/overview", [...]
\ No newline at end of file
diff --git a/assets/js/6633675b.152a5aa5.js b/assets/js/6633675b.152a5aa5.js
new file mode 100644
index 0000000..d2b9394
--- /dev/null
+++ b/assets/js/6633675b.152a5aa5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4850],{7929:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"install-deploy/deploying-distributed-cluster","title":"Deploying Distributed Cluster","description":"\x3c!--","source":"@site/docs/install-deploy/deploying-distributed-cluster.md","sourceDirName":"install-deploy","slug":"/install-deploy/deploying-dis [...]
\ No newline at end of file
diff --git a/assets/js/671ce0dc.2e85b86f.js b/assets/js/671ce0dc.2e85b86f.js
new file mode 100644
index 0000000..e6f4edd
--- /dev/null
+++ b/assets/js/671ce0dc.2e85b86f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[750],{2246:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"maintenance/filesystems/oss","title":"Aliyun OSS","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/filesystems/oss.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/oss","permalink":"/docs/mai [...]
\ No newline at end of file
diff --git a/assets/js/67628f41.3cebbfec.js b/assets/js/67628f41.3cebbfec.js
new file mode 100644
index 0000000..5081483
--- /dev/null
+++ b/assets/js/67628f41.3cebbfec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8221],{8055:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"quickstart/flink","title":"Real-Time Analytics with Flink.","description":"\x3c!--","source":"@site/docs/quickstart/flink.md","sourceDirName":"quickstart","slug":"/quickstart/flink","permalink":"/docs/next/quickstart/flink","draft":false,"unlisted":f [...]
\ No newline at end of file
diff --git a/assets/js/6872a836.83c6a7a9.js b/assets/js/6872a836.83c6a7a9.js
new file mode 100644
index 0000000..9cb231a
--- /dev/null
+++ b/assets/js/6872a836.83c6a7a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9390],{3875:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.6","label":"0.6","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.6","isLast":false,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Introduction","href":"/docs/0.6/intro","docId":"intro","unlisted":false},{"type":"category","label":"Quick Start","collapsible":true,"collapsed":true [...]
\ No newline at end of file
diff --git a/assets/js/6875c492.6005760d.js b/assets/js/6875c492.6005760d.js
new file mode 100644
index 0000000..8f64260
--- /dev/null
+++ b/assets/js/6875c492.6005760d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4813],{7713:(e,t,a)=>{a.d(t,{A:()=>r});a(6540);var n=a(1312),s=a(9022),i=a(4848);function r(e){const{metadata:t}=e,{previousPage:a,nextPage:r}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,i.jsx)(s.A,{permalink:a,title:(0,i.jsx)( [...]
\ No newline at end of file
diff --git a/assets/js/6892f617.8d5c279a.js b/assets/js/6892f617.8d5c279a.js
new file mode 100644
index 0000000..8c9f995
--- /dev/null
+++ b/assets/js/6892f617.8d5c279a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7828],{898:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/observability/metric-reporters","title":"Metric Reporters","description":"\x3c!--","source":"@site/docs/maintenance/observability/metric-reporters.md","sourceDirName":"maintenance/observability","slug":"/maintenance/observability/metric-re [...]
\ No newline at end of file
diff --git a/assets/js/6ada9c37.e19625ea.js b/assets/js/6ada9c37.e19625ea.js
new file mode 100644
index 0000000..ca98d2d
--- /dev/null
+++ b/assets/js/6ada9c37.e19625ea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3295],{5024:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var s=n(6990),o=n(4848),a=n(8453);const i={slug:"why-fluss",title:"Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics",sidebar_label:"Why Fluss? Top 4 Challenges of Kafka",authors:["jark"]},r=void 0,l={authorsImageUrls:[void 0]},u=[];function c(e){const t={p:"p [...]
\ No newline at end of file
diff --git a/assets/js/6e1c1147.ad5293df.js b/assets/js/6e1c1147.ad5293df.js
new file mode 100644
index 0000000..45fd65a
--- /dev/null
+++ b/assets/js/6e1c1147.ad5293df.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4405],{2313:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"concepts/architecture","title":"Architecture","description":"A Fluss cluster consists of two main processes: the CoordinatorServer and the TabletServer.","source":"@site/versioned_docs/version-0.5/concepts/architecture.md","sourceDirName":"concepts", [...]
\ No newline at end of file
diff --git a/assets/js/6f39ec98.45eeb395.js b/assets/js/6f39ec98.45eeb395.js
new file mode 100644
index 0000000..2870165
--- /dev/null
+++ b/assets/js/6f39ec98.45eeb395.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3676],{3792:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"maintenance/tiered-storage/remote-storage","title":"Remote Storage","description":"Remote storage usually means a cost-efficient and fault-tolerant storage comparing to local disk, such as S3, HDFS, OSS.","source":"@site/versioned_docs/version-0.6/ma [...]
\ No newline at end of file
diff --git a/assets/js/6f951a55.51feb855.js b/assets/js/6f951a55.51feb855.js
new file mode 100644
index 0000000..6f9dc73
--- /dev/null
+++ b/assets/js/6f951a55.51feb855.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1477],{5862:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});var t=i(637),s=i(4848),a=i(8453);const r={title:"Announcing Fluss 0.7",authors:["jark"],date:new Date("2025-06-18T00:00:00.000Z"),tags:["releases"]},o=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Stability Enhancements",id:"stability-enhancements",level:2},{value:"New Archi [...]
\ No newline at end of file
diff --git a/assets/js/6fa4a995.52b891b8.js b/assets/js/6fa4a995.52b891b8.js
new file mode 100644
index 0000000..3931f56
--- /dev/null
+++ b/assets/js/6fa4a995.52b891b8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8784],{1025:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"install-deploy/overview","title":"Overview","description":"Below, we provide an overview of the key components of a Fluss cluster, detailing their functionalities and implementations. Additionally, we will introduce the various deployment methods ava [...]
\ No newline at end of file
diff --git a/assets/js/7042dea6.aef4482b.js b/assets/js/7042dea6.aef4482b.js
new file mode 100644
index 0000000..d441d84
--- /dev/null
+++ b/assets/js/7042dea6.aef4482b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2760],{3060:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"dev/building","title":"Building Fluss from Source","description":"This page covers how to build Fluss 0.6.0-SNAPSHOT from sources.","source":"@site/versioned_docs/version-0.5/dev/building.md","sourceDirName":"dev","slug":"/dev/building","permalink":" [...]
\ No newline at end of file
diff --git a/assets/js/7341f5c8.ba95cdab.js b/assets/js/7341f5c8.ba95cdab.js
new file mode 100644
index 0000000..7376ab9
--- /dev/null
+++ b/assets/js/7341f5c8.ba95cdab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2394],{5604:(e,a,i)=>{i.r(a),i.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var s=i(6990),t=i(4848),n=i(8453);const r={slug:"why-fluss",title:"Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics",sidebar_label:"Why Fluss? Top 4 Challenges of Kafka",authors:["jark"]},o=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Kafka Falls Short in  [...]
\ No newline at end of file
diff --git a/assets/js/74c0211a.a89d76c6.js b/assets/js/74c0211a.a89d76c6.js
new file mode 100644
index 0000000..f744768
--- /dev/null
+++ b/assets/js/74c0211a.a89d76c6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9918],{8968:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"engine-flink/options","title":"Connector Options","description":"The following table lists the options that can be used to configure the Fluss table in Flink, including the storage format, the read/write behaviors.","source":"@site/versioned_docs/ver [...]
\ No newline at end of file
diff --git a/assets/js/7518.ce485ab7.js b/assets/js/7518.ce485ab7.js
new file mode 100644
index 0000000..b83f230
--- /dev/null
+++ b/assets/js/7518.ce485ab7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7518],{1715:(e,t,s)=>{s.d(t,{in:()=>c,OU:()=>A,Ki:()=>k,kJ:()=>x,x:()=>l,e7:()=>h,J_:()=>p,Gx:()=>N});var a=s(6540),n=s(9532),i=s(6803),r=s(4848);function l(){const e=(0,i.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=a.createContext(null);function c({children:e [...]
\ No newline at end of file
diff --git a/assets/js/75814064.622992bb.js b/assets/js/75814064.622992bb.js
new file mode 100644
index 0000000..698c5c7
--- /dev/null
+++ b/assets/js/75814064.622992bb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8152],{6262:(e,l,n)=>{n.r(l),n.d(l,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"install-deploy/deploying-local-cluster","title":"Deploying Local Cluster","description":"\x3c!--","source":"@site/docs/install-deploy/deploying-local-cluster.md","sourceDirName":"install-deploy","slug":"/install-deploy/deploying-local-cluster","perma [...]
\ No newline at end of file
diff --git a/assets/js/766a25e8.14effa8a.js b/assets/js/766a25e8.14effa8a.js
new file mode 100644
index 0000000..0e55882
--- /dev/null
+++ b/assets/js/766a25e8.14effa8a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3211],{6587:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"maintenance/tiered-storage/remote-storage","title":"Remote Storage","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/tiered-storage/remote-storage.md","sourceDirName":"maintenance/tiered-storage","slug":"/maintenance/tie [...]
\ No newline at end of file
diff --git a/assets/js/793af37f.de43513f.js b/assets/js/793af37f.de43513f.js
new file mode 100644
index 0000000..99179e6
--- /dev/null
+++ b/assets/js/793af37f.de43513f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2769],{1481:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/versioned","title":"Versioned Merge Engine","description":"The Versioned Merge Engine enables data updates based on version numbers or event timestamps. It ensures that only the row with the highest ver [...]
\ No newline at end of file
diff --git a/assets/js/7a67eafe.240f8edf.js b/assets/js/7a67eafe.240f8edf.js
new file mode 100644
index 0000000..37cf59f
--- /dev/null
+++ b/assets/js/7a67eafe.240f8edf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[891],{6467:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"streaming-lakehouse/overview","title":"Lakehouse Overview","description":"\x3c!--","source":"@site/docs/streaming-lakehouse/overview.md","sourceDirName":"streaming-lakehouse","slug":"/streaming-lakehouse/overview","permalink":"/docs/next/streaming-lak [...]
\ No newline at end of file
diff --git a/assets/js/7b6674ff.4e53dd13.js b/assets/js/7b6674ff.4e53dd13.js
new file mode 100644
index 0000000..4bbde14
--- /dev/null
+++ b/assets/js/7b6674ff.4e53dd13.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8729],{1913:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintenance/filesystems/oss","title":"Aliyun OSS","description":"OSS: Object Storage Service","source":"@site/versioned_docs/version-0.5/maintenance/filesystems/oss.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/oss"," [...]
\ No newline at end of file
diff --git a/assets/js/7eb6f3f2.640ea4da.js b/assets/js/7eb6f3f2.640ea4da.js
new file mode 100644
index 0000000..bd44512
--- /dev/null
+++ b/assets/js/7eb6f3f2.640ea4da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[90],{9361:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"table-design/data-types","title":"Data Types","description":"\x3c!--","source":"@site/docs/table-design/data-types.md","sourceDirName":"table-design","slug":"/table-design/data-types","permalink":"/docs/next/table-design/data-types","draft":false,"unli [...]
\ No newline at end of file
diff --git a/assets/js/7fff8ac1.a485420d.js b/assets/js/7fff8ac1.a485420d.js
new file mode 100644
index 0000000..08bf8ce
--- /dev/null
+++ b/assets/js/7fff8ac1.a485420d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2389],{4969:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"security/authentication","title":"Security Authentication","description":"\x3c!--","source":"@site/docs/security/authentication.md","sourceDirName":"security","slug":"/security/authentication","permalink":"/docs/next/security/authentication","draft": [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.9279044d.js b/assets/js/814f3328.9279044d.js
new file mode 100644
index 0000000..73cbd85
--- /dev/null
+++ b/assets/js/814f3328.9279044d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7472],{5513:e=>{e.exports=JSON.parse('{"title":"All our posts","items":[{"title":"Announcing Fluss 0.7","permalink":"/blog/releases/0.7","unlisted":false,"date":"2025-06-18T00:00:00.000Z"},{"title":"Understanding Partial Updates","permalink":"/blog/partial-updates","unlisted":false,"date":"2025-06-01T00:00:00.000Z"},{"title":"The Story of Fluss Logo","permalink":"/blog/unveil-fluss-logo","unlisted":fa [...]
\ No newline at end of file
diff --git a/assets/js/8158.9845449e.js b/assets/js/8158.9845449e.js
new file mode 100644
index 0000000..f13eef1
--- /dev/null
+++ b/assets/js/8158.9845449e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8158],{8158:(s,e,a)=>{a.r(e),a.d(e,{DocSearchModal:()=>u.a1});var u=a(3219)}}]);
\ No newline at end of file
diff --git a/assets/js/819b95c6.6f199823.js b/assets/js/819b95c6.6f199823.js
new file mode 100644
index 0000000..a9787d2
--- /dev/null
+++ b/assets/js/819b95c6.6f199823.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9826],{2003:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>i,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"install-deploy/deploying-with-docker","title":"Deploying with Docker","description":"This guide will show you how to run a Fluss cluster using Docker. In this guide, we will introduce the prerequisites of","source":"@site/versioned_docs/version-0.5/i [...]
\ No newline at end of file
diff --git a/assets/js/81a7527c.5e5d99c5.js b/assets/js/81a7527c.5e5d99c5.js
new file mode 100644
index 0000000..ce07ad2
--- /dev/null
+++ b/assets/js/81a7527c.5e5d99c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8389],{4124:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"table-design/data-distribution/ttl","title":"TTL","description":"Fluss supports TTL for data by setting the TTL attribute for tables with \'table.log.ttl\' = \'\' (default is 7 days). Fluss can periodically and automatically check for and clean up ex [...]
\ No newline at end of file
diff --git a/assets/js/82b3d388.b7e34806.js b/assets/js/82b3d388.b7e34806.js
new file mode 100644
index 0000000..9ba4888
--- /dev/null
+++ b/assets/js/82b3d388.b7e34806.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4715],{5220:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"maintenance/filesystems/overview","title":"File Systems","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/filesystems/overview.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/overview","per [...]
\ No newline at end of file
diff --git a/assets/js/831425ee.44b4dde7.js b/assets/js/831425ee.44b4dde7.js
new file mode 100644
index 0000000..ac07698
--- /dev/null
+++ b/assets/js/831425ee.44b4dde7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7390],{1748:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"quickstart/flink","title":"Real-Time Analytics With Flink","description":"This guide will get you up and running with Apache Flink to do real-time analytics, covering some powerful features of Fluss,","source":"@site/versioned_docs/version-0.6/quicks [...]
\ No newline at end of file
diff --git a/assets/js/84700fe1.5f474ed8.js b/assets/js/84700fe1.5f474ed8.js
new file mode 100644
index 0000000..f1a5924
--- /dev/null
+++ b/assets/js/84700fe1.5f474ed8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9922],{1925:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"engine-flink/reads","title":"Flink Reads","description":"Fluss supports streaming and batch read with Apache Flink\'s SQL & Table API. Execute the following SQL command to switch execution mode from streaming to batch, and vice versa:","source":"@sit [...]
\ No newline at end of file
diff --git a/assets/js/87ceda19.bb5e8c0e.js b/assets/js/87ceda19.bb5e8c0e.js
new file mode 100644
index 0000000..9039d66
--- /dev/null
+++ b/assets/js/87ceda19.bb5e8c0e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4503],{623:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/data-distribution/bucketing","title":"Bucketing","description":"\x3c!--","source":"@site/docs/table-design/data-distribution/bucketing.md","sourceDirName":"table-design/data-distribution","slug":"/table-design/data-distribution/bucketing" [...]
\ No newline at end of file
diff --git a/assets/js/8913.091ca4da.js b/assets/js/8913.091ca4da.js
new file mode 100644
index 0000000..3afafa7
--- /dev/null
+++ b/assets/js/8913.091ca4da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8913],{8913:(s,e,u)=>{u.r(e)}}]);
\ No newline at end of file
diff --git a/assets/js/8a1416ba.b2413a8e.js b/assets/js/8a1416ba.b2413a8e.js
new file mode 100644
index 0000000..334d938
--- /dev/null
+++ b/assets/js/8a1416ba.b2413a8e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7699],{5427:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"concepts/architecture","title":"Architecture","description":"\x3c!--","source":"@site/docs/concepts/architecture.md","sourceDirName":"concepts","slug":"/concepts/architecture","permalink":"/docs/next/concepts/architecture","draft":false,"unlisted":fa [...]
\ No newline at end of file
diff --git a/assets/js/8b1cd994.de28797f.js b/assets/js/8b1cd994.de28797f.js
new file mode 100644
index 0000000..27f1522
--- /dev/null
+++ b/assets/js/8b1cd994.de28797f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2851],{2861:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>l,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"maintenance/configuration","title":"Server Configuration","description":"All configurations can be set in Fluss configuration file conf/server.yaml","source":"@site/versioned_docs/version-0.6/maintenance/configuration.md","sourceDirName":"maintenance [...]
\ No newline at end of file
diff --git a/assets/js/8d16c60e.c0c98296.js b/assets/js/8d16c60e.c0c98296.js
new file mode 100644
index 0000000..059b83a
--- /dev/null
+++ b/assets/js/8d16c60e.c0c98296.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8848],{2278:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"maintenance/filesystems/hdfs","title":"HDFS","description":"HDFS (Hadoop Distributed File System) is the primary storage system used by Hadoop applications. Fluss","source":"@site/versioned_docs/version-0.5/maintenance/filesystems/hdfs.md","sourceDir [...]
\ No newline at end of file
diff --git a/assets/js/8e2e4f36.ea6d803d.js b/assets/js/8e2e4f36.ea6d803d.js
new file mode 100644
index 0000000..7b7de9e
--- /dev/null
+++ b/assets/js/8e2e4f36.ea6d803d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6960],{4215:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"table-design/data-distribution/ttl","title":"TTL","description":"\x3c!--","source":"@site/docs/table-design/data-distribution/ttl.md","sourceDirName":"table-design/data-distribution","slug":"/table-design/data-distribution/ttl","permalink":"/docs/nex [...]
\ No newline at end of file
diff --git a/assets/js/8e9d555c.8e8cb9d1.js b/assets/js/8e9d555c.8e8cb9d1.js
new file mode 100644
index 0000000..e916b45
--- /dev/null
+++ b/assets/js/8e9d555c.8e8cb9d1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8211],{3645:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var s=n(7086),a=n(4848),r=n(8453);const i={slug:"partial-updates",title:"Understanding Partial Updates",authors:["giannis"]},o=void 0,l={authorsImageUrls:[void 0]},c=[];function d(e){const t={em:"em",img:"img",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs [...]
\ No newline at end of file
diff --git a/assets/js/8f16bea6.f9641cb2.js b/assets/js/8f16bea6.f9641cb2.js
new file mode 100644
index 0000000..b17fb2b
--- /dev/null
+++ b/assets/js/8f16bea6.f9641cb2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2350],{2760:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>o});const n=JSON.parse('{"id":"engine-flink/ddl","title":"Flink DDL","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/ddl.md","sourceDirName":"engine-flink","slug":"/engine-flink/ddl","permalink":"/docs/engine-flink/ddl","draft":false,"unlisted":fals [...]
\ No newline at end of file
diff --git a/assets/js/95c5923f.348ace97.js b/assets/js/95c5923f.348ace97.js
new file mode 100644
index 0000000..d50cd69
--- /dev/null
+++ b/assets/js/95c5923f.348ace97.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7703],{7352:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});const l=JSON.parse('{"id":"install-deploy/deploying-local-cluster","title":"Deploying Local Cluster","description":"This page provides instructions on how to deploy a local cluster (on one machine, but in separate processes) for Fluss.","source":"@site/versioned_docs/version-0 [...]
\ No newline at end of file
diff --git a/assets/js/95cf59a1.fa0c2a42.js b/assets/js/95cf59a1.fa0c2a42.js
new file mode 100644
index 0000000..e8530e4
--- /dev/null
+++ b/assets/js/95cf59a1.fa0c2a42.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4254],{6671:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"maintenance/configuration","title":"Configuration","description":"All configurations can be set in Fluss configuration file conf/server.yaml","source":"@site/versioned_docs/version-0.5/maintenance/configuration.md","sourceDirName":"maintenance","slug [...]
\ No newline at end of file
diff --git a/assets/js/9730.01eafbca.js b/assets/js/9730.01eafbca.js
new file mode 100644
index 0000000..81cb4c3
--- /dev/null
+++ b/assets/js/9730.01eafbca.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9730],{9730:(n,t,e)=>{e.r(t),e.d(t,{Workbox:()=>p,WorkboxEvent:()=>f,messageSW:()=>r});try{self["workbox:window:7.2.0"]&&_()}catch(r){}function r(n,t){return new Promise((function(e){var r=new MessageChannel;r.port1.onmessage=function(n){e(n.data)},n.postMessage(t,[r.port2])}))}function i(n){var t=function(n){if("object"!=typeof n||!n)return n;var t=n[Symbol.toPrimitive];if(void 0!==t){var e=t.call(n, [...]
\ No newline at end of file
diff --git a/assets/js/993f72ea.52a8f949.js b/assets/js/993f72ea.52a8f949.js
new file mode 100644
index 0000000..40841dd
--- /dev/null
+++ b/assets/js/993f72ea.52a8f949.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1347],{9260:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"security/authorization","title":"Authorization and ACLs","description":"\x3c!--","source":"@site/docs/security/authorization.md","sourceDirName":"security","slug":"/security/authorization","permalink":"/docs/next/security/authorization","draft":false [...]
\ No newline at end of file
diff --git a/assets/js/994319c2.80968371.js b/assets/js/994319c2.80968371.js
new file mode 100644
index 0000000..975361d
--- /dev/null
+++ b/assets/js/994319c2.80968371.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5175],{7109:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var t=i(9485),s=i(4848),r=i(8453);const o={title:"Announcing Fluss 0.6",authors:["jark"],date:new Date("2025-03-10T00:00:00.000Z"),tags:["releases"]},a=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Column Compression",id:"column-compression",level:2},{value:"Merge Engine",id [...]
\ No newline at end of file
diff --git a/assets/js/9a4f2fbf.f2ed9082.js b/assets/js/9a4f2fbf.f2ed9082.js
new file mode 100644
index 0000000..773e04d
--- /dev/null
+++ b/assets/js/9a4f2fbf.f2ed9082.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4959],{8742:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"table-design/data-types","title":"Data Types","description":"Fluss has a rich set of native data types available to users. All the data types of Fluss are as follows:","source":"@site/versioned_docs/version-0.5/table-design/data-types.md","sourceDirN [...]
\ No newline at end of file
diff --git a/assets/js/9a99019d.b44119d4.js b/assets/js/9a99019d.b44119d4.js
new file mode 100644
index 0000000..fc28b1e
--- /dev/null
+++ b/assets/js/9a99019d.b44119d4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[801],{8628:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"intro","title":"Introduction","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/intro.md","sourceDirName":".","slug":"/intro","permalink":"/docs/intro","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fluss/edit/mai [...]
\ No newline at end of file
diff --git a/assets/js/9cc26f6c.49043a70.js b/assets/js/9cc26f6c.49043a70.js
new file mode 100644
index 0000000..5b28954
--- /dev/null
+++ b/assets/js/9cc26f6c.49043a70.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8901],{1151:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"engine-flink/lookups","title":"Flink Lookup Joins","description":"Flink lookup joins are important because they enable efficient, real-time enrichment of streaming data with reference data, a common requirement in many real-time analytics and process [...]
\ No newline at end of file
diff --git a/assets/js/9cd743c9.73105920.js b/assets/js/9cd743c9.73105920.js
new file mode 100644
index 0000000..36fb955
--- /dev/null
+++ b/assets/js/9cd743c9.73105920.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4311],{6401:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var s=n(8828),i=n(4848),a=n(8453);const r={slug:"unified-streaming-lakehouse",title:"Towards A Unified Streaming & Lakehouse Architecture",sidebar_label:"Toward Streaming Lakehouse",authors:["yuxia"]},o=void 0,l={authorsImageUrls:[void 0]},u=[];function c(e){const t={li:"li",p [...]
\ No newline at end of file
diff --git a/assets/js/9df7d16b.b61beae9.js b/assets/js/9df7d16b.b61beae9.js
new file mode 100644
index 0000000..14450d1
--- /dev/null
+++ b/assets/js/9df7d16b.b61beae9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7280],{4810:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"maintenance/tiered-storage/remote-storage","title":"Remote Storage","description":"\x3c!--","source":"@site/docs/maintenance/tiered-storage/remote-storage.md","sourceDirName":"maintenance/tiered-storage","slug":"/maintenance/tiered-storage/remote-sto [...]
\ No newline at end of file
diff --git a/assets/js/9e4087bc.359656f3.js b/assets/js/9e4087bc.359656f3.js
new file mode 100644
index 0000000..f0e851e
--- /dev/null
+++ b/assets/js/9e4087bc.359656f3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2711],{9331:(e,r,a)=>{a.r(r),a.d(r,{default:()=>m});a(6540);var t=a(8774),s=a(1312),n=a(5500),i=a(6266),c=a(6716),l=a(1107),o=a(4848);function d({year:e,posts:r}){const a=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:e,children:e}),(0,o.jsx)("ul",{children:r.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(t.A,{to:e.metadata.per [...]
\ No newline at end of file
diff --git a/assets/js/9ed1c870.946eb50a.js b/assets/js/9ed1c870.946eb50a.js
new file mode 100644
index 0000000..e02d3c5
--- /dev/null
+++ b/assets/js/9ed1c870.946eb50a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6264],{4412:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"table-design/table-types/log-table","title":"Log Table","description":"\x3c!--","source":"@site/docs/table-design/table-types/log-table.md","sourceDirName":"table-design/table-types","slug":"/table-design/table-types/log-table","permalink":"/docs/nex [...]
\ No newline at end of file
diff --git a/assets/js/a2263507.d08e162d.js b/assets/js/a2263507.d08e162d.js
new file mode 100644
index 0000000..53c7610
--- /dev/null
+++ b/assets/js/a2263507.d08e162d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9841],{5296:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/tiered-storage/overview","title":"Overview","description":"With tiered storage, Fluss allows you to scale compute and storage resources independently, provides better client isolation, and","source":"@site/versioned_docs/version-0.5/maint [...]
\ No newline at end of file
diff --git a/assets/js/a41cbb43.5679dc01.js b/assets/js/a41cbb43.5679dc01.js
new file mode 100644
index 0000000..ad8c126
--- /dev/null
+++ b/assets/js/a41cbb43.5679dc01.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1259],{7447:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"engine-flink/reads","title":"Flink Reads","description":"Fluss supports streaming and batch read with Apache Flink\'s SQL & Table API. Execute the following SQL command to switch execution mode from streaming to batch, and vice versa:","source":"@sit [...]
\ No newline at end of file
diff --git a/assets/js/a468dcbb.bcbf443b.js b/assets/js/a468dcbb.bcbf443b.js
new file mode 100644
index 0000000..f73539d
--- /dev/null
+++ b/assets/js/a468dcbb.bcbf443b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7517],{5419:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintenance/observability/logging","title":"Logging","description":"\x3c!--","source":"@site/docs/maintenance/observability/logging.md","sourceDirName":"maintenance/observability","slug":"/maintenance/observability/logging","permalink":"/docs/next/ma [...]
\ No newline at end of file
diff --git a/assets/js/a6aa9e1f.ad1370f0.js b/assets/js/a6aa9e1f.ad1370f0.js
new file mode 100644
index 0000000..911f192
--- /dev/null
+++ b/assets/js/a6aa9e1f.ad1370f0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7643],{5124:(e,t,a)=>{a.r(t),a.d(t,{default:()=>j});a(6540);var s=a(4164),n=a(4586),i=a(5500),r=a(7559),l=a(8027),o=a(7713),c=a(1463),d=a(3892),g=a(5260),m=a(1715),u=a(4848);function h(e){const t=(0,m.kJ)(e);return(0,u.jsx)(g.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function p(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,n.A)(),{blogDescription:s,bl [...]
\ No newline at end of file
diff --git a/assets/js/a7456010.c3e92d8b.js b/assets/js/a7456010.c3e92d8b.js
new file mode 100644
index 0000000..554be4e
--- /dev/null
+++ b/assets/js/a7456010.c3e92d8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a78cedb8.2f79dec9.js b/assets/js/a78cedb8.2f79dec9.js
new file mode 100644
index 0000000..ceac7ee
--- /dev/null
+++ b/assets/js/a78cedb8.2f79dec9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4529],{3723:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"maintenance/observability/monitor-metrics","title":"Monitor Metrics","description":"Fluss has built a metrics system to measure the behaviours of cluster and table, like the active CoordinatorServer,","source":"@site/versioned_docs/version-0.6/mainte [...]
\ No newline at end of file
diff --git a/assets/js/a7bd4aaa.66cafdc7.js b/assets/js/a7bd4aaa.66cafdc7.js
new file mode 100644
index 0000000..61fd038
--- /dev/null
+++ b/assets/js/a7bd4aaa.66cafdc7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7098],{4532:(e,n,s)=>{s.r(n),s.d(n,{default:()=>x});s(6540);var r=s(5500),t=s(2565),o=s(3025),i=s(2831),c=s(1463),u=s(4848);function l(e){const{version:n}=e;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.A,{version:n.version,tag:(0,t.k)(n.pluginId,n.version)}),(0,u.jsx)(r.be,{children:n.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function a(e){const{version:n,route: [...]
\ No newline at end of file
diff --git a/assets/js/a94703ab.c15b0b34.js b/assets/js/a94703ab.c15b0b34.js
new file mode 100644
index 0000000..7c2ed8f
--- /dev/null
+++ b/assets/js/a94703ab.c15b0b34.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9048],{1377:(e,t,n)=>{n.r(t),n.d(t,{default:()=>pe});var a=n(6540),o=n(4164),i=n(5500),s=n(7559),r=n(6972),c=n(609),l=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:i,cancelScroll:s}=(0 [...]
\ No newline at end of file
diff --git a/assets/js/aa2d6c3d.9f46bb50.js b/assets/js/aa2d6c3d.9f46bb50.js
new file mode 100644
index 0000000..fb5a20b
--- /dev/null
+++ b/assets/js/aa2d6c3d.9f46bb50.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1903],{6707:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/filesystems/hdfs","title":"HDFS","description":"\x3c!--","source":"@site/docs/maintenance/filesystems/hdfs.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/hdfs","permalink":"/docs/next/maintenance/filesystem [...]
\ No newline at end of file
diff --git a/assets/js/aada36dd.34931ef7.js b/assets/js/aada36dd.34931ef7.js
new file mode 100644
index 0000000..91d305f
--- /dev/null
+++ b/assets/js/aada36dd.34931ef7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2543],{3481:e=>{e.exports=JSON.parse('{"version":{"pluginId":"community","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"Welcome","href":"/community/welcome","docId":"welcome","unlisted":false},{"type":"category","label":"How to Contribute","collapsible":true,"collapsed" [...]
\ No newline at end of file
diff --git a/assets/js/ab240437.05be38ae.js b/assets/js/ab240437.05be38ae.js
new file mode 100644
index 0000000..3062dd9
--- /dev/null
+++ b/assets/js/ab240437.05be38ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5702],{3615:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"streaming-lakehouse/overview","title":"Lakehouse Overview","description":"Introducing Lakehouse","source":"@site/versioned_docs/version-0.5/streaming-lakehouse/overview.md","sourceDirName":"streaming-lakehouse","slug":"/streaming-lakehouse/overview", [...]
\ No newline at end of file
diff --git a/assets/js/aba21aa0.71167bed.js b/assets/js/aba21aa0.71167bed.js
new file mode 100644
index 0000000..bc18a2e
--- /dev/null
+++ b/assets/js/aba21aa0.71167bed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/abf5c5c3.7ac3d297.js b/assets/js/abf5c5c3.7ac3d297.js
new file mode 100644
index 0000000..bd6d60c
--- /dev/null
+++ b/assets/js/abf5c5c3.7ac3d297.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6191],{5058:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/observability/metric-reporters","title":"Metric Reporters","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/observability/metric-reporters.md","sourceDirName":"maintenance/observability","slug":"/maintenance/ [...]
\ No newline at end of file
diff --git a/assets/js/acecf23e.5f6d9927.js b/assets/js/acecf23e.5f6d9927.js
new file mode 100644
index 0000000..fe7ebf4
--- /dev/null
+++ b/assets/js/acecf23e.5f6d9927.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4284],{1912:s=>{s.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog","authorsListPath":"/blog/authors"}')}}]);
\ No newline at end of file
diff --git a/assets/js/add778d1.3cb6f6e2.js b/assets/js/add778d1.3cb6f6e2.js
new file mode 100644
index 0000000..534c1f5
--- /dev/null
+++ b/assets/js/add778d1.3cb6f6e2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3855],{554:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/filesystems/hdfs","title":"HDFS","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/filesystems/hdfs.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/hdfs","permalink":"/docs/mainte [...]
\ No newline at end of file
diff --git a/assets/js/add8cc11.716b17ab.js b/assets/js/add8cc11.716b17ab.js
new file mode 100644
index 0000000..682a0aa
--- /dev/null
+++ b/assets/js/add8cc11.716b17ab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8168],{4279:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"engine-flink/getting-started","title":"Getting Started with Flink Engine","description":"Quick Start","source":"@site/versioned_docs/version-0.6/engine-flink/getting-started.md","sourceDirName":"engine-flink","slug":"/engine-flink/getting-started","p [...]
\ No newline at end of file
diff --git a/assets/js/aeb4150a.f5df3b14.js b/assets/js/aeb4150a.f5df3b14.js
new file mode 100644
index 0000000..35419ee
--- /dev/null
+++ b/assets/js/aeb4150a.f5df3b14.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6488],{7865:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"dev/ide-setup","title":"Import Fluss into an IDE","description":"The sections below describe how to import the Fluss project into an IDE","source":"@site/versioned_docs/version-0.5/dev/ide-setup.md","sourceDirName":"dev","slug":"/dev/ide-setup","perm [...]
\ No newline at end of file
diff --git a/assets/js/b0a08aa7.88c4a943.js b/assets/js/b0a08aa7.88c4a943.js
new file mode 100644
index 0000000..e682214
--- /dev/null
+++ b/assets/js/b0a08aa7.88c4a943.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6887],{9477:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/filesystems/s3","title":"Amazon S3","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/filesystems/s3.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/s3","permalink":"/docs/mainte [...]
\ No newline at end of file
diff --git a/assets/js/b405f593.c44a49bf.js b/assets/js/b405f593.c44a49bf.js
new file mode 100644
index 0000000..f13296c
--- /dev/null
+++ b/assets/js/b405f593.c44a49bf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9371],{6e3:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"table-design/data-types","title":"Data Types","description":"Fluss has a rich set of native data types available to users. All the data types of Fluss are as follows:","source":"@site/versioned_docs/version-0.6/table-design/data-types.md","sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/b4e94af8.1db02b2d.js b/assets/js/b4e94af8.1db02b2d.js
new file mode 100644
index 0000000..6d6acad
--- /dev/null
+++ b/assets/js/b4e94af8.1db02b2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8908],{2395:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>o,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"type":"mdx","permalink":"/roadmap","source":"@site/src/pages/roadmap.md","description":"\x3c!--","frontMatter":{},"unlisted":false}');var t=s(4848),a=s(8453);const r={},l="Fluss Roadmap",o={},c=[{value:"Kafka Protocol Compatibility",id:"kafka-protocol-com [...]
\ No newline at end of file
diff --git a/assets/js/b56224f4.fade629f.js b/assets/js/b56224f4.fade629f.js
new file mode 100644
index 0000000..d173822
--- /dev/null
+++ b/assets/js/b56224f4.fade629f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1428],{5727:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"maintenance/operations/racks","title":"Racks","description":"\x3c!--","source":"@site/docs/maintenance/operations/racks.md","sourceDirName":"maintenance/operations","slug":"/maintenance/operations/racks","permalink":"/docs/next/maintenance/operations [...]
\ No newline at end of file
diff --git a/assets/js/b689a7df.b5208a49.js b/assets/js/b689a7df.b5208a49.js
new file mode 100644
index 0000000..f3b41a0
--- /dev/null
+++ b/assets/js/b689a7df.b5208a49.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4424],{3534:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"engine-flink/getting-started","title":"Getting Started with Flink","description":"\x3c!--","source":"@site/docs/engine-flink/getting-started.md","sourceDirName":"engine-flink","slug":"/engine-flink/getting-started","permalink":"/docs/next/engine-flin [...]
\ No newline at end of file
diff --git a/assets/js/b86fbb72.6dcdacfd.js b/assets/js/b86fbb72.6dcdacfd.js
new file mode 100644
index 0000000..88dd148
--- /dev/null
+++ b/assets/js/b86fbb72.6dcdacfd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4298],{3573:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"how-to-contribute/review-pull-requests","title":"Review Pull Requests","description":"\x3c!--","source":"@site/community/how-to-contribute/review-pull-requests.md","sourceDirName":"how-to-contribute","slug":"/how-to-contribute/review-pull-requests"," [...]
\ No newline at end of file
diff --git a/assets/js/b9d28c39.c7f955fb.js b/assets/js/b9d28c39.c7f955fb.js
new file mode 100644
index 0000000..af85a50
--- /dev/null
+++ b/assets/js/b9d28c39.c7f955fb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7113],{5769:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"streaming-lakehouse/integrate-data-lakes/paimon","title":"Paimon","description":"\x3c!--","source":"@site/docs/streaming-lakehouse/integrate-data-lakes/paimon.md","sourceDirName":"streaming-lakehouse/integrate-data-lakes","slug":"/streaming-lakehouse [...]
\ No newline at end of file
diff --git a/assets/js/bac2b925.0799462b.js b/assets/js/bac2b925.0799462b.js
new file mode 100644
index 0000000..100a12b
--- /dev/null
+++ b/assets/js/bac2b925.0799462b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2887],{7786:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"table-design/data-types","title":"Data Types","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/data-types.md","sourceDirName":"table-design","slug":"/table-design/data-types","permalink":"/docs/table-design/data-types", [...]
\ No newline at end of file
diff --git a/assets/js/bcac6c77.2f068085.js b/assets/js/bcac6c77.2f068085.js
new file mode 100644
index 0000000..75e3a7b
--- /dev/null
+++ b/assets/js/bcac6c77.2f068085.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[109],{6534:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"maintenance/observability/quickstart","title":"Observability Quickstart Guides","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/observability/quickstart.md","sourceDirName":"maintenance/observability","slug":"/maintenanc [...]
\ No newline at end of file
diff --git a/assets/js/bdf1472e.711c56ac.js b/assets/js/bdf1472e.711c56ac.js
new file mode 100644
index 0000000..cea27ad
--- /dev/null
+++ b/assets/js/bdf1472e.711c56ac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5610],{503:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/data-distribution/bucketing","title":"Bucketing","description":"A bucketing strategy is a data distribution technique that divides table data into small pieces","source":"@site/versioned_docs/version-0.6/table-design/data-distribution/buc [...]
\ No newline at end of file
diff --git a/assets/js/bdfb83fe.e7ede2d1.js b/assets/js/bdfb83fe.e7ede2d1.js
new file mode 100644
index 0000000..62fe981
--- /dev/null
+++ b/assets/js/bdfb83fe.e7ede2d1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4569],{3672:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintenance/logging","title":"Logging","description":"All Fluss processes(CoordinatorServer/TabletServer) create a log text file that contains messages for various events happening in that process. These logs provide deep insights into the inner work [...]
\ No newline at end of file
diff --git a/assets/js/c018ef01.b75f04c7.js b/assets/js/c018ef01.b75f04c7.js
new file mode 100644
index 0000000..94f735f
--- /dev/null
+++ b/assets/js/c018ef01.b75f04c7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4617],{1984:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>n,toc:()=>u});var n=o(6560),s=o(4848),r=o(8453);const l={slug:"unveil-fluss-logo",title:"The Story of Fluss Logo",authors:["jark"]},i=void 0,a={authorsImageUrls:[void 0]},u=[{value:"Introducing the Little Otter",id:"introducing-the-little-otter",level:2}];function c(t){const e={a:"a",h2:"h2 [...]
\ No newline at end of file
diff --git a/assets/js/c141421f.483a0d8b.js b/assets/js/c141421f.483a0d8b.js
new file mode 100644
index 0000000..6b54e91
--- /dev/null
+++ b/assets/js/c141421f.483a0d8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3338],{936:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/c143539c.d6a6ec00.js b/assets/js/c143539c.d6a6ec00.js
new file mode 100644
index 0000000..2b26e11
--- /dev/null
+++ b/assets/js/c143539c.d6a6ec00.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6384],{7660:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Introduction","href":"/docs/next/intro","docId":"intro","unlisted":false},{"type":"category","label":"Quick Start","collapsible":true,"collaps [...]
\ No newline at end of file
diff --git a/assets/js/c1d17d03.e515a5ab.js b/assets/js/c1d17d03.e515a5ab.js
new file mode 100644
index 0000000..400b713
--- /dev/null
+++ b/assets/js/c1d17d03.e515a5ab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[64],{9432:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"engine-flink/writes","title":"Flink Writes","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/writes.md","sourceDirName":"engine-flink","slug":"/engine-flink/writes","permalink":"/docs/engine-flink/writes","draft":false,"u [...]
\ No newline at end of file
diff --git a/assets/js/c603b338.4e7d556b.js b/assets/js/c603b338.4e7d556b.js
new file mode 100644
index 0000000..8179536
--- /dev/null
+++ b/assets/js/c603b338.4e7d556b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5091],{963:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>a});const o=JSON.parse('{"id":"maintenance/observability/logging","title":"Logging","description":"All Fluss processes(CoordinatorServer/TabletServer) create a log text file that contains messages for various events happening in that process. These logs provide deep insights into t [...]
\ No newline at end of file
diff --git a/assets/js/c642c7e8.305b183a.js b/assets/js/c642c7e8.305b183a.js
new file mode 100644
index 0000000..097542d
--- /dev/null
+++ b/assets/js/c642c7e8.305b183a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3951],{6122:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>r,contentTitle:()=>l,default:()=>d,frontMatter:()=>c,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"welcome","title":"Welcome","description":"\x3c!--","source":"@site/community/welcome.md","sourceDirName":".","slug":"/welcome","permalink":"/community/welcome","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fluss/edit/main/websit [...]
\ No newline at end of file
diff --git a/assets/js/c7122660.f857c136.js b/assets/js/c7122660.f857c136.js
new file mode 100644
index 0000000..5b30530
--- /dev/null
+++ b/assets/js/c7122660.f857c136.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3482],{1764:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintenance/observability/logging","title":"Logging","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/observability/logging.md","sourceDirName":"maintenance/observability","slug":"/maintenance/observability/logging","per [...]
\ No newline at end of file
diff --git a/assets/js/c88e3dd6.92065d26.js b/assets/js/c88e3dd6.92065d26.js
new file mode 100644
index 0000000..dda4302
--- /dev/null
+++ b/assets/js/c88e3dd6.92065d26.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2900],{7936:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/metric-reporters","title":"Metric Reporters","description":"Fluss allows reporting metrics to external system.","source":"@site/versioned_docs/version-0.5/maintenance/metric-reporters.md","sourceDirName":"maintenance","slug":"/maintenance [...]
\ No newline at end of file
diff --git a/assets/js/ca57b231.0b2d4ab6.js b/assets/js/ca57b231.0b2d4ab6.js
new file mode 100644
index 0000000..a2a9cf9
--- /dev/null
+++ b/assets/js/ca57b231.0b2d4ab6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6279],{5398:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>g,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>h});const l=JSON.parse('{"id":"fluss-logos","title":"Fluss Logos","description":"\x3c!--","source":"@site/community/fluss-logos.md","sourceDirName":".","slug":"/fluss-logos","permalink":"/community/fluss-logos","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/fl [...]
\ No newline at end of file
diff --git a/assets/js/ca81dda5.75ddc20a.js b/assets/js/ca81dda5.75ddc20a.js
new file mode 100644
index 0000000..c61dfd9
--- /dev/null
+++ b/assets/js/ca81dda5.75ddc20a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2560],{9248:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"maintenance/filesystems/s3","title":"Amazon S3","description":"Amazon Simple Storage Service (Amazon S3) is cloud object storage with industry-leading scalability, data availability, security, and performance.","source":"@site/versioned_docs/version- [...]
\ No newline at end of file
diff --git a/assets/js/cc72a6c3.99f02ce5.js b/assets/js/cc72a6c3.99f02ce5.js
new file mode 100644
index 0000000..34b5d53
--- /dev/null
+++ b/assets/js/cc72a6c3.99f02ce5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2905],{2521:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"engine-flink/datastream","title":"DataStream API","description":"\x3c!--","source":"@site/docs/engine-flink/datastream.mdx","sourceDirName":"engine-flink","slug":"/engine-flink/datastream","permalink":"/docs/next/engine-flink/datastream","draft":fals [...]
\ No newline at end of file
diff --git a/assets/js/ccc49370.195c2233.js b/assets/js/ccc49370.195c2233.js
new file mode 100644
index 0000000..f749ed3
--- /dev/null
+++ b/assets/js/ccc49370.195c2233.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3249],{2907:(e,t,n)=>{n.d(t,{A:()=>O});n(6540);var a=n(4164),s=n(1715),i=n(4848);function r({children:e,className:t}){return(0,i.jsx)("article",{className:t,children:e})}var l=n(8774);const o={title:"title_f1Hy"};function c({className:e}){const{metadata:t,isBlogPostPage:n}=(0,s.e7)(),{permalink:r,title:c}=t,d=n?"h1":"h2";return(0,i.jsx)(d,{className:(0,a.A)(o.title,e),children:n?c:(0,i.jsx)(l.A,{to:r, [...]
\ No newline at end of file
diff --git a/assets/js/cd3822f9.ca849a85.js b/assets/js/cd3822f9.ca849a85.js
new file mode 100644
index 0000000..29749d2
--- /dev/null
+++ b/assets/js/cd3822f9.ca849a85.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[876],{4419:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"maintenance/filesystems/overview","title":"File Systems","description":"Fluss uses file systems as remote storage to store snapshots for Primary-Key Table and store tiered log segments for Log Table. These","source":"@site/versioned_docs/version-0.6/m [...]
\ No newline at end of file
diff --git a/assets/js/cddbb034.45d1dfd2.js b/assets/js/cddbb034.45d1dfd2.js
new file mode 100644
index 0000000..8f939e0
--- /dev/null
+++ b/assets/js/cddbb034.45d1dfd2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1599],{878:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"maintenance/filesystems/overview","title":"File Systems","description":"\x3c!--","source":"@site/docs/maintenance/filesystems/overview.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/overview","permalink":"/docs/next/mai [...]
\ No newline at end of file
diff --git a/assets/js/ce40231b.8434e747.js b/assets/js/ce40231b.8434e747.js
new file mode 100644
index 0000000..a51bb1f
--- /dev/null
+++ b/assets/js/ce40231b.8434e747.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3311],{5678:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"table-design/table-types/log-table","title":"Log Table","description":"Basic Concept","source":"@site/versioned_docs/version-0.6/table-design/table-types/log-table.md","sourceDirName":"table-design/table-types","slug":"/table-design/table-types/log-t [...]
\ No newline at end of file
diff --git a/assets/js/cfedf80e.2ed761d9.js b/assets/js/cfedf80e.2ed761d9.js
new file mode 100644
index 0000000..6681a0f
--- /dev/null
+++ b/assets/js/cfedf80e.2ed761d9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9236],{2751:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"maintenance/operations/upgrading","title":"Upgrading and Compatibility","description":"\x3c!--","source":"@site/docs/maintenance/operations/upgrading.md","sourceDirName":"maintenance/operations","slug":"/maintenance/operations/upgrading","permalink": [...]
\ No newline at end of file
diff --git a/assets/js/d0be6a34.7f9b7175.js b/assets/js/d0be6a34.7f9b7175.js
new file mode 100644
index 0000000..c54e7f1
--- /dev/null
+++ b/assets/js/d0be6a34.7f9b7175.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3438],{8800:(e,l,n)=>{n.r(l),n.d(l,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"install-deploy/deploying-local-cluster","title":"Deploying Local Cluster","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/install-deploy/deploying-local-cluster.md","sourceDirName":"install-deploy","slug":"/install-deploy/deploying [...]
\ No newline at end of file
diff --git a/assets/js/d24ecfdc.d1c7cff7.js b/assets/js/d24ecfdc.d1c7cff7.js
new file mode 100644
index 0000000..cf0b954
--- /dev/null
+++ b/assets/js/d24ecfdc.d1c7cff7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3080],{4670:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.5","label":"0.5","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.5","isLast":false,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Introduction","href":"/docs/0.5/intro","docId":"intro","unlisted":false},{"type":"category","label":"Quick Start","collapsible":true,"collapsed":true [...]
\ No newline at end of file
diff --git a/assets/js/d2806a11.06459ec3.js b/assets/js/d2806a11.06459ec3.js
new file mode 100644
index 0000000..11adcf6
--- /dev/null
+++ b/assets/js/d2806a11.06459ec3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2656],{6032:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"maintenance/observability/monitor-metrics","title":"Monitor Metrics","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/observability/monitor-metrics.md","sourceDirName":"maintenance/observability","slug":"/maintenance/obs [...]
\ No newline at end of file
diff --git a/assets/js/d2da4636.451d60b1.js b/assets/js/d2da4636.451d60b1.js
new file mode 100644
index 0000000..ac899f0
--- /dev/null
+++ b/assets/js/d2da4636.451d60b1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1349],{1245:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/configuration","title":"Configuration","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/configuration.md","sourceDirName":"maintenance","slug":"/maintenance/configuration","permalink":"/docs/maintenance/confi [...]
\ No newline at end of file
diff --git a/assets/js/d38c956e.5c89b423.js b/assets/js/d38c956e.5c89b423.js
new file mode 100644
index 0000000..e67fedb
--- /dev/null
+++ b/assets/js/d38c956e.5c89b423.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9238],{9138:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/data-distribution/bucketing","title":"Bucketing","description":"A bucketing strategy is a data distribution technique that divides table data into small pieces","source":"@site/versioned_docs/version-0.5/table-design/data-distribution/bu [...]
\ No newline at end of file
diff --git a/assets/js/d45d71f1.bebf8efd.js b/assets/js/d45d71f1.bebf8efd.js
new file mode 100644
index 0000000..c935f45
--- /dev/null
+++ b/assets/js/d45d71f1.bebf8efd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4507],{3100:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"maintenance/operations/upgrading","title":"Upgrading and Compatibility","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/operations/upgrading.md","sourceDirName":"maintenance/operations","slug":"/maintenance/operations/u [...]
\ No newline at end of file
diff --git a/assets/js/d46a98c6.57028b53.js b/assets/js/d46a98c6.57028b53.js
new file mode 100644
index 0000000..d3b7562
--- /dev/null
+++ b/assets/js/d46a98c6.57028b53.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5984],{8905:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"maintenance/monitor-metrics","title":"Monitor Metrics","description":"Fluss has built a metrics system to measure the behaviours of cluster and table, like the active CoordinatorServer,","source":"@site/versioned_docs/version-0.5/maintenance/monitor- [...]
\ No newline at end of file
diff --git a/assets/js/d4e85a9d.c53f4fc7.js b/assets/js/d4e85a9d.c53f4fc7.js
new file mode 100644
index 0000000..dde16f3
--- /dev/null
+++ b/assets/js/d4e85a9d.c53f4fc7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[877],{3733:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"table-design/table-types/pk-table/index","title":"PrimaryKey Table","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/table-types/pk-table/index.md","sourceDirName":"table-design/table-types/pk-table","slug":"/table-desig [...]
\ No newline at end of file
diff --git a/assets/js/d5c4569c.5cdcfaa4.js b/assets/js/d5c4569c.5cdcfaa4.js
new file mode 100644
index 0000000..1f54ac5
--- /dev/null
+++ b/assets/js/d5c4569c.5cdcfaa4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6994],{2552:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"install-deploy/deploying-distributed-cluster","title":"Deploying Distributed Cluster","description":"This page provides instructions on how to deploy a distributed cluster for Fluss on bare machines.","source":"@site/versioned_docs/version-0.6/instal [...]
\ No newline at end of file
diff --git a/assets/js/d717c9f5.1fb05db0.js b/assets/js/d717c9f5.1fb05db0.js
new file mode 100644
index 0000000..63d08a6
--- /dev/null
+++ b/assets/js/d717c9f5.1fb05db0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9231],{8212:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>i,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"install-deploy/deploying-with-docker","title":"Deploying with Docker","description":"This guide will show you how to run a Fluss cluster using Docker. In this guide, we will introduce the prerequisites of","source":"@site/versioned_docs/version-0.6/i [...]
\ No newline at end of file
diff --git a/assets/js/d75cfc85.c76bbcfb.js b/assets/js/d75cfc85.c76bbcfb.js
new file mode 100644
index 0000000..3038ae5
--- /dev/null
+++ b/assets/js/d75cfc85.c76bbcfb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5724],{4447:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"streaming-lakehouse/overview","title":"Lakehouse Overview","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/streaming-lakehouse/overview.md","sourceDirName":"streaming-lakehouse","slug":"/streaming-lakehouse/overview","permalink":"/ [...]
\ No newline at end of file
diff --git a/assets/js/d8b46579.5764ef5d.js b/assets/js/d8b46579.5764ef5d.js
new file mode 100644
index 0000000..ceeb5b4
--- /dev/null
+++ b/assets/js/d8b46579.5764ef5d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9382],{5466:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var s=n(637),r=n(4848),a=n(8453);const o={title:"Announcing Fluss 0.7",authors:["jark"],date:new Date("2025-06-18T00:00:00.000Z"),tags:["releases"]},i=void 0,c={authorsImageUrls:[void 0]},l=[];function u(e){const t={img:"img",p:"p",strong:"strong",...(0,a.R)(),...e.components} [...]
\ No newline at end of file
diff --git a/assets/js/d9129b64.a2436b54.js b/assets/js/d9129b64.a2436b54.js
new file mode 100644
index 0000000..699f3c1
--- /dev/null
+++ b/assets/js/d9129b64.a2436b54.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4192],{6748:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"maintenance/observability/metric-reporters","title":"Metric Reporters","description":"Fluss allows reporting metrics to external system.","source":"@site/versioned_docs/version-0.6/maintenance/observability/metric-reporters.md","sourceDirName":"maint [...]
\ No newline at end of file
diff --git a/assets/js/d97251e6.bc2720a2.js b/assets/js/d97251e6.bc2720a2.js
new file mode 100644
index 0000000..ff079c1
--- /dev/null
+++ b/assets/js/d97251e6.bc2720a2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2506],{5690:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>i,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"install-deploy/deploying-with-docker","title":"Deploying with Docker","description":"\x3c!--","source":"@site/docs/install-deploy/deploying-with-docker.md","sourceDirName":"install-deploy","slug":"/install-deploy/deploying-with-docker","permalink":"/ [...]
\ No newline at end of file
diff --git a/assets/js/da5fc804.c7d719c4.js b/assets/js/da5fc804.c7d719c4.js
new file mode 100644
index 0000000..7a2b6f6
--- /dev/null
+++ b/assets/js/da5fc804.c7d719c4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4822],{3547:(s,a,l)=>{l.r(a),l.d(a,{assets:()=>h,contentTitle:()=>i,default:()=>t,frontMatter:()=>f,metadata:()=>e,toc:()=>o});const e=JSON.parse('{"type":"mdx","permalink":"/downloads","source":"@site/src/pages/downloads.md","description":"\x3c!--","frontMatter":{},"unlisted":false}');var n=l(4848),r=l(8453);const f={},i="Fluss Downloads",h={},o=[{value:"Fluss 0.7.0",id:"fluss-070",level:2},{value:"F [...]
\ No newline at end of file
diff --git a/assets/js/db256351.da20f1b7.js b/assets/js/db256351.da20f1b7.js
new file mode 100644
index 0000000..e137abd
--- /dev/null
+++ b/assets/js/db256351.da20f1b7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4689],{8572:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"table-design/table-types/log-table","title":"Log Table","description":"Basic Concept","source":"@site/versioned_docs/version-0.5/table-design/table-types/log-table.md","sourceDirName":"table-design/table-types","slug":"/table-design/table-types/log-t [...]
\ No newline at end of file
diff --git a/assets/js/db5d1f48.bb8274e9.js b/assets/js/db5d1f48.bb8274e9.js
new file mode 100644
index 0000000..6447575
--- /dev/null
+++ b/assets/js/db5d1f48.bb8274e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9931],{4556:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"engine-flink/reads","title":"Flink Reads","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/reads.md","sourceDirName":"engine-flink","slug":"/engine-flink/reads","permalink":"/docs/engine-flink/reads","draft":false,"unli [...]
\ No newline at end of file
diff --git a/assets/js/dbfc4782.8f7a7243.js b/assets/js/dbfc4782.8f7a7243.js
new file mode 100644
index 0000000..2d4a15b
--- /dev/null
+++ b/assets/js/dbfc4782.8f7a7243.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8749],{1895:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/releases/0.7","metadata":{"permalink":"/blog/releases/0.7","source":"@site/blog/releases/0.7.md","title":"Announcing Fluss 0.7","description":"\x3c!--","date":"2025-06-18T00:00:00.000Z","tags":[{"inline":false,"label":"releases","permalink":"/blog/tags/releases","description":"Content related release announcement."}],"hasTruncateMa [...]
\ No newline at end of file
diff --git a/assets/js/dd04b75e.5bd3fbc9.js b/assets/js/dd04b75e.5bd3fbc9.js
new file mode 100644
index 0000000..7121ea9
--- /dev/null
+++ b/assets/js/dd04b75e.5bd3fbc9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1672],{3024:t=>{t.exports=JSON.parse('{"authors":[{"name":"Jark Wu","title":"Creator of Fluss project","url":"https://github.com/wuchong","imageURL":"https://github.com/wuchong.png","key":"jark","page":null,"count":6},{"name":"Giannis Polyzos","title":"Fluss Contributor","url":"https://github.com/polyzos","imageURL":"https://github.com/polyzos.png","key":"giannis","page":null,"count":2},{"name":"Luo Y [...]
\ No newline at end of file
diff --git a/assets/js/de008c00.f2be1a26.js b/assets/js/de008c00.f2be1a26.js
new file mode 100644
index 0000000..f3ca626
--- /dev/null
+++ b/assets/js/de008c00.f2be1a26.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4957],{9675:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"install-deploy/overview","title":"Installation & Deployment","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/install-deploy/overview.md","sourceDirName":"install-deploy","slug":"/install-deploy/overview","permalink":"/docs/install- [...]
\ No newline at end of file
diff --git a/assets/js/ded36ae0.ae2899af.js b/assets/js/ded36ae0.ae2899af.js
new file mode 100644
index 0000000..d28cc07
--- /dev/null
+++ b/assets/js/ded36ae0.ae2899af.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8789],{8004:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"streaming-lakehouse/integrate-data-lakes/paimon","title":"Paimon","description":"Apache Paimon innovatively combines lake format and LSM structure, bringing efficient updates into the lake architecture.","source":"@site/versioned_docs/version-0.6/str [...]
\ No newline at end of file
diff --git a/assets/js/df47852f.7970589b.js b/assets/js/df47852f.7970589b.js
new file mode 100644
index 0000000..2543ec8
--- /dev/null
+++ b/assets/js/df47852f.7970589b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5799],{1385:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"maintenance/filesystems/overview","title":"File Systems","description":"Fluss uses file systems as remote storage to store snapshots for Primary-Key Table and store tiered log segments for Log Table. These","source":"@site/versioned_docs/version-0.5/ [...]
\ No newline at end of file
diff --git a/assets/js/dff54d80.69b506dc.js b/assets/js/dff54d80.69b506dc.js
new file mode 100644
index 0000000..d306c71
--- /dev/null
+++ b/assets/js/dff54d80.69b506dc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5798],{9874:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"engine-flink/datastream","title":"DataStream API","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/engine-flink/datastream.mdx","sourceDirName":"engine-flink","slug":"/engine-flink/datastream","permalink":"/docs/engine-flink/datastr [...]
\ No newline at end of file
diff --git a/assets/js/e01b5f8c.d0862de7.js b/assets/js/e01b5f8c.d0862de7.js
new file mode 100644
index 0000000..c34e056
--- /dev/null
+++ b/assets/js/e01b5f8c.d0862de7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2791],{6951:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/data-distribution/partitioning","title":"Partitioning","description":"\x3c!--","source":"@site/docs/table-design/data-distribution/partitioning.md","sourceDirName":"table-design/data-distribution","slug":"/table-design/data-distribution/ [...]
\ No newline at end of file
diff --git a/assets/js/e025f2f4.c31d48b8.js b/assets/js/e025f2f4.c31d48b8.js
new file mode 100644
index 0000000..e203ee7
--- /dev/null
+++ b/assets/js/e025f2f4.c31d48b8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1341],{1880:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"maintenance/tiered-storage/overview","title":"Tiered Storage","description":"\x3c!--","source":"@site/docs/maintenance/tiered-storage/overview.md","sourceDirName":"maintenance/tiered-storage","slug":"/maintenance/tiered-storage/overview","permalink": [...]
\ No newline at end of file
diff --git a/assets/js/e0719818.a6531520.js b/assets/js/e0719818.a6531520.js
new file mode 100644
index 0000000..5b241d7
--- /dev/null
+++ b/assets/js/e0719818.a6531520.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5220],{8669:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"community"}')}}]);
\ No newline at end of file
diff --git a/assets/js/e0e92cc1.e0c24eb8.js b/assets/js/e0e92cc1.e0c24eb8.js
new file mode 100644
index 0000000..4d57a32
--- /dev/null
+++ b/assets/js/e0e92cc1.e0c24eb8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8503],{5426:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/data-distribution/bucketing","title":"Bucketing","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/data-distribution/bucketing.md","sourceDirName":"table-design/data-distribution","slug":"/table-design/data- [...]
\ No newline at end of file
diff --git a/assets/js/e2cc254d.0c77013b.js b/assets/js/e2cc254d.0c77013b.js
new file mode 100644
index 0000000..a7ceb22
--- /dev/null
+++ b/assets/js/e2cc254d.0c77013b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5503],{8467:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"streaming-lakehouse/integrate-data-lakes/paimon","title":"Paimon","description":"Apache Paimon innovatively combines lake format and LSM structure, bringing efficient updates into the lake architecture.","source":"@site/versioned_docs/version-0.5/str [...]
\ No newline at end of file
diff --git a/assets/js/e2f56b1d.a06a6f0f.js b/assets/js/e2f56b1d.a06a6f0f.js
new file mode 100644
index 0000000..59d85f4
--- /dev/null
+++ b/assets/js/e2f56b1d.a06a6f0f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6586],{2248:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"security/overview","title":"Security Overview","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/security/overview.md","sourceDirName":"security","slug":"/security/overview","permalink":"/docs/security/overview","draft":false,"unlist [...]
\ No newline at end of file
diff --git a/assets/js/e5327ea2.20e04a09.js b/assets/js/e5327ea2.20e04a09.js
new file mode 100644
index 0000000..a998506
--- /dev/null
+++ b/assets/js/e5327ea2.20e04a09.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5719],{931:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"how-to-contribute/contribute-code","title":"Contribute Code","description":"\x3c!--","source":"@site/community/how-to-contribute/contribute-code.md","sourceDirName":"how-to-contribute","slug":"/how-to-contribute/contribute-code","permalink":"/communit [...]
\ No newline at end of file
diff --git a/assets/js/e7d4f839.40c97085.js b/assets/js/e7d4f839.40c97085.js
new file mode 100644
index 0000000..10943ae
--- /dev/null
+++ b/assets/js/e7d4f839.40c97085.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1873],{93:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/versioned","title":"Versioned Merge Engine","description":"\x3c!--","source":"@site/docs/table-design/table-types/pk-table/merge-engines/versioned.md","sourceDirName":"table-design/table-types/pk-table/me [...]
\ No newline at end of file
diff --git a/assets/js/e8397ce1.a99a757c.js b/assets/js/e8397ce1.a99a757c.js
new file mode 100644
index 0000000..d22afd7
--- /dev/null
+++ b/assets/js/e8397ce1.a99a757c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9724],{7717:(e,a,s)=>{s.r(a),s.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"maintenance/tiered-storage/lakehouse-storage","title":"Lakehouse Storage","description":"\x3c!--","source":"@site/docs/maintenance/tiered-storage/lakehouse-storage.md","sourceDirName":"maintenance/tiered-storage","slug":"/maintenance/tiered-storage/l [...]
\ No newline at end of file
diff --git a/assets/js/e8a73003.2f97a716.js b/assets/js/e8a73003.2f97a716.js
new file mode 100644
index 0000000..83e21c7
--- /dev/null
+++ b/assets/js/e8a73003.2f97a716.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8862],{8243:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"engine-flink/options","title":"Connector Options","description":"\x3c!--","source":"@site/docs/engine-flink/options.md","sourceDirName":"engine-flink","slug":"/engine-flink/options","permalink":"/docs/next/engine-flink/options","draft":false,"unliste [...]
\ No newline at end of file
diff --git a/assets/js/e8ef73cd.867ed824.js b/assets/js/e8ef73cd.867ed824.js
new file mode 100644
index 0000000..afa2547
--- /dev/null
+++ b/assets/js/e8ef73cd.867ed824.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[3598],{4904:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"table-design/table-types/pk-table/merge-engines/versioned","title":"Versioned Merge Engine","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/table-types/pk-table/merge-engines/versioned.md","sourceDirName":"table-design [...]
\ No newline at end of file
diff --git a/assets/js/eb05eaac.1bab7ae5.js b/assets/js/eb05eaac.1bab7ae5.js
new file mode 100644
index 0000000..fa58a1c
--- /dev/null
+++ b/assets/js/eb05eaac.1bab7ae5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8253],{6782:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"maintenance/filesystems/oss","title":"Aliyun OSS","description":"OSS: Object Storage Service","source":"@site/versioned_docs/version-0.6/maintenance/filesystems/oss.md","sourceDirName":"maintenance/filesystems","slug":"/maintenance/filesystems/oss"," [...]
\ No newline at end of file
diff --git a/assets/js/eb5be0bf.0656c776.js b/assets/js/eb5be0bf.0656c776.js
new file mode 100644
index 0000000..68e88c3
--- /dev/null
+++ b/assets/js/eb5be0bf.0656c776.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[4836],{5064:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"engine-flink/lookups","title":"Flink Lookup Joins","description":"\x3c!--","source":"@site/docs/engine-flink/lookups.md","sourceDirName":"engine-flink","slug":"/engine-flink/lookups","permalink":"/docs/next/engine-flink/lookups","draft":false,"unlist [...]
\ No newline at end of file
diff --git a/assets/js/ee8ec7f8.f759db31.js b/assets/js/ee8ec7f8.f759db31.js
new file mode 100644
index 0000000..b8c6780
--- /dev/null
+++ b/assets/js/ee8ec7f8.f759db31.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1852],{3182:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"table-design/table-types/pk-table","title":"PrimaryKey Table","description":"Basic Concept","source":"@site/versioned_docs/version-0.5/table-design/table-types/pk-table.md","sourceDirName":"table-design/table-types","slug":"/table-design/table-types/ [...]
\ No newline at end of file
diff --git a/assets/js/f39116bd.e9352550.js b/assets/js/f39116bd.e9352550.js
new file mode 100644
index 0000000..7a7d730
--- /dev/null
+++ b/assets/js/f39116bd.e9352550.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9839],{1957:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"maintenance/tiered-storage/overview","title":"Tiered Storage","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/maintenance/tiered-storage/overview.md","sourceDirName":"maintenance/tiered-storage","slug":"/maintenance/tiered-storage/ [...]
\ No newline at end of file
diff --git a/assets/js/f47dd6e5.daa143cf.js b/assets/js/f47dd6e5.daa143cf.js
new file mode 100644
index 0000000..28c66de
--- /dev/null
+++ b/assets/js/f47dd6e5.daa143cf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6408],{2815:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"intro","title":"What is Fluss?","description":"Fluss is a streaming storage built for real-time analytics which can serve as the real-time data layer for Lakehouse architectures.","source":"@site/versioned_docs/version-0.5/intro.md","sourceDirName":" [...]
\ No newline at end of file
diff --git a/assets/js/f593d43a.87812e5d.js b/assets/js/f593d43a.87812e5d.js
new file mode 100644
index 0000000..8f0a119
--- /dev/null
+++ b/assets/js/f593d43a.87812e5d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[1956],{3285:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"intro","title":"What is Fluss?","description":"Fluss is a streaming storage built for real-time analytics which can serve as the real-time data layer for Lakehouse architectures.","source":"@site/versioned_docs/version-0.6/intro.md","sourceDirName":" [...]
\ No newline at end of file
diff --git a/assets/js/f5e8f464.3473abca.js b/assets/js/f5e8f464.3473abca.js
new file mode 100644
index 0000000..4818e7e
--- /dev/null
+++ b/assets/js/f5e8f464.3473abca.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6499],{6095:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"quickstart/security","title":"Secure Your Fluss Cluster","description":"\x3c!--","source":"@site/docs/quickstart/security.md","sourceDirName":"quickstart","slug":"/quickstart/security","permalink":"/docs/next/quickstart/security","draft":false,"unlis [...]
\ No newline at end of file
diff --git a/assets/js/f79b4041.5490eddd.js b/assets/js/f79b4041.5490eddd.js
new file mode 100644
index 0000000..fb73d28
--- /dev/null
+++ b/assets/js/f79b4041.5490eddd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[9226],{617:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"table-design/overview","title":"Table Overview","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/table-design/overview.md","sourceDirName":"table-design","slug":"/table-design/overview","permalink":"/docs/table-design/overview","draf [...]
\ No newline at end of file
diff --git a/assets/js/f8dbdc9a.f5e2af1b.js b/assets/js/f8dbdc9a.f5e2af1b.js
new file mode 100644
index 0000000..4042f57
--- /dev/null
+++ b/assets/js/f8dbdc9a.f5e2af1b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[7386],{8062:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"maintenance/tiered-storage/remote-storage","title":"Remote Storage","description":"Remote storage usually means a cost-efficient and fault-tolerant storage comparing to local disk, such as S3, HDFS, OSS.","source":"@site/versioned_docs/version-0.5/ma [...]
\ No newline at end of file
diff --git a/assets/js/fe66138b.b2cdef42.js b/assets/js/fe66138b.b2cdef42.js
new file mode 100644
index 0000000..cfe0138
--- /dev/null
+++ b/assets/js/fe66138b.b2cdef42.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[6618],{2596:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>i,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"install-deploy/deploying-with-docker","title":"Deploying with Docker","description":"\x3c!--","source":"@site/versioned_docs/version-0.7/install-deploy/deploying-with-docker.md","sourceDirName":"install-deploy","slug":"/install-deploy/deploying-with- [...]
\ No newline at end of file
diff --git a/assets/js/ff2ceeff.06a4dc1f.js b/assets/js/ff2ceeff.06a4dc1f.js
new file mode 100644
index 0000000..ed65be8
--- /dev/null
+++ b/assets/js/ff2ceeff.06a4dc1f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[5228],{5351:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>u});var s=n(9485),o=n(4848),r=n(8453);const a={title:"Announcing Fluss 0.6",authors:["jark"],date:new Date("2025-03-10T00:00:00.000Z"),tags:["releases"]},i=void 0,l={authorsImageUrls:[void 0]},u=[];function c(e){const t={img:"img",p:"p",strong:"strong",...(0,r.R)(),...e.components [...]
\ No newline at end of file
diff --git a/assets/js/ffad4089.a4b4fe06.js b/assets/js/ffad4089.a4b4fe06.js
new file mode 100644
index 0000000..b1ffeb0
--- /dev/null
+++ b/assets/js/ffad4089.a4b4fe06.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[2133],{3181:e=>{e.exports=JSON.parse('{"tag":{"label":"releases","permalink":"/blog/tags/releases","description":"Content related release announcement.","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/releases","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/main.a06cb6b9.js b/assets/js/main.a06cb6b9.js
new file mode 100644
index 0000000..d278734
--- /dev/null
+++ b/assets/js/main.a06cb6b9.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.a06cb6b9.js.LICENSE.txt */
+(self.webpackChunkfluss_website=self.webpackChunkfluss_website||[]).push([[8792],{3219:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>C,E8:()=>Zn,a1:()=>Qn});var r=n(6540);n(961);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t,n,r,o,a,i){try{var s=e[a](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,o)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.app [...]
\ No newline at end of file
diff --git a/assets/js/main.a06cb6b9.js.LICENSE.txt b/assets/js/main.a06cb6b9.js.LICENSE.txt
new file mode 100644
index 0000000..91dc894
--- /dev/null
+++ b/assets/js/main.a06cb6b9.js.LICENSE.txt
@@ -0,0 +1,64 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/*! Bundled license information:
+
+prismjs/prism.js:
+  (**
+   * Prism: Lightweight, robust, elegant syntax highlighting
+   *
+   * @license MIT <https://opensource.org/licenses/MIT>
+   * @author Lea Verou <https://lea.verou.me>
+   * @namespace
+   * @public
+   *)
+*/
+
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/assets/js/runtime~main.264c6f6f.js b/assets/js/runtime~main.264c6f6f.js
new file mode 100644
index 0000000..61a2453
--- /dev/null
+++ b/assets/js/runtime~main.264c6f6f.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
new file mode 100644
index 0000000..51e6cc3
--- /dev/null
+++ b/blog/archive/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Archive | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/blog/a [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/atom.css b/blog/atom.css
new file mode 100644
index 0000000..d2fc20b
--- /dev/null
+++ b/blog/atom.css
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+main {
+  flex: 1 0 auto;
+  width: 100%;
+  margin: 2rem auto;
+  max-width: 800px;
+  /* stylelint-disable-next-line font-family-name-quotes */
+  font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell;
+}
+
+.info {
+  display: block;
+  margin: 2rem 0;
+  padding: 1.6rem 2.4rem;
+  border: 1px solid dodgerblue;
+  border-left-width: 0.5rem;
+  border-radius: 0.4rem;
+  background-color: #edf5ff;
+}
+
+a {
+  color: #005aff;
+  text-decoration: none;
+}
+
+h1 {
+  text-wrap: balance;
+  font-size: 3.4rem;
+  font-weight: 800;
+  margin-bottom: 2rem;
+  display: flex;
+  align-items: center;
+}
+
+h1 .rss-icon {
+  height: 3.2rem;
+  width: 3.2rem;
+  margin-right: 1rem;
+}
+
+h2 {
+  font-size: 2.2rem;
+  font-weight: 700;
+  margin-bottom: 0.2rem;
+}
+
+h3 {
+  font-size: 1.8rem;
+  font-weight: 700;
+  margin-bottom: 0.1rem;
+}
+
+.blog-description {
+  font-size: 1.4rem;
+  margin-bottom: 0.6rem;
+}
+
+.blog-post-date {
+  font-size: 1rem;
+  line-height: 1.4rem;
+  font-style: italic;
+  color: #797b7e;
+}
+
+.blog-post-description {
+  font-size: 1rem;
+  line-height: 1.4rem;
+  color: #434349;
+}
diff --git a/blog/atom.xml b/blog/atom.xml
new file mode 100644
index 0000000..6e195f4
--- /dev/null
+++ b/blog/atom.xml
@@ -0,0 +1,799 @@
+<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+    <id>https://fluss.apache.org/blog/</id>
+    <title>Fluss Blog</title>
+    <updated>2025-06-18T00:00:00.000Z</updated>
+    <generator>https://github.com/jpmonette/feed</generator>
+    <link rel="alternate" href="https://fluss.apache.org/blog/"/>
+    <subtitle>Fluss Blog</subtitle>
+    <icon>https://fluss.apache.org/img/logo/fluss_favicon.svg</icon>
+    <entry>
+        <title type="html"><![CDATA[Announcing Fluss 0.7]]></title>
+        <id>https://fluss.apache.org/blog/releases/0.7/</id>
+        <link href="https://fluss.apache.org/blog/releases/0.7/"/>
+        <updated>2025-06-18T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Banner" src="https://fluss.apache.org/assets/images/banner-8cc4ea9295caf8358e14adf7a69beb01.png" width="1322" height="632" class="img_ev3q"></p>
+<p>🌊 We are excited to announce the official release of <strong>Fluss 0.7</strong>!</p>
+<p>This version has undergone extensive improvements in <strong>stability</strong>, <strong>architecture</strong>, <strong>performance optimization</strong>, and <strong>security</strong>, further enhancing its readiness for <strong>production environments</strong>. Over the past three months, we have completed more than <strong>250 commits</strong>, making this release a significant milestone toward becoming a mature, production-grade streaming storage platform.</p>
+<p><img decoding="async" loading="lazy" alt="Improvements Diagram" src="https://fluss.apache.org/assets/images/overview-255047ec7648f12c63660b40d1147c86.png" width="1248" height="778" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stability-enhancements">Stability Enhancements<a href="https://fluss.apache.org/blog/releases/0.7/#stability-enhancements" class="hash-link" aria-label="Direct link to Stability Enhancements" title="Direct link to Stability Enhancements">​</a></h2>
+<p>In this release, we have dedicated significant effort to enhancing system stability. By building a comprehensive stability testing framework covering end-to-end processes and multi-scenario fault simulations, combined with large-scale stress testing using real business data, and through rigorous production-level stability validation in Alibaba, we have addressed and resolved over 50 issues. This has significantly improved the stability of Fluss' core modules and the overall robustness [...]
+<ul>
+<li><strong>Online/Offline Node Optimization:</strong> Refactored the ISR (In-Sync Replica) update mechanism and replica synchronization logic and enhanced idempotency guarantees. This significantly improves system stability and reduces the risk of data loss during node failures.</li>
+<li><strong>Server Metadata Caching:</strong> Introduced a consistent metadata caching layer on the server side. Clients now fetch metadata from the local server cache instead of ZooKeeper, significantly reducing request latency and pressure on ZooKeeper.</li>
+<li><strong>Server Rack-Aware Support:</strong> During replica assignment, the system automatically avoids placing multiple replicas within the same "rack", thereby significantly improving fault tolerance and high availability. This feature is especially beneficial in multi-AZ deployments and large-scale data center disaster recovery scenarios. You can configure the "rack" of the TabletServer via setting <code>tablet-server.rack</code> in <code>server.yaml</code>.</li>
+<li><strong>Accelerated Table Creation:</strong> Leveraged batched metadata updates to reduce table initialization time. For example, the time for a table creation with 1024 buckets was reduced from minutes to milliseconds.</li>
+<li><strong>Optimized Read/Write Pipelines:</strong>
+<ul>
+<li>Introduce bucket-id-based shuffle for primary key tables to improve write throughput.</li>
+<li>Dynamically estimate the batch size based on incoming traffic to optimize memory usage and throughput.</li>
+<li>Optimize the Arrow memory release logic to enhance job stability.</li>
+</ul>
+</li>
+</ul>
+<p>These enhancements make Fluss 0.7 ready for most production use cases.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="new-architecture-of-the-streaming-lakehouse">New Architecture of the Streaming Lakehouse<a href="https://fluss.apache.org/blog/releases/0.7/#new-architecture-of-the-streaming-lakehouse" class="hash-link" aria-label="Direct link to New Architecture of the Streaming Lakehouse" title="Direct link to New Architecture of the Streaming Lakehouse">​</a></h2>
+<p>In Fluss 0.5, we first introduced the Streaming Lakehouse feature, with the powerful Union Read ability, we can significantly reduce the cost of streaming storage and improve the data freshness of Lakehouse.</p>
+<blockquote>
+<p>Note: Union Reads allows querying and combining the results from both Lakehouse (historical) and Fluss (real-time) data.</p>
+</blockquote>
+<p>However, the initial implementation had architectural limitations affecting scalability and operability in production. In Fluss 0.7, we’ve completely re-architected the Streaming Lakehouse feature to address these challenges.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="elastic-stateless-service">Elastic Stateless Service<a href="https://fluss.apache.org/blog/releases/0.7/#elastic-stateless-service" class="hash-link" aria-label="Direct link to Elastic Stateless Service" title="Direct link to Elastic Stateless Service">​</a></h3>
+<p>Previously, the lake tiering service was implemented as a Flink job encapsulating Fluss as a Source and Paimon as a Sink, storing sync offsets state in Flink’s State, this making it a stateful service.
+This led to several operational issues:</p>
+<ul>
+<li><strong>Single Point of Failure:</strong> The lifecycle of each table is bound to a specific Flink job. Once a job fails, the synchronization of all tables hosted by the job will be blocked.</li>
+<li><strong>Limited Scalability:</strong> Could only scale vertically (increase job resources), not horizontally (start multiple jobs).</li>
+<li><strong>Inflexible Scheduling:</strong> Unable to prioritize tables and dynamically assign to dedicated Flink clusters.</li>
+<li><strong>Opaque State:</strong> Flink State being a black box made monitoring and troubleshooting the offset difficult.</li>
+</ul>
+<p>To address these challenges, we've re-architected the lake tiering service into a truly elastic and stateless component.
+The sync offset is now persisted directly within Fluss metadata, with future plans for integration into Paimon v1.2 snapshot properties.
+Furthermore, Flink jobs have transitioned from maintaining persistent table subscriptions to a more efficient model where they process one table at a time,
+dynamically requesting the next table upon completion of the current one.</p>
+<p><img decoding="async" loading="lazy" alt="New Architecture Diagram" src="https://fluss.apache.org/assets/images/new_tiering_service-4509c1a4b51c6821c0fe622cdda534e4.png" width="1980" height="1805" class="img_ev3q"></p>
+<p>This optimization significantly reduces the load on Fluss and boosts batch processing efficiency. As a result, cluster operators gain:</p>
+<ul>
+<li><strong>Enhanced Service Robustness:</strong> Operators can launch multiple Flink jobs to distribute workload and increase overall system resilience.</li>
+<li><strong>Flexible Resource Management:</strong> The ability to stop idle jobs at any time allows for immediate reclamation of valuable cluster resources.</li>
+<li><strong>Dynamic Task Orchestration:</strong> Sync tasks can now be dynamically scheduled across all active Flink jobs, optimizing resource utilization.</li>
+<li><strong>Actionable Offset Visibility:</strong> The offset state is now queryable, providing greater insight and control over data processing.</li>
+</ul>
+<p>This design ensures end-to-end consistency across all operations.
+Furthermore, this stateless design also decouples us from the tight Flink dependency, paving the way for future lightweight execution models, such as running on FaaS (Function as a Service).</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="pluggable-lake-format">Pluggable Lake Format<a href="https://fluss.apache.org/blog/releases/0.7/#pluggable-lake-format" class="hash-link" aria-label="Direct link to Pluggable Lake Format" title="Direct link to Pluggable Lake Format">​</a></h3>
+<p>The previous implementation had a tight coupling with Apache Paimon, which restricted our ability to integrate with other lake formats, such as Iceberg.
+With version 0.7, we have abstracted and modularized all lake format interfaces.
+This enhancement enables easy, plugin-style support for Iceberg and other emerging formats.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="native-flink-command-submission">Native Flink Command Submission<a href="https://fluss.apache.org/blog/releases/0.7/#native-flink-command-submission" class="hash-link" aria-label="Direct link to Native Flink Command Submission" title="Direct link to Native Flink Command Submission">​</a></h3>
+<p>Previously, users were limited to the <code>lakehouse.sh</code> script for initiating the lake tiering service, which submitted jobs to the Flink cluster.
+While convenient, this approach restricted deployment flexibility, particularly when encountering diverse Flink deployment modes and internal product platforms.
+Fluss 0.7 now addresses this by supporting <strong>native job submission via standard Flink commands</strong> (<code>flink run</code>).
+This enhancement ensures broad compatibility with various deployment modes while significantly lowering learning and integration costs.
+The following is an example of how to submit the lake tiering service using the native Flink command:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">flink run /path/to/fluss-flink-tiering-0.7.0.jar </span><span class="token punctuation" sty [...]
+<p>See more details in the <a href="https://fluss.apache.org/docs/maintenance/tiered-storage/lakehouse-storage/">Streaming Lakehouse documentation</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-partition-pruning">Streaming Partition Pruning<a href="https://fluss.apache.org/blog/releases/0.7/#streaming-partition-pruning" class="hash-link" aria-label="Direct link to Streaming Partition Pruning" title="Direct link to Streaming Partition Pruning">​</a></h2>
+<p>Partitioning is a foundational technique in modern data warehouses and Lakehouse architectures for optimizing query performance by
+logically dividing datasets along meaningful dimensions (e.g., time, region, business line).</p>
+<p>Fluss 0.7 introduces <strong>streaming partition pruning</strong>, enabling selective reading of relevant partitions based on query conditions.
+For example, if a query filters on <code>nation_key = 'US'</code>, the Fluss Source will only read matching partitions,
+significantly reducing network I/O and compute overhead.
+Apart from that, we also support the following advanced partition features to make partition pruning adaptable and easy to use:</p>
+<ul>
+<li><strong>Multi-level Partitioning:</strong> Supports nested partition strategies (e.g., <code>dt=20250617/region=US/business=sale</code>).</li>
+<li><strong>Dynamic Partition Creation:</strong> Automatically creates required partitions based on incoming data, no manual pre-creation is required.</li>
+<li><strong>Automatic Partition Discovery:</strong> Fluss source adds matched new partitions to the subscription in real-time.</li>
+</ul>
+<p>Using real business data from <strong>Taobao - the largest online shopping platform in China,</strong> we tested the read and write performance between non-partitioned and partitioned tables (with 20 auto-created partitions). The write results show that the multi-level partition and dynamic partition creation mechanism do not have a significant impact on the write performance.
+<img decoding="async" loading="lazy" alt="Write Perf" src="https://fluss.apache.org/assets/images/write_perf-25c062766e117f2c092a79653cf69a85.jpg" width="890" height="554" class="img_ev3q"></p>
+<p>At the same time, under the same data scale, we tested the streaming read performance of non-partitioned tables and partitioned tables under three partition conditions:
+<strong>unconditional</strong>, <strong>medium matching</strong> (hitting five partitions), and <strong>exact matching</strong> (hitting one partition).
+From the results, we can observe that when the partition condition only matches 1/20 of the partitions,
+<strong>the network traffic is reduced by about 20x</strong> and the <strong>processing time is reduced by nearly 9x</strong>,
+demonstrating the huge performance benefit of partition pruning in streaming reads.</p>
+<p><img decoding="async" loading="lazy" alt="Read Perf" src="https://fluss.apache.org/assets/images/read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg" width="836" height="852" class="img_ev3q"></p>
+<p>Streaming partition pruning is the second pushdown feature introduced after streaming column pruning in Fluss.
+Looking ahead, we plan to introduce <strong>predicate pushdown with Arrow batch-level I/O pruning</strong> to further enhance query efficiency.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="enterprise-grade-security">Enterprise-Grade Security<a href="https://fluss.apache.org/blog/releases/0.7/#enterprise-grade-security" class="hash-link" aria-label="Direct link to Enterprise-Grade Security" title="Direct link to Enterprise-Grade Security">​</a></h2>
+<p>To meet enterprise-grade security requirements, Fluss 0.7 fully supports Authentication and Authorization mechanisms.</p>
+<p><strong>Authentication</strong> is the process of confirming the identity of the client.
+Fluss introduced a plugin-based authentication with built-in <strong>SASL/PLAIN</strong> support, compatible with <strong>JAAS</strong> (Java Authentication and Authorization Service) configuration for both client and server credentials.</p>
+<p><strong>Authorization</strong> controls which resources the identity can access and which operations it can perform after identity confirmation.
+Fluss implements fine-grained permission control through the <strong>ACL</strong> (Access Control List) mechanism, supporting multi-level access control at the Cluster, Database, and Table levels.</p>
+<p>Additionally, we've integrated Flink SQL's <code>CALL</code> statements to ease ACL permission management for users.
+For instance, granting read access to the <code>mydb</code> database for user <code>Tim</code> can now be accomplished with the following command:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CALL</span><span class="token plain"> admin_catalog</span>< [...]
+<p>For details, please refer to the <a href="https://fluss.apache.org/docs/security/overview/">Security documentation</a> and quickstarts.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="flink-datastream-connector">Flink DataStream Connector<a href="https://fluss.apache.org/blog/releases/0.7/#flink-datastream-connector" class="hash-link" aria-label="Direct link to Flink DataStream Connector" title="Direct link to Flink DataStream Connector">​</a></h2>
+<p>Fluss 0.7 officially introduces the DataStream Connector, supporting both Source and Sink for reading and writing log and primary key tables. Users can now seamlessly integrate Fluss tables into Flink DataStream pipelines.</p>
+<p>Here’s an example of reading data from a Fluss table into a Flink DataStream:</p>
+<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token class-name" style="color:rgb(78, 201, 176)">FlussSource</span><span class="token generics punctuat [...]
+<p>For usage examples and configuration parameters, see the <a href="https://alibaba.github.io/fluss-docs/docs/engine-flink/datastream/" target="_blank" rel="noopener noreferrer">DataStream Connector documentation</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-java-client">Fluss Java Client<a href="https://fluss.apache.org/blog/releases/0.7/#fluss-java-client" class="hash-link" aria-label="Direct link to Fluss Java Client" title="Direct link to Fluss Java Client">​</a></h2>
+<p>In this version, we officially release the Fluss Java Client, a client library designed for developers working with structured stream tables. The client includes two core API modules:</p>
+<ul>
+<li><strong>Table API:</strong> For table-based data operations, supporting streaming reads/writes, updates, deletions, and point queries.</li>
+<li><strong>Admin API:</strong> For metadata management, including cluster management, table lifecycle, and access control.</li>
+</ul>
+<p>The client supports forward and backward compatibility, ensuring smooth upgrades across Fluss versions. With the Fluss Java Client, developers can build online applications and data ingestion services based on Fluss, as well as enterprise-level components such as Fluss management platforms and operations monitoring systems. For detailed usage instructions, please refer to the official documentation: <a href="https://alibaba.github.io/fluss-docs/docs/apis/java-client/" target="_blank"  [...]
+<p>Fluss uses Apache Arrow as its underlying storage format, enabling efficient cross-language extensions. A <strong>Fluss Python Client</strong> is planned for future releases, leveraging the rich ecosystem of <strong>PyArrow</strong> to integrate with popular data analysis tools such as <strong>Pandas</strong> and <strong>DuckDB</strong>.
+This will further lower the barrier for real-time data exploration and analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-roadmap">Future Roadmap<a href="https://fluss.apache.org/blog/releases/0.7/#future-roadmap" class="hash-link" aria-label="Direct link to Future Roadmap" title="Direct link to Future Roadmap">​</a></h2>
+<p>In the next releases, we will continue to enhance system robustness and operational capabilities and plan to introduce <strong>Rolling Upgrades</strong> and <strong>Cluster Rebalance</strong>.
+In addition, with the new pluggable datalake format of the Streaming Lakehouse, we will further expand support for the mainstream datalake table formats, such as an <strong>Apache Iceberg</strong> integration.
+Meanwhile, we will explore the possibility of using Fluss in <strong>multimodal AI</strong> use cases, supporting ingestion of multimodal data,
+and integrating with <strong><a href="https://github.com/lancedb/lance" target="_blank" rel="noopener noreferrer">Lance</a></strong> format in the Streaming Lakehouse architecture.</p>
+<p>Fluss is under active development. Be sure to stay updated on the project, give it a try and if you like it,
+don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="list-of-contributors">List of contributors<a href="https://fluss.apache.org/blog/releases/0.7/#list-of-contributors" class="hash-link" aria-label="Direct link to List of contributors" title="Direct link to List of contributors">​</a></h2>
+<p>The Fluss community would like to express gratitude to all the contributors who made this release possible:</p>
+<p>Benchao Li,  CaoZhen,  Feng Wang,  Giannis Polyzos,  HZY,  Hongshun Wang,  Jark Wu,  Junbo wang,  Kerwin,  Leonard Xu,  MehulBatra,  Michael Koepf,  Min Zhao,  Nicholas Jiang,  Radek Grebski,  Rohan Dubey,  Xiaojian Sun,  Yang Guo,  dao-jun,  gkatzioura,  luoyuxia,  majialong,  xiaozhou,  yunhong,  yuxia Luo,  yx9o,  zhangmang,  道君</p>]]></content>
+        <author>
+            <name>Jark Wu</name>
+            <uri>https://github.com/wuchong</uri>
+        </author>
+        <category label="releases" term="releases"/>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Understanding Partial Updates]]></title>
+        <id>https://fluss.apache.org/blog/partial-updates/</id>
+        <link href="https://fluss.apache.org/blog/partial-updates/"/>
+        <updated>2025-06-01T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Banner" src="https://fluss.apache.org/assets/images/banner-a09e6bac14dc2bee3dbc698347cb2d7f.png" width="1348" height="958" class="img_ev3q"></p>
+<p>Traditional streaming data pipelines often need to join many tables or streams on a primary key to create a wide view.
+For example, imagine you’re building a real-time recommendation engine for an e-commerce platform.
+To serve highly personalized recommendations, your system needs a complete 360° view of each user, including:
+<em>user preferences</em>, <em>past purchases</em>, <em>clickstream behavior</em>, <em>cart activity</em>, <em>product reviews</em>, <em>support tickets</em>, <em>ad impressions</em>, and <em>loyalty status</em>.</p>
+<p>That’s at least <strong>8 different data sources</strong>, each producing updates independently.</p>
+<p>Joining multiple data streams at scale, although it works with Apache Flink it can be really challenging and resource-intensive.
+More specifically, it can lead to:</p>
+<ul>
+<li><strong>Really large state sizes in Flink:</strong> as it needs to buffer all incoming events until they can be joined. In many case states need to be kept around for a long period of time if not indefinitely.</li>
+<li><strong>Deal with checkpoints overhead and backpressure:</strong> as the join operation and large state uploading can create a bottleneck in the pipeline.</li>
+<li><strong>States are not easy to inspect and debug:</strong> as they are often large and complex. This can make it difficult to understand what is happening in the pipeline and why certain events are not being processed correctly.</li>
+<li><strong>State TTL can lead to inconsistent results:</strong> as events may be dropped before they can be joined. This can lead to data loss and incorrect results in the final output.</li>
+</ul>
+<p>Overall, this approach not only consumes a lot of memory and CPU, but also complicates the job design and maintenance.</p>
+<p><img decoding="async" loading="lazy" alt="Streaming Joins" src="https://fluss.apache.org/assets/images/streaming_join-761699227c5633f3575e2036b9e2ac61.png" width="1375" height="550" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partial-updates-a-different-approach-with-fluss">Partial Updates: A Different Approach with Fluss<a href="https://fluss.apache.org/blog/partial-updates/#partial-updates-a-different-approach-with-fluss" class="hash-link" aria-label="Direct link to Partial Updates: A Different Approach with Fluss" title="Direct link to Partial Updates: A Different Approach with Fluss">​</a></h3>
+<p>Fluss introduces a more elegant solution: <strong>partial updates</strong> on a primary key table.</p>
+<p>Instead of performing multi-way joins in the streaming job, Fluss allows each data stream source to independently update only its relevant columns into a shared wide table identified by the primary key.
+In Fluss, you can define a wide table (for example, a user_profile table based on a <code>user_id</code>) that contains all possible fields from all sources.
+Each source stream then writes partial rows – only the fields it knows about – into this table.</p>
+<p><img decoding="async" loading="lazy" alt="Partial Update" src="https://fluss.apache.org/assets/images/partial_update-d529bf24211a76b31444bc7918872d59.png" width="1488" height="669" class="img_ev3q"></p>
+<p>Fluss’s storage engine automatically merges these partial updates together based on the primary key.
+Essentially, Fluss maintains the latest combined value for each key, so you don’t have to manage large join states in Flink.</p>
+<p>Under the hood, when a new partial update for a key arrives, Fluss will look up the existing record for that primary key, update the specific columns provided, and leave other columns unchanged.
+The result is written back as the new version of the record.
+This happens in <em>real-time</em>, so the table is <strong>always up-to-date</strong> with the latest information from all streams.</p>
+<p>Next, let's try and better understand how this works in practice with a concrete example.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="example-building-a-unified-wide-table">Example: Building a Unified Wide Table<a href="https://fluss.apache.org/blog/partial-updates/#example-building-a-unified-wide-table" class="hash-link" aria-label="Direct link to Example: Building a Unified Wide Table" title="Direct link to Example: Building a Unified Wide Table">​</a></h3>
+<blockquote>
+<p>You can find the full source code on github <a href="https://github.com/ververica/ververica-fluss-examples/tree/main/partial_updates" target="_blank" rel="noopener noreferrer">here</a>.</p>
+</blockquote>
+<p>Start by cloning the repository, run <code>docker compose up</code> to spin up the development enviroment and finally grab a terminal
+into the <code>jobmanager</code> and start the Flink SQL cli, by running the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/sql-client.sh</span><br></span></code></pre></div></div>
+<p>Great so far ! 👍</p>
+<p><strong>Step 1:</strong> The first thing we need to do is to create a Flink catalog that will be used to store the tables we are going to create.
+Let's create a catalog called <code>fluss_catalog</code> and use this catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> CATALOG fluss_catal [...]
+<p><strong>Step 2:</strong> Then let's create <code>3 tables</code> to represent the different data sources that will be used to build the recommendations wide table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Recommendations – model scores</span><span class="token  [...]
+<p><strong>Step 3:</strong> Of course, we will need some sample data to work with , so let's go on and insert some records into the tables. 💻</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Recommendations – model scores</span><span class="token  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Impressions – how often each (user,item) was shown</span [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Clicks – user engagement</span><span class="token plain" [...]
+<blockquote>
+<p><strong>Note:</strong> 🚨 So far the jobs we run were bounded jobs, so they will finish after inserting the records. Moving forward we will run some streaming jobs.
+So keep in mind that each job runs with a <code>parallelism of 3</code> and our environment is set up <code>with 10 slots total</code>.
+So make sure to keep an eye to the Flink Web UI to see how many slots are used and how many are available and stop some jobs when are no longer needed to free up resourecs.</p>
+</blockquote>
+<p><strong>Step 4:</strong> At this point let's open up a separate terminal and start the Flink SQL CLI.
+In this new terminal, make sure to run set the <code>result-mode</code>:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">SET </span><span class="token string" style="color:rgb(206, 145, 120)">'sql-client.execut [...]
+<p>and then run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>to observe the output of the table, as we insert <code>partially</code> records into the it from the different sources.</p>
+<p><strong>Step 5:</strong> Let's insert the records from the <code>recommendations</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply recommendation scores</span><span class="token pla [...]
+<p><strong>Output:</strong> Notice, how only the related columns are updated in the <code>user_rec_wide</code> table and the rest of the columns are <code>NULL</code>.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Step 5:</strong> Next, let's insert the records from the <code>impressions</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply impression counts</span><span class="token plain"> [...]
+<p><strong>Output:</strong> Notice how the <code>impressions</code> records are inserted into the <code>user_rec_wide</code> table and the <code>imp_cnt</code> column is updated.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Step 6:</strong> Finally, let's insert the records from the <code>clicks</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply click counts</span><span class="token plain"></spa [...]
+<p><strong>Output:</strong> Notice how the <code>clicks</code> records are inserted into the <code>user_rec_wide</code> table and the <code>click_cnt</code> column is updated.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Reminder:</strong> ‼️As mentioned before make sure to stop the jobs that are no longer needed to free up resources.</p>
+<p>Now let's switch to <code>batch</code> mode and query the current snapshot of the <code>user_rec_wide</code> table.</p>
+<p>But before that, let's start the <a href="https://alibaba.github.io/fluss-docs/docs/maintenance/tiered-storage/lakehouse-storage/#start-the-datalake-tiering-service" target="_blank" rel="noopener noreferrer">Tiering Service</a> that allows offloading the tables as <code>Lakehouse</code> tables.</p>
+<p><strong>Step 7:</strong> Open a new terminal 💻 in the <code>Coordinator Server</code> and run the following command to start the <code>Tiering Service</code>:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/lakehouse.sh </span><span class="token parameter variable" style="color:rgb(156, 22 [...]
+<p>The configured checkpoint is <code>flink.execution.checkpointing.interval=30s</code> so wait a bit until the first checkpoint is created
+and data gets offloading to the <code>Lakehouse</code> tables.</p>
+<p><strong>Step 8:</strong> Finally let's switch to <code>batch</code> mode and query the current snapshot of the <code>user_rec_wide</code> table.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">SET </span><span class="token string" style="color:rgb(206, 145, 120)">'execution.runtime [...]
+<p>🎉 That's it! You have successfully created a unified wide table using partial updates in Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="https://fluss.apache.org/blog/partial-updates/#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h3>
+<p>Partial updates in Fluss enable an alternative approach in how we design streaming data pipelines for enriching or joining data.</p>
+<p>When all your sources share a primary key - otherwise you can mix &amp; match <a href="https://alibaba.github.io/fluss-docs/docs/engine-flink/lookups/#lookup" target="_blank" rel="noopener noreferrer">streaming lookup joins</a> - you can turn the problem on its head: update a unified table incrementally, rather than joining streams on the fly.</p>
+<p>The result is a more scalable, maintainable, and efficient pipeline.
+Engineers can spend less time wrestling with Flink’s state, checkpoints and join mechanics, and more time delivering fresh, integrated data to power real-time analytics and applications.
+With Fluss handling the merge logic, achieving a single, up-to-date view from multiple disparate streams becomes way more elegant. 😁</p>
+<p>And before you go 😊 don’t forget to give Fluss 🌊 some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content>
+        <author>
+            <name>Giannis Polyzos</name>
+            <uri>https://github.com/polyzos</uri>
+        </author>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[The Story of Fluss Logo]]></title>
+        <id>https://fluss.apache.org/blog/unveil-fluss-logo/</id>
+        <link href="https://fluss.apache.org/blog/unveil-fluss-logo/"/>
+        <updated>2025-05-28T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/colored_logo-570a85568f48c50f3ce9cdcfc57c8670.png" width="1614" height="686" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-the-little-otter">Introducing the Little Otter<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#introducing-the-little-otter" class="hash-link" aria-label="Direct link to Introducing the Little Otter" title="Direct link to Introducing the Little Otter">​</a></h2>
+<p>Today is <a href="https://www.otter.org/world-otter-day" target="_blank" rel="noopener noreferrer">World Otter Day</a>, and we are thrilled to introduce the little otter to the Fluss community! 🎉</p>
+<p>Since open-sourced half a year ago, many community members and friends have asked us:
+"When will Fluss get a logo?" After more than a month of careful design work and over 30 iterations, we’re excited to finally unveil the official Fluss logo — a surfing otter! 🦦🌊</p>
+<p>I don't want to interpret the symbolic meaning behind the Logo in a rigid way. Instead, I’d like to share the story behind its design — how we defined the direction and iterated step by step toward the final version. This process involved numerous subjective decisions made by the team. You might prefer one of the discarded versions, or disagree with some of the design choices. However, we want to share the journey with our community, and we hope it can also serve as a reference or ins [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="logo-symbolism-what-do-we-want-to-convey">Logo symbolism: what do we want to convey?<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#logo-symbolism-what-do-we-want-to-convey" class="hash-link" aria-label="Direct link to Logo symbolism: what do we want to convey?" title="Direct link to Logo symbolism: what do we want to convey?">​</a></h2>
+<p><a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">Fluss</a> is an open-source streaming storage system designed for analytical workloads, with the goal of serving as a real-time data layer for Lakehouse architectures. Therefore, <em><strong>fluidity</strong></em> is the first key message we want to convey.</p>
+<p>Secondly, Fluss’s vision is to <strong>"Bring better analytics to data streams, and bring better freshness to data Lakehouses"</strong>. This requires the ability to adapt to multiple data lake formats and support a variety of query engines and compute engines. So, <em><strong>adaptability</strong></em> is the second core idea we want to convey.</p>
+<p>Additionally, as an open-source project planning to be donated to the Apache Software Foundation, building an open, diverse, and collaborative community has always been one of our core goals. In line with this value, we wanted the brand to express <em><strong>friendliness</strong></em>, which ultimately led us to choose animal as the logo design direction.</p>
+<p>We have also considered using abstract graphics for logo design. However, we noticed that many open-source projects that start with abstract logos, eventually introduce animal mascots to convey the friendliness of the community. These mascots not only play an important role in community outreach but also often replace the main logo in many contexts, becoming more representative visual symbols — such as Go’s gopher, Rust’s crab, and Airbyte’s octopus. Animal images are easier to get cl [...]
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image1-6acb85f09ad799d93582a37896aabf30.png" width="2768" height="1604" class="img_ev3q"></p>
+<p>Therefore, we made clear the direction in the early stage of Fluss Logo design: use an Animal image to convey our concept of <strong>fluidity</strong>, <strong>adaptability</strong>, and <strong>friendliness</strong>. The project name "Fluss" comes from the German word for "river" (Fluss), and we also hope that this animal has a close relationship with the river. Combined with these characteristics, the first animal that comes to our mind is the <strong>otter</strong>. The otter is an [...]
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png" width="2310" height="1242" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="design-iterations-for-more-than-30-versions">Design iterations for more than 30 versions<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#design-iterations-for-more-than-30-versions" class="hash-link" aria-label="Direct link to Design iterations for more than 30 versions" title="Direct link to Design iterations for more than 30 versions">​</a></h2>
+<p>After clarifying the design direction and core values of Fluss Logo, we began to communicate with the design team in depth and launched multiple rounds of iteration. However, in the early versions of the design, we still couldn’t find the right feel — something was missing: the fluidity.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image3-37c9a30c044c5afbc6e35fa21c1793bc.png" width="1930" height="1014" class="img_ev3q"></p>
+<p>Therefore, we used ChatGPT to find inspiration, and tried a variety of prompt words, and this picture with a surfing wave quickly caught our eyes: dynamic, energy, speed, and flow, which is what we want! Although this otter looks like a Jerry rat... our design team quickly got our idea.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image4-c4082ae4730f49472a0414543ab5075a.png" width="298" height="294" class="img_ev3q"></p>
+<p>Based on the core elements of “otter” + “surfing”, we started a new round of design, and we iterated more than 20 versions based on this and finally evolved to the version you see today.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image5-7b6a1c8656ea141b803b8787e89d75df.png" width="2626" height="1204" class="img_ev3q"></p>
+<p>Subsequently, we also made many variations of the logo to adapt to different environments and background colors.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image6-ec1c384b777aef0f617d3fcb08a5e39e.png" width="1900" height="1048" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-feedback-from-community-users">Get feedback from community users<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#get-feedback-from-community-users" class="hash-link" aria-label="Direct link to Get feedback from community users" title="Direct link to Get feedback from community users">​</a></h2>
+<p>Designing a logo is a highly subjective process. But for an open-source project, the goal isn't to please the founding team — it's to resonate with the community. That’s why we've always valued community feedback and used it to guide our iterations.</p>
+<p>Some of the community feedback I loved very much:</p>
+<ul>
+<li>"The Fluss otter seems to be a sibling to Flink's squirrel."</li>
+<li>"I see Paimon in it!"</li>
+<li>"It's soooo cute!"</li>
+</ul>
+<p>Give it some ❤️ via ⭐ on GitHub if you like it as well!
+<a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">https://github.com/alibaba/fluss</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="community-egg">Community Egg<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#community-egg" class="hash-link" aria-label="Direct link to Community Egg" title="Direct link to Community Egg">​</a></h2>
+<p>At the time of the Fluss logo release, we also submitted an <a href="https://lists.apache.org/thread/osg23opm9x95xm318160808r984k0wk9" target="_blank" rel="noopener noreferrer">incubation proposal</a> to the Apache Software Foundation, thanks to the strong support from our incubation mentors Yu Li, tison, Jingsong Lee, Becket Qin, and Jean-Baptiste. We're confident that Fluss will soon become one of the Apache projects.</p>
+<p>In parallel, we’ve designed and launched a series of Fluss community gifts, including stickers, t-shirts, and coffee cups. These items will be available at upcoming community events — stay tuned and pick your swags!</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image7-246c5eae97745ed3ae9872e84a86b134.png" width="1130" height="633" class="img_ev3q"></p>]]></content>
+        <author>
+            <name>Jark Wu</name>
+            <uri>https://github.com/wuchong</uri>
+        </author>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Announcing Fluss 0.6]]></title>
+        <id>https://fluss.apache.org/blog/releases/0.6/</id>
+        <link href="https://fluss.apache.org/blog/releases/0.6/"/>
+        <updated>2025-03-10T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p>The Fluss community is pleased to announce the official release of <strong>Fluss 0.6.0</strong>. This version has undergone over
+three months of intensive development, bringing together the expertise and efforts of 45 contributors worldwide,
+with more than 200 code commits completed. Our heartfelt thanks go out to every contributor for their invaluable support!</p>
+<p><img decoding="async" loading="lazy" alt="Release Announcement" src="https://fluss.apache.org/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png" width="1224" height="440" class="img_ev3q"></p>
+<p>This release introduces several exciting features:</p>
+<ul>
+<li><strong>Column Compression</strong>: Reduces storage space by up to <strong>6x</strong> while preserving column pruning performance!</li>
+<li><strong>Merge Engine</strong>: Introduces flexible merge strategies for primary key data, addressing diverse real-time processing needs.</li>
+<li><strong>Prefix Lookup</strong>: Delta Join functionality is now ready on the Fluss side!</li>
+</ul>
+<p>These new features not only significantly enhance the functionality of Fluss but also represent a solid step
+forward in our journey toward building the next-generation analytical stream storage solution.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="column-compression">Column Compression<a href="https://fluss.apache.org/blog/releases/0.6/#column-compression" class="hash-link" aria-label="Direct link to Column Compression" title="Direct link to Column Compression">​</a></h2>
+<p>Fluss uses the <a href="https://arrow.apache.org/" target="_blank" rel="noopener noreferrer">Apache Arrow</a> columnar format for it's underlying log file storage, fully leveraging Arrow's streaming
+columnar capabilities to achieve highly efficient streaming reads and column pruning. Column pruning in Fluss is performed on the server side,
+with end-to-end zero-copy optimization that allows the required column data to be sent directly to the network without
+loading it into memory from disk. This design not only significantly improves performance but also drastically reduces
+network I/O costs and resource overhead. In previous <a href="https://fluss.apache.org/blog/fluss-intro/#columnar-stream">benchmark tests</a>,
+when 90% of the columns were pruned, Fluss achieved a 10x increase in read throughput, demonstrating its exceptional
+performance in streaming data processing and transmission.</p>
+<p>While column pruning effectively reduces network I/O costs, disk storage costs remain high. To address this,
+we have introduced <strong>column compression</strong> in this version, supporting two highly efficient compression algorithms: <strong>ZSTD</strong> and <strong>LZ4</strong>.
+These algorithms significantly reduce data storage requirements, thereby lowering storage costs substantially.
+Since both compression and decompression are performed on the client side, the amount of data transmitted over the network is reduced,
+further decreasing network I/O costs. Notably, compression is applied independently to each column, ensuring that the original column pruning performance is preserved and that streaming read efficiency remains unaffected.</p>
+<p>To validate the actual effectiveness of this feature, we conducted benchmark tests using a typical business scenario from Alibaba Taobao.
+In the tests, we used datasets of the same scale and Flink jobs with identical resources, writing to Fluss with and without ZSTD compression,
+and compared the write throughput. Subsequently, we read data from the table and tested the read throughput.
+The results showed that column compression not only reduced storage space by approximately 6x but also improved read and write throughput.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="https://fluss.apache.org/assets/images/compression1-0b666a1467321b28376db725380eda3c.jpg" width="962" height="572" class="img_ev3q"></p>
+<p>However, enabling compression had no noticeable impact on Flink's read/write CPU and memory usage.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="https://fluss.apache.org/assets/images/compression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg" width="1180" height="542" class="img_ev3q"></p>
+<p>The performance of column pruning on compressed data was also tested. The results show that as the number of pruned columns increases,
+a multiple-fold performance improvement is still achieved, maintaining the original column pruning efficiency.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="https://fluss.apache.org/assets/images/compression3-1f5de9eec6dd66394a793f26395a8f49.jpg" width="1196" height="624" class="img_ev3q"></p>
+<p>Given the significant cost savings and performance improvements achieved by column compression in general use cases,
+ZSTD compression is enabled by default for log tables in Fluss 0.6. Users can disable compression by
+setting the parameter <code>'table.log.arrow.compression.type'='NONE'</code> on the table.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="merge-engine">Merge Engine<a href="https://fluss.apache.org/blog/releases/0.6/#merge-engine" class="hash-link" aria-label="Direct link to Merge Engine" title="Direct link to Merge Engine">​</a></h2>
+<p>In this version, Fluss introduces a new Merge Engine feature for primary key tables to flexibly support merging strategies for data with the same primary key.
+The default Merge Engine strategy for primary key tables is to retain the latest record for each primary key.
+Users can also choose alternative Merge Engines, including the currently supported <strong>FirstRow Merge Engine</strong> and <strong>Versioned Merge Engine</strong>.
+Support for the <strong>Aggregate Merge Engine</strong> is planned for future releases.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="firstrow-merge-engine">FirstRow Merge Engine<a href="https://fluss.apache.org/blog/releases/0.6/#firstrow-merge-engine" class="hash-link" aria-label="Direct link to FirstRow Merge Engine" title="Direct link to FirstRow Merge Engine">​</a></h3>
+<p>By setting the table property <code>'table.merge-engine' = 'first_row'</code>, users can retain the first record for each primary key.
+When this configuration is enabled, the primary key table will generate an append-only changelog. This allows downstream
+Flink jobs subscribing to the table to receive an append-only stream, enabling the use of operators that do not support retraction messages,
+such as Window Aggregations and Interval Joins. This feature is commonly used as a replacement for log deduplication in streaming processing,
+effectively reducing costs and system complexity.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- create first_row primary key table</span><span class="to [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="versioned-merge-engine">Versioned Merge Engine<a href="https://fluss.apache.org/blog/releases/0.6/#versioned-merge-engine" class="hash-link" aria-label="Direct link to Versioned Merge Engine" title="Direct link to Versioned Merge Engine">​</a></h3>
+<p>The Versioned Merge Engine supports data updates based on version numbers (or event timestamps). It ensures that only the record
+with the highest version number (or event timestamp) for each primary key is retained. This mechanism is particularly useful for
+deduplicating or merging out-of-order data while guaranteeing eventual consistency with the upstream data source.
+In Flink streaming processing, this feature can be used as a replacement for <code>Rank</code> or <code>Deduplication</code> operations, simplifying workflows and reducing costs effectively.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- create a versioned primary key table, `ts` as the versio [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prefix-lookup-for-delta-join">Prefix Lookup for Delta Join<a href="https://fluss.apache.org/blog/releases/0.6/#prefix-lookup-for-delta-join" class="hash-link" aria-label="Direct link to Prefix Lookup for Delta Join" title="Direct link to Prefix Lookup for Delta Join">​</a></h2>
+<p>In the scenario of building wide tables with Flink, optimizing Stream-Stream Join using Delta Join is one of the primary use cases for Fluss.
+We have also contributed this functionality to version 0.6. Delta Join can be simply understood as a "bilateral driven lookup join", that is:
+when data arrives from the left stream, the right table is queried using the join key; when data arrives from the right stream, the left table is queried using the join key.
+This approach eliminates join state like Lookup Join, while preserving the semantics of a Stream-Stream Join (any updates on either side triggers an update to the join result).
+Delta Join addresses challenges such as high cost, unstable job, checkpoint timeout, slow restart recovery, etc., in the traditional Stream-Stream Join.</p>
+<p><img decoding="async" loading="lazy" alt="Delta Join" src="https://fluss.apache.org/assets/images/delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg" width="2024" height="884" class="img_ev3q"></p>
+<p>Overall, Delta Join relies on three core functionalities:</p>
+<ul>
+<li><strong>CDC Stream Read for Source Table</strong>: The foundational capability of Fluss.</li>
+<li><strong>Lookup on Join Keys for Source Table</strong>: Introduced in Fluss 0.6 with Prefix Lookup support.</li>
+<li><strong>Delta Join Operator in Flink SQL</strong>: Proposed in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-486%3A+Introduce+A+New+DeltaJoin" target="_blank" rel="noopener noreferrer">FLIP-486</a>, planned for Flink 2.1.</li>
+</ul>
+<p>Once FLIP-486 is completed, users will be able to achieve Delta Join using the following SQL in conjunction with Fluss's Prefix Lookup functionality:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<p>Flink performs lookups on Fluss tables using the Join Key, which serves as the Bucket Key for the Fluss table.
+This allows it to leverage the prefix index of the primary key in the Fluss table, enabling highly efficient lookup queries.
+This feature in Fluss is referred to as Prefix Lookup. Currently, Prefix Lookup can also be used to perform one-to-many lookup queries.
+For more details, please refer to the <a href="https://fluss.apache.org/docs/engine-flink/lookups/#prefix-lookup">Prefix Lookup</a> documentation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stability--performance-improvements">Stability &amp; Performance Improvements<a href="https://fluss.apache.org/blog/releases/0.6/#stability--performance-improvements" class="hash-link" aria-label="Direct link to Stability &amp; Performance Improvements" title="Direct link to Stability &amp; Performance Improvements">​</a></h2>
+<p>In this version, we have focused on enhancing the stability and performance of the system, resolving over 50 issues and improvements,
+and conducting in-depth optimizations on core modules. For example:</p>
+<ul>
+<li>Server-side Optimization : By introducing a delayed response mechanism, CPU consumption in low-traffic scenarios has been significantly reduced, thereby improving resource utilization efficiency.</li>
+<li>Client-side Optimization : A unified memory management mechanism has been implemented to effectively prevent Out-of-Memory (OOM) issues in high-traffic scenarios while reducing the impact of garbage collection (GC) on system performance.</li>
+</ul>
+<p>These improvements have significantly enhanced Fluss's reliability and performance in high-concurrency, large-data-volume scenarios, enabling it to handle analytical stream storage workload more efficiently.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lakehouse-storage">Lakehouse Storage<a href="https://fluss.apache.org/blog/releases/0.6/#lakehouse-storage" class="hash-link" aria-label="Direct link to Lakehouse Storage" title="Direct link to Lakehouse Storage">​</a></h2>
+<p>In previous versions, if a table in Fluss needed to enable the Lakehouse storage capability, it had to be enabled when table is created.
+Otherwise, enabling this feature later would require deleting and recreating the table. This limitation arose because enabling Lakehouse storage changes the key encoding format and bucket sharding strategy, making existing tables incompatible with the new configuration.</p>
+<p>In this version, we resolve this by detecting the cluster's default data lake format and adopting its key encoding and bucketing strategy,
+allowing Lakehouse storage to be enabled dynamically after table creation. This eliminates the need for table recreation, improving usability.
+Additionally, Paimon dependency is upgraded to version 1.0.1 in this release.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="flink-integration">Flink Integration<a href="https://fluss.apache.org/blog/releases/0.6/#flink-integration" class="hash-link" aria-label="Direct link to Flink Integration" title="Direct link to Flink Integration">​</a></h2>
+<p>This version introduces the following enhancements to the Flink connector:</p>
+<ol>
+<li><strong>Sink Support for Ignoring Retractions:</strong>
+Both Primary Key Tables and Log Tables now support the <code>'sink.ignore-delete'</code> parameter in their Sink implementations. This enables better compatibility with scenarios involving retraction messages, meeting the demands of more complex streaming data processing.</li>
+<li><strong>Enhanced Partition Table Operations:</strong>
+Partitioned tables now support <code>ALTER TABLE ADD/DROP PARTITION</code> and <code>SHOW PARTITIONS</code> operations, further improving the flexibility and usability of partition management.</li>
+<li><strong>Sink Interface Upgrade:</strong>
+The <code>SinkFunction</code> has been upgraded to the <code>SinkV2</code> interface, laying the groundwork for full compatibility with Flink 2.0 in the next version. This ensures the system's scalability and compatibility in future releases.</li>
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-notes">Upgrade Notes<a href="https://fluss.apache.org/blog/releases/0.6/#upgrade-notes" class="hash-link" aria-label="Direct link to Upgrade Notes" title="Direct link to Upgrade Notes">​</a></h2>
+<p>The Fluss community try to ensure compatibility during upgrades. However, upgrading from Fluss 0.5 to 0.6 is an incompatible upgrade.
+Starting with version 0.6, we will officially provide backward compatibility to ensure smoother and more reliable upgrades in future releases.
+Therefore, version 0.6 is the recommended version for adoption and ecosystem integration.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plan">Future Plan<a href="https://fluss.apache.org/blog/releases/0.6/#future-plan" class="hash-link" aria-label="Direct link to Future Plan" title="Direct link to Future Plan">​</a></h2>
+<p>In the next version, we will focus on the development of the following core features:</p>
+<ol>
+<li>
+<p><strong>New Lake-Stream Integrated Architecture:</strong>
+A completely new architecture designed for large-scale production environments, featuring plug-in support for mainstream lake formats such as Iceberg and Hudi. This addresses key pain points in Tiering Service performance, scalability, and operational efficiency, providing a more reliable Lakehouse integrated solution for enterprise use cases.</p>
+</li>
+<li>
+<p><strong>Authentication and Authorization:</strong>
+Introducing plugin-based authentication and fine-grained access control to meet the stringent data security requirements of enterprises.</p>
+</li>
+<li>
+<p><strong>Kafka Compatibility:</strong>
+Compatibility with the Kafka network protocol, enabling seamless integration with the Kafka ecosystem.</p>
+</li>
+</ol>
+<p>For more details about the next release roadmap, please visit the community <a href="https://github.com/alibaba/fluss/discussions/556" target="_blank" rel="noopener noreferrer">discussion page</a>. Your suggestions and contributions are highly welcomed!</p>
+<p>Fluss is under active development. Be sure to stay updated on the project, give it a try and if you like it, don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="list-of-contributors">List of Contributors<a href="https://fluss.apache.org/blog/releases/0.6/#list-of-contributors" class="hash-link" aria-label="Direct link to List of Contributors" title="Direct link to List of Contributors">​</a></h2>
+<p>The Fluss community would like to express gratitude to all the 45 contributors who made this release possible:</p>
+<p>Benchao Li, ForwardXu, Gang Yang, Georgios Andrianakis, Giannis Polyzos, Hongshun Wang, Jark Wu, Kerwin, Leonard Xu, LiJingwei, Liu Xiao, MehulBatra, Michael Koepf, Nicholas Jiang, Ron, RunningDB, Sagar Sumit, SeungMin, Shuo Cheng, Stan, SteNicholas, Tyrantlucifer, Vipamp, WangS-C, WenjunMin, Wenston Xin, Xiaojian Sun, Yang Guo, Yubin Li, Yuepeng Pan, Zmm, benjobs, gongzhongqiang, gyang94, jon-qj, luoyuxia, moses, psxjoy, wangwj, wudi, xiaozhou, yunhong, yuxia Luo, 码界探索, 道君</p>]]></content>
+        <author>
+            <name>Jark Wu</name>
+            <uri>https://github.com/wuchong</uri>
+        </author>
+        <category label="releases" term="releases"/>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Towards A Unified Streaming & Lakehouse Architecture]]></title>
+        <id>https://fluss.apache.org/blog/unified-streaming-lakehouse/</id>
+        <link href="https://fluss.apache.org/blog/unified-streaming-lakehouse/"/>
+        <updated>2025-01-28T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p>The unification of Lakehouse and streaming storage represents a major trend in the future development of modern data lakes and streaming storage systems. Designed specifically for real-time analytics, Fluss has embraced a unified Streaming and Lakehouse architecture from its inception, enabling seamless integration into existing Lakehouse architectures.</p>
+<p>Fluss is designed to address the demands of real-time analytics with the following key capabilities:</p>
+<ul>
+<li><strong>Real-Time Stream Reading and Writing:</strong> Supports millisecond-level end-to-end latency.</li>
+<li><strong>Columnar Stream:</strong> Optimizes storage and query efficiency.</li>
+<li><strong>Streaming Updates:</strong> Enables low-latency updates to data streams.</li>
+<li><strong>Changelog Generation:</strong> Supports changelog generation and consumption.</li>
+<li><strong>Real-Time Lookup Queries:</strong> Facilitates instant lookup queries on primary keys.</li>
+<li><strong>Streaming &amp; Lakehouse Unification:</strong> Seamlessly integrates streaming and lakehouse storage for unified data processing.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-unified-streaming--lakehouse-architecture">Fluss Unified Streaming &amp; Lakehouse Architecture<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#fluss-unified-streaming--lakehouse-architecture" class="hash-link" aria-label="Direct link to Fluss Unified Streaming &amp; Lakehouse Architecture" title="Direct link to Fluss Unified Streaming &amp; Lakehouse Architecture">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img1-163f1412a1ed7b661686302df5bf9edb.png" width="1866" height="635" class="img_ev3q">
+The Fluss architecture is designed to provide millisecond-level end-to-end latency, ensuring high-performance real-time data writing and reading. A core component of this architecture is the <strong>Tiering Service</strong>, which continuously offloads data in Fluss into a standard lakehouse format, such as <code>Apache Paimon</code> or <code>Apache Iceberg</code>. This tiering ensures that external query engines can directly analyze data in the Lakehouse format, enabling efficient batch [...]
+In this architecture:</p>
+<ul>
+<li><strong>Latest Data in Fluss:</strong> Fluss stores the most recent, high-fidelity data for real-time analytics.</li>
+<li><strong>Historical Data in Paimon:</strong> Older data is compacted and stored in Apache Paimon for large-scale historical analysis.</li>
+</ul>
+<p>By leveraging Apache Flink, the integration of Fluss and Paimon supports Union Reads, which combine real-time data in Fluss with historical data in Paimon. This enables analytical queries with second-level freshness, allowing businesses to benefit from up-to-date insights while maintaining access to extensive historical datasets.</p>
+<p>The Streaming/Lakehouse unification design of Fluss provides:</p>
+<ul>
+<li><strong>Unified Architecture:</strong> Simplifies the Lakehouse ecosystem by combining the strengths of streaming and Lakehouse storage.</li>
+<li><strong>Enhanced Real-Time Capabilities:</strong> Millisecond-level latency ensures data is always fresh for critical use cases.</li>
+<li><strong>Seamless Compatibility:</strong> Native support for standard lakehouse formats ensures interoperability with existing analytics engines.</li>
+<li><strong>Optimized Data Management:</strong> Combines real-time and historical data seamlessly for comprehensive analytics workflows.</li>
+</ul>
+<p>Fluss is <strong>a next-generation approach to streaming storage, purpose-built to complement Lakehouse architectures</strong> and drive the adoption of a streaming and Lakehouse unification across industries.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unified-metadata">Unified metadata<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#unified-metadata" class="hash-link" aria-label="Direct link to Unified metadata" title="Direct link to Unified metadata">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img2-86b0eb7b0f26884f8ead16dc4a8db648.png" width="1842" height="732" class="img_ev3q"></p>
+<p>In traditional architectures, streaming storage systems like Kafka and Lakehouse storage solutions like Apache Paimon operated as distinct entities, each maintaining its own metadata. For computing engines such as Apache Flink, this separation presented two significant challenges:</p>
+<ol>
+<li><strong>Dual Catalogs:</strong> Users were required to create and manage two separate catalogs—one for streaming storage and another for lake storage.</li>
+<li><strong>Manual Switching:</strong> Accessing data involved manually switching between catalogs to determine whether to query stream storage or lake storage, resulting in operational complexity and inefficiencies.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unified-access-in-fluss">Unified Access in Fluss<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#unified-access-in-fluss" class="hash-link" aria-label="Direct link to Unified Access in Fluss" title="Direct link to Unified Access in Fluss">​</a></h3>
+<p>In the Fluss, although Fluss and Paimon still maintain independent metadata, they expose a unified catalog and a single table abstraction to the computing engine, such as Apache Flink. This unified approach offers several key advantages:</p>
+<ul>
+<li><strong>Simplified Data Access:</strong> Users can seamlessly access both Lakehouse storage (Paimon) and streaming storage (Fluss) through a single catalog, eliminating the need to manage or switch between separate catalogs.</li>
+<li><strong>Integrated Querying:</strong> The unified table abstraction allows direct access to real-time data in Fluss and historical data in Paimon. For scenarios requiring both, users can leverage <code>Union Reads</code>, combining data from Fluss and Paimon to enable comprehensive analytics with second-level data freshness.</li>
+<li><strong>Operational Efficiency:</strong> By presenting a cohesive interface, the architecture reduces operational complexity, making it easier for users to work with real-time and historical data within a single workflow.</li>
+</ul>
+<p>This unified approach streamlines the interaction between computing engines and storage layers, enhancing both usability and productivity while supporting the high-performance demands of modern analytics workflows.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="alignment-of-data-distribution">Alignment of Data Distribution<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#alignment-of-data-distribution" class="hash-link" aria-label="Direct link to Alignment of Data Distribution" title="Direct link to Alignment of Data Distribution">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img3-d0ea956fb83807118c4d522bdd7b30f4.png" width="1777" height="856" class="img_ev3q"></p>
+<p>In the Fluss, the data distribution between Fluss and Lakehouse storage (e.g., Apache Paimon) is strictly aligned. Fluss supports partitioned tables and buckets, and its bucketing algorithm is fully consistent with Paimon’s. This ensures that a given piece of data is always allocated to the same bucket in both systems, creating a one-to-one correspondence between Fluss buckets and Paimon buckets.
+This strong consistency in data distribution provides two significant benefits:</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-elimination-of-shuffle-overhead-during-tiering">1. Elimination of Shuffle Overhead During Tiering<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#1-elimination-of-shuffle-overhead-during-tiering" class="hash-link" aria-label="Direct link to 1. Elimination of Shuffle Overhead During Tiering" title="Direct link to 1. Elimination of Shuffle Overhead During Tiering">​</a></h4>
+<p>When tiering data from Fluss into Paimon format:</p>
+<ul>
+<li>A Fluss bucket (e.g., bucket1) can be tiered directly into the corresponding Paimon bucket (bucket1).</li>
+<li>There is no need to read data from a Fluss bucket, calculate which Paimon bucket each piece of data belongs to, and then write it to the appropriate Paimon bucket.</li>
+</ul>
+<p>By bypassing this intermediate redistribution step, the architecture avoids costly shuffle overhead, significantly improving compaction efficiency.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-prevention-of-data-inconsistencies">2. Prevention of Data Inconsistencies<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#2-prevention-of-data-inconsistencies" class="hash-link" aria-label="Direct link to 2. Prevention of Data Inconsistencies" title="Direct link to 2. Prevention of Data Inconsistencies">​</a></h4>
+<p>Data consistency is maintained through the use of an identical bucketing algorithm in both Fluss and Paimon. This algorithm calculates the bucket assignment for each piece of data as follows:</p>
+<blockquote>
+<p>bucket_id = hash(row) % bucket_num</p>
+</blockquote>
+<p>By employing the same hash function and algorithm, Fluss and Paimon ensure consistent bucket assignment. If differing algorithms were used, inconsistencies would arise. For example:</p>
+<ul>
+<li>For a primary key table, a data row a might be assigned to bucket1 in Fluss but to bucket2 in Paimon.</li>
+<li>During tiering, if rows were mistakenly placed in bucket1 in Paimon (per Fluss’s assignment), users would fail to locate the data in Paimon due to the mismatch.</li>
+</ul>
+<p>By maintaining strong alignment in data distribution, the architecture eliminates this risk, ensuring data consistency across Fluss and Paimon while simplifying compaction workflows. This alignment underscores the robustness and efficiency of the Fluss unification design.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-reading-more-efficient-data-tracing">Streaming Reading: More Efficient Data Tracing<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#streaming-reading-more-efficient-data-tracing" class="hash-link" aria-label="Direct link to Streaming Reading: More Efficient Data Tracing" title="Direct link to Streaming Reading: More Efficient Data Tracing">​</a></h3>
+<p>In the Fluss, historical data resides in Lakehouse storage, while real-time data is maintained in Fluss. During streaming reads, this architecture enables a seamless combination of historical and real-time data access:</p>
+<ul>
+<li><strong>Historical Data Access:</strong> Fluss retrieves historical data directly from the Lakehouse storage, leveraging its inherent advantages, such as:<!-- -->
+<ul>
+<li><strong>Efficient Filter Pushdown:</strong> Enables query engines to apply filtering conditions at the storage layer, reducing the amount of data read and improving performance.</li>
+<li><strong>Column Pruning:</strong> Allows retrieval of only the necessary columns, optimizing data transfer and query efficiency.</li>
+<li><strong>High Compression Ratios:</strong> Minimizes storage overhead while maintaining fast retrieval speeds.</li>
+</ul>
+</li>
+<li><strong>Real-Time Data Access:</strong> Fluss concurrently reads the latest real-time data from its own storage, ensuring up-to-the-millisecond freshness.</li>
+</ul>
+<p>By combining the strengths of Lakehouse storage for efficient historical data retrieval and Fluss for real-time streaming data, this architecture delivers a highly performant and scalable solution for streaming read scenarios. This integration ensures that users benefit from low-latency data freshness and optimized query performance across both historical and real-time datasets.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="batch-reading-data-freshness-in-seconds">Batch Reading: Data Freshness in Seconds<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#batch-reading-data-freshness-in-seconds" class="hash-link" aria-label="Direct link to Batch Reading: Data Freshness in Seconds" title="Direct link to Batch Reading: Data Freshness in Seconds">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img4-06aab50ae6bb5a5df5cc0e2658815c1f.png" width="1770" height="747" class="img_ev3q"></p>
+<p>Historical data is stored in the Lakehouse, and real-time data is stored in Fluss. In batch reading scenarios, computing engines (such as Flink) can perform union reading of data in Fluss and lake storage to achieve analysis of data freshness in seconds.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-flink-and-fluss">Apache Flink and Fluss<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#apache-flink-and-fluss" class="hash-link" aria-label="Direct link to Apache Flink and Fluss" title="Direct link to Apache Flink and Fluss">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img5-36f56d95c22f50252c6a5caedbfed1d4.png" width="1761" height="730" class="img_ev3q">
+Fluss exposes a unified API to Flink users, allowing them to choose whether to use union reads or read-only reads on the Lakehouse, using the following SQL:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>This reads the complete data of the orders table and Flink will union read the data in Fluss and the Lakehouse.
+If the user only needs to read data on the data lake, you can add the <code>$lake</code> suffix after the table to be read. The SQL is as follows</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE" [...]
+<p>For scenarios where data on a data lake is read-only, Fluss inherits all the optimizations and capabilities of the lake format as a Flink source, such as runtime filters, system table queries, and time travel.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="benefits-of-the-unified-architecture">Benefits Of The Unified Architecture<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#benefits-of-the-unified-architecture" class="hash-link" aria-label="Direct link to Benefits Of The Unified Architecture" title="Direct link to Benefits Of The Unified Architecture">​</a></h2>
+<p>Next, using Apache Paimon as an example, we will illustrate the advantages of using Fluss to build a unified architecture. We will highlight how Fluss enhances the capabilities of Paimon, creating a unified solution that combines the strengths of both systems for efficient real-time and historical data processing.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="second-level-timeliness">Second-level Timeliness<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#second-level-timeliness" class="hash-link" aria-label="Direct link to Second-level Timeliness" title="Direct link to Second-level Timeliness">​</a></h3>
+<p>In Apache Paimon, data visibility is traditionally determined by the Flink checkpoint interval, which typically operates at one minute-level granularity. However, by integrating Fluss with Paimon to build unfiied architecture, this dependency is eliminated.</p>
+<p>With this unification, data becomes visible immediately upon entering Fluss, significantly improving data timeliness to second-level latency. This enhancement ensures that real-time insights can be derived more quickly, meeting the demands of time-sensitive applications while maintaining seamless access to both historical and real-time data.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="consistent-data-freshness-across-all-layers">Consistent Data Freshness Across All Layers<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#consistent-data-freshness-across-all-layers" class="hash-link" aria-label="Direct link to Consistent Data Freshness Across All Layers" title="Direct link to Consistent Data Freshness Across All Layers">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img6-5fdec641b3032d1c0f236cf990d914da.png" width="1570" height="782" class="img_ev3q">
+In the process of building a data warehouse, it is common to organize and manage data by layering, such as Bronze, Silver and Gold following the medallion architecture. As data flows through these layers, maintaining data freshness becomes a critical consideration.</p>
+<p>When Paimon is used as the sole storage solution for each layer, data visibility depends on the Flink checkpoint interval. This introduces cumulative delays:</p>
+<ul>
+<li>The changelog for a given layer becomes visible only after the completion of a Flink checkpoint.</li>
+<li>As this changelog propagates to subsequent layers, the data freshness delay increases with each checkpoint interval.</li>
+</ul>
+<p>For example, with a Flink checkpoint interval of 1 minute:</p>
+<ul>
+<li>The Bronze layer experiences 1-minute delay.</li>
+<li>The Silver layer adds another 1-minute delay, totaling 2 minutes.</li>
+<li>The Gold layer adds yet another 1-minute delay, resulting in a cumulative 3-minute delay.</li>
+</ul>
+<p>With Fluss and Paimon though we get:</p>
+<ul>
+<li><strong>Immediate Data Visibility:</strong> Data in Fluss becomes visible immediately upon ingestion, without waiting for a Flink checkpoint to complete. The changelog is instantly transferred to the next layer.</li>
+<li><strong>Consistent Data Freshness:</strong> The data freshness across all layers is consistent and measured in seconds, eliminating cumulative delays.</li>
+</ul>
+<p>Additionally, if the Fluss Tiering Service is configured with a tiering cycle of 1 minute, the data delay for Paimon storage at each layer is limited to 1 minute, regardless of the number of layers. This ensures:</p>
+<ul>
+<li><strong>Real-Time Data Processing:</strong> Layers can propagate and process data with minimal delay.</li>
+<li><strong>Optimized Streaming &amp; Lakehouse Unification:</strong> The architecture balances the strengths of real-time and batch-oriented storage.</li>
+</ul>
+<p>This integration significantly improves the performance and usability of layered data warehouses, enabling faster insights and better responsiveness to real-time demands.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="more-efficient-and-higher-throughput-changelog-generation">More efficient and higher throughput changelog generation<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#more-efficient-and-higher-throughput-changelog-generation" class="hash-link" aria-label="Direct link to More efficient and higher throughput changelog generation" title="Direct link to More efficient and higher throughput changelog generation">​</a></h3>
+<p>In Apache Paimon, there are currently two commonly used methods for generating changelogs (excluding the Input Producer, which requires more stringent data source requirements and is not considered here):</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="lookup-changelog-producer">Lookup Changelog Producer<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#lookup-changelog-producer" class="hash-link" aria-label="Direct link to Lookup Changelog Producer" title="Direct link to Lookup Changelog Producer">​</a></h4>
+<ul>
+<li><strong>Advantages:</strong> Offers high timeliness for generating changelogs.</li>
+<li><strong>Challenges:</strong> Consumes significant computational resources, leading to higher operational costs.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="full-compaction-producer">Full Compaction Producer:<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#full-compaction-producer" class="hash-link" aria-label="Direct link to Full Compaction Producer:" title="Direct link to Full Compaction Producer:">​</a></h4>
+<ul>
+<li><strong>Advantages:</strong> Does not require additional resource consumption, as changelogs are generated during the Full Compaction process.</li>
+<li><strong>Challenges:</strong> Suffers from poor timeliness, as changelog generation is delayed until a Full Compaction is triggered, which typically occurs after several checkpoints.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-and-paimon-optimizing-changelog-generation">Fluss and Paimon: Optimizing Changelog Generation<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#fluss-and-paimon-optimizing-changelog-generation" class="hash-link" aria-label="Direct link to Fluss and Paimon: Optimizing Changelog Generation" title="Direct link to Fluss and Paimon: Optimizing Changelog Generation">​</a></h4>
+<p>The Fluss and Paimon architecture strikes a balance between timeliness and performance in changelog generation:</p>
+<ul>
+<li><strong>Changelog Timeliness:</strong> Fluss generates changelogs in seconds, ensuring near real-time visibility of data changes.</li>
+<li><strong>Efficient Conversion:</strong> The Fluss Tiering Service efficiently writes Fluss changelogs directly into the Paimon changelog format. This conversion process is highly optimized, avoiding resource-intensive operations such as lookups. Instead, it relies on direct read-and-write operations, significantly reducing overhead.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="key-benefits-of-fluss-and-paimon-changelog-generation">Key Benefits of Fluss and Paimon Changelog Generation<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#key-benefits-of-fluss-and-paimon-changelog-generation" class="hash-link" aria-label="Direct link to Key Benefits of Fluss and Paimon Changelog Generation" title="Direct link to Key Benefits of Fluss and Paimon Changelog Generation">​</a></h4>
+<ol>
+<li><strong>Improved Timeliness:</strong> Near real-time changelog generation ensures data freshness and faster insights.</li>
+<li><strong>Resource Efficiency:</strong> By eliminating the need for computationally expensive operations, the architecture reduces resource consumption while maintaining high performance.</li>
+<li><strong>Seamless Integration:</strong> The direct compatibility between Fluss changelogs and Paimon changelog formats simplifies the process, enhancing system efficiency and reducing operational complexity.</li>
+</ol>
+<p>This architecture provides an elegant solution for use cases that demand both low-latency data updates and optimized resource utilization, making it a robust choice for modern data processing needs.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enabling-multi-writer-support-for-paimon-partial-updates">Enabling Multi-Writer Support for Paimon Partial Updates<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#enabling-multi-writer-support-for-paimon-partial-updates" class="hash-link" aria-label="Direct link to Enabling Multi-Writer Support for Paimon Partial Updates" title="Direct link to Enabling Multi-Writer Support for Paimon Partial Updates">​</a></h3>
+<p>Partial updates are a critical feature in Apache Paimon, particularly for managing large, wide tables. However, in the current Paimon architecture, performing partial updates on wide tables presents significant challenges:</p>
+<ul>
+<li><strong>Single Writer Limitation:</strong> To ensure consistency, all partial updates to a table must be consolidated into a single SQL job. This requires using a UNION statement to combine all partial update operations into a single pipeline, ensuring only one writer is responsible for updating the table.</li>
+<li><strong>Operational Complexity:</strong> Consolidating all updates into one job makes it difficult to manage and tune individual update operations, leading to challenges in scalability and flexibility.</li>
+</ul>
+<p>With Fluss and Paimon integration these limitations are eliminated</p>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png" width="1833" height="783" class="img_ev3q"></p>
+<ul>
+<li><strong>Intermediate Synchronization via Fluss:</strong> All updates pass through Fluss, which serves as an intermediary layer to synchronize changes with Paimon.</li>
+<li><strong>Support for Concurrent Updates:</strong> Fluss enables concurrent updates from multiple SQL jobs, removing the need to consolidate updates into a single job.</li>
+<li><strong>Fine-Grained Job Management:</strong> With the ability to execute multiple independent SQL jobs for updating any number of columns in a wide table, users can perform job-level tuning and management, improving operational efficiency and flexibility.</li>
+</ul>
+<p>This enables organizations to unlock several key advantages:</p>
+<ul>
+<li><strong>High Real-Time Performance:</strong> Lakehouse storage achieves second-level data freshness, meeting the demands of real-time data applications.</li>
+<li><strong>Unified Streaming and Lakehouse Processing:</strong> Data is written once into the architecture and can seamlessly support both batch and streaming use cases, reducing duplication of effort.</li>
+<li><strong>Lower Operational Costs:</strong> Simplified maintenance and reduced complexity of partial updates, lower storage costs by minimizing data duplication and reduced computational costs by eliminating redundant processing pipelines.</li>
+</ul>
+<p>The Fluss and Paimon architecture offers a robust solution for managing partial updates in wide tables while delivering significant improvements in performance, scalability, and operational efficiency.</p>
+<p>All the above highlight the power of a unified streaming and Lakehouse architecture in modern data systems, ensuring real-time capabilities with streamlined workflows.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plans">Future plans<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#future-plans" class="hash-link" aria-label="Direct link to Future plans" title="Direct link to Future plans">​</a></h2>
+<p>The Fluss community is actively working to enhance the streaming and Lakehouse unification capabilities, focusing on the following key areas.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="expanding-union-read-ecosystem">Expanding Union Read Ecosystem<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#expanding-union-read-ecosystem" class="hash-link" aria-label="Direct link to Expanding Union Read Ecosystem" title="Direct link to Expanding Union Read Ecosystem">​</a></h3>
+<p>Currently, Union Read functionality is integrated with Apache Flink, enabling seamless querying of real-time and historical data. Moving forward, the community plans to extend this capability to support additional query engines, such as Apache Spark and StarRocks, further broadening its ecosystem compatibility and adoption.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="diversifying-lake-storage-formats">Diversifying Lake Storage Formats<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#diversifying-lake-storage-formats" class="hash-link" aria-label="Direct link to Diversifying Lake Storage Formats" title="Direct link to Diversifying Lake Storage Formats">​</a></h3>
+<p>At present, Fluss supports Apache Paimon as its primary lake storage. To meet diverse user requirements, the community aims to add support for more lake formats, including <strong>Apache Iceberg</strong> and <strong>Apache Hudi</strong>, thereby providing flexibility and interoperability with a wider range of Lakehouse ecosystems.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="optimizing-arrow-to-parquet-conversion">Optimizing Arrow-to-Parquet Conversion<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#optimizing-arrow-to-parquet-conversion" class="hash-link" aria-label="Direct link to Optimizing Arrow-to-Parquet Conversion" title="Direct link to Optimizing Arrow-to-Parquet Conversion">​</a></h3>
+<p>Fluss leverages Apache Arrow as its storage format, while many Lakehouse formats, such as Paimon, Iceberg, and Hudi, utilize parquet for storage. The Apache Arrow community has developed a mature and efficient solution for converting Arrow data to Parquet. In the future, Fluss will integrate these advancements to enable high-performance Arrow-to-Parquet conversions, significantly reducing the computational overhead of the tiering service and enhancing overall efficiency.</p>]]></content>
+        <author>
+            <name>Luo Yuxia</name>
+            <uri>https://github.com/luoyuxia</uri>
+        </author>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Introducing Fluss: Streaming Storage for Real-Time Analytics]]></title>
+        <id>https://fluss.apache.org/blog/fluss-intro/</id>
+        <link href="https://fluss.apache.org/blog/fluss-intro/"/>
+        <updated>2024-12-12T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p>We have discussed the challenges of using Kafka for real-time analytics in our previous <a href="https://fluss.apache.org/blog/why-fluss/">blog post</a>.
+Today, we are excited to introduce Fluss, a cutting-edge streaming storage system designed to power real-time analytics.
+We are going to explore Fluss's architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-features-of-fluss">Key Features of Fluss<a href="https://fluss.apache.org/blog/fluss-intro/#key-features-of-fluss" class="hash-link" aria-label="Direct link to Key Features of Fluss" title="Direct link to Key Features of Fluss">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="columnar-stream">Columnar Stream<a href="https://fluss.apache.org/blog/fluss-intro/#columnar-stream" class="hash-link" aria-label="Direct link to Columnar Stream" title="Direct link to Columnar Stream">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img1-591c05a64a0e27a33a3ce5776391d92d.jpg" width="3634" height="1188" class="img_ev3q">
+Fluss is, as anticipated, a columnar-based streaming storage, leveraging the <a href="https://arrow.apache.org/docs/python/ipc.html" target="_blank" rel="noopener noreferrer">Apache Arrow IPC Streaming Format</a> for its underlying file storage.
+This enables Fluss to achieve highly efficient column pruning while maintaining millisecond-level streaming reads and writes capabilities.</p>
+<p>The performance benefits of Fluss are evident in its benchmarks against Kafka. In the comparison, the horizontal axis represents the number of columns read, while the vertical axis shows the read throughput. The results clearly demonstrate that Fluss's read performance scales proportionally with the reduction in columns read. For example, when the number of columns is reduced by 90%, Fluss achieves a 10x increase in read throughput.</p>
+<p>A key advantage of Fluss is that column pruning is performed server-side and only the needed column data will be transferred to client-side. This architectural design not only enhances performance but also reduces network costs and resource consumption, making Fluss a highly efficient solution for real-time streaming analytics.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-updates-and-changelog">Real-Time Updates and Changelog<a href="https://fluss.apache.org/blog/fluss-intro/#real-time-updates-and-changelog" class="hash-link" aria-label="Direct link to Real-Time Updates and Changelog" title="Direct link to Real-Time Updates and Changelog">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img2-846063bd092bc571aad305ae7253a190.jpg" width="3484" height="1146" class="img_ev3q">
+Real-time updates and Changelog are very important features required by streaming analytics and Flink.
+At its core, Fluss streaming storage is built on a Log Tablet, with a key-value (KV) index constructed over the Log.
+The relationship between the Log and KV mirrors the concept of stream-table duality:
+updates to the KV generate a changelog that is written to the Log. In the event of a failure, data from the Log is used to recover the KV.</p>
+<p>The KV index is implemented as a Log-Structured Merge (LSM) tree to support large-scale real-time updates,
+and also support partial-update which can be used to build wide tables very efficiently. In addition, the changelog
+generated by KV can be read directly by Flink without additional deduplication cost, which saves a lot of computing resources.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="queryable">Queryable<a href="https://fluss.apache.org/blog/fluss-intro/#queryable" class="hash-link" aria-label="Direct link to Queryable" title="Direct link to Queryable">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img3-f76df2882b217d4aa58efba2edae07d8.jpg" width="3468" height="1148" class="img_ev3q">
+The built-in KV indexes enable high-performance primary key lookups, making Fluss suitable for real-time processing tasks such as dimension table joins. Users can also perform direct data exploration with Fluss, including queries with operations like LIMIT and COUNT, to make debugging data in Fluss very easy.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unification-of-stream-and-lakehouse">Unification of Stream and Lakehouse<a href="https://fluss.apache.org/blog/fluss-intro/#unification-of-stream-and-lakehouse" class="hash-link" aria-label="Direct link to Unification of Stream and Lakehouse" title="Direct link to Unification of Stream and Lakehouse">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img4-80846362d40e3239bfcd92216276b72d.jpg" width="3698" height="1218" class="img_ev3q">
+One of Fluss's standout features is the unification of stream and Lakehouse. In traditional Lambda architecture, you have to duplicate data in both real-time layer and batch layer. While Fluss eliminates this redundancy by unifying "data stored in stream" and "data stored in lake". This unification ensures consistent data and metadata while reducing storage costs and simplifying data workflows.</p>
+<p>At its core, Fluss incorporates a <code>compaction service</code> that ensures seamless integration between stream and lake storage. This service automatically and continuously converts Fluss data into the data lake format.
+A key feature here is called "Shared Data". The Lakehouse storage serves as the historical data layer for the streaming storage, which is optimized for storing long-term data with minute-level latencies. On the other hand, streaming storage serves as the real-time data layer for Lakehouse storage, which is optimized for storing short-term data with millisecond-level latencies.
+The data is shared with each other, and is exposed as a single table.
+For streaming queries on the table, it firstly uses the Lakehouse storage as historical data to have efficient catch-up read performance, and then seamlessly transitions to the streaming storage for real-time data, ensuring no duplicate data is read.
+For batch queries on the table, streaming storage supplements real-time data for Lakehouse storage, enabling second-level freshness for Lakehouse analytics.
+This capability, termed <strong>Union Read</strong>, allows both layers to work in tandem for highly efficient and accurate data access.</p>
+<p>In addition, the automatically converted data lake tables fully adhere to open table format protocols, ensuring compatibility with existing query engines such as Apache Spark, StarRocks, and Trino.
+These engines can directly query data on Lakehouse storage, seamlessly integrating it into users' existing Lakehouse architectures.</p>
+<p>Fluss has already completed integration with Apache Paimon, and integration with Apache Iceberg is underway. This commitment to compatibility ensures that Fluss remains a flexible and powerful component in the modern data stack, bridging real-time and historical data for unified analytics and storage efficiency.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overall-architecture">Overall Architecture<a href="https://fluss.apache.org/blog/fluss-intro/#overall-architecture" class="hash-link" aria-label="Direct link to Overall Architecture" title="Direct link to Overall Architecture">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q">
+This is the overall architecture of Fluss, a cutting-edge streaming storage solution designed specifically for real-time analytics. Fluss operates a server cluster to provide high-performance real-time read and write capabilities, while leveraging remote storage for data tiering to optimize storage costs. Additionally, Fluss integrates seamlessly with Lakehouse architectures, enabling robust query capabilities and a unified data ecosystem.</p>
+<p>The core features of Fluss include real-time streaming reads and writes, column pruning, streaming updates, changelog subscription, real-time lookup queries, and integration of stream and Lakehouse.</p>
+<p>With its robust architecture and comprehensive feature set, Fluss empowers organizations to bridge the gap between real-time and historical data, enabling efficient, scalable, and cost-effective solutions for real-time analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="use-case-delta-join">Use Case: Delta Join<a href="https://fluss.apache.org/blog/fluss-intro/#use-case-delta-join" class="hash-link" aria-label="Direct link to Use Case: Delta Join" title="Direct link to Use Case: Delta Join">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img5-c1bedf1a8c60844ffd67f77f722157f9.jpg" width="3650" height="1222" class="img_ev3q">
+The combination of Fluss’s key features lends itself to a highly effective use case: Delta Join. Apache Flink provides a foundational feature called Stream-Stream Join, widely used for building wide tables. However, it is often one of the most challenging operations in Flink.
+Stream-stream joins require maintaining the full upstream data in the state, leading to significant resource consumption. For instance, one of Taobao's largest Flink jobs is a stream-stream join (exposing associated orders), which needs to maintains a state of over 50 TB. This brings many challenges, such as high cost, unstable job, checkpoint timeout, slow restart recovery, etc.</p>
+<p>To address these challenges, we developed a new Flink join operator implementation called Delta Join, leveraging Fluss’s streaming read and secondary-index lookup capabilities. Delta Join operates like a "bilateral driven lookup join", that is:
+when data arrives from the left stream, the right table is queried using the join key;
+when data arrives from the right stream, the left table is queried using the join key.
+This approach eliminates state like Lookup Join, while preserving the semantics of a Stream-Stream Join (any updates on either side triggers an update to the join result).</p>
+<p>We tested Taobao's largest stream-stream join job and migrated to delta join. The results were impressive:</p>
+<ul>
+<li><strong>Eliminate State:</strong> Migrating from stream-stream join to delta join eliminated the need for <code>50 TB</code> join state, leading to enhanced job stability and avoid checkpoint timeouts.</li>
+<li><strong>Resource Optimization:</strong> Flink resource cost decreased by 10x, dropping from <code>2300 CU</code> to <code>200 CU</code>, while maintaining the same throughput.</li>
+<li><strong>Faster Backfilling:</strong> By leveraging Fluss’s Lakehouse integration, we can use the converted Paimon/Iceberg table and Sort-Merge Join in batch mode for data backfilling. Re-processing one day data was reduced from <code>4 hours</code> to <code>30 minutes</code>.</li>
+</ul>
+<p>Besides the numbers, Delta Join's most significant benefit lies in its user flexibility.
+Unlike traditional stream-stream joins, where the state is tightly coupled with Flink job, operating as an opaque 'black box', any job modification requires a costly and time-consuming state rebuild.
+Delta Join addresses this by decoupling the state from the job, facilitating effortless job modifications without the need to reconstruct the state.
+This separation not only boosts backfilling efficiency but also makes state data easily accessible in Fluss for analysis, thereby enhancing business agility and increasing developer productivity.</p>
+<p>To formalize this innovation, we submitted the Delta Join <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-486%3A+Introduce+A+New+DeltaJoin" target="_blank" rel="noopener noreferrer">FLIP-486 proposal</a> to the Apache Flink community. We invite those interested to review and contribute to this exciting advancement.</p>
+<p>Delta Join, powered by Fluss, represents a breakthrough in real-time analytics by significantly reducing resource consumption, enhancing performance, and unlocking flexibility in stateful stream processing.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plan">Future Plan<a href="https://fluss.apache.org/blog/fluss-intro/#future-plan" class="hash-link" aria-label="Direct link to Future Plan" title="Direct link to Future Plan">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img6-3e455650eb36e97091211441c91b48ac.jpg" width="3700" height="1116" class="img_ev3q">
+The future planning for Fluss involves three key aspects, each corresponding to its relationship with three open-source software projects:</p>
+<ul>
+<li><strong>Apache Kafka Protocol Compatibility:</strong> This is aimed at helping existing streaming data migrate to Fluss more effectively.</li>
+<li><strong>Storage for Apache Flink:</strong> Fluss aims to be the best storage for Apache Flink and streaming analytics, offering deep optimization with Flink across the storage, optimizer and execution layer. Delta Join marks our first major step, with many more exciting features on the way.</li>
+<li><strong>Real-Time Data Layer for Apache Iceberg:</strong> By unifying stream and Lakehouse, Fluss is committed to providing a robust real-time data layer for Apache Iceberg and Apache Paimon. This vision includes creating a unified storage solution that supports both real-time and offline analytics.</li>
+</ul>
+<p>There are more exciting work happening in the community. You can check out <a href="https://fluss.apache.org/roadmap/">Fluss Roadmap</a> for a comprehensive future planning.</p>]]></content>
+        <author>
+            <name>Jark Wu</name>
+            <uri>https://github.com/wuchong</uri>
+        </author>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics]]></title>
+        <id>https://fluss.apache.org/blog/why-fluss/</id>
+        <link href="https://fluss.apache.org/blog/why-fluss/"/>
+        <updated>2024-12-11T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p>The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.
+This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
+where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
+value by leveraging real-time insights to drive business impact and enhance decision-making.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg" width="3656" height="1240" class="img_ev3q">
+The evolution of big data technology is becoming increasingly impactful, reshaping the computing architecture landscape.
+The traditional Hive-based data warehouse has given way to modern architectures, starting with Lakehouse models and progressing
+to the Paimon streaming Lakehouse, which has gained significant traction in markets like China and more recently started expanding to EU/US markets.
+The core driver behind these architectural innovations is the need to improve data processing timeliness. The data freshness is improved from traditional
+T+1 (next-day readiness) to T+1 hours, and now T+1 minutes. However, Lakehouse architectures, being file-system-based,
+inherently face minute-level latency as their practical upper limit.</p>
+<p>Yet, many critical use cases, such as search and recommendation systems, advertisement attribution, and anomaly detection, demand second-level latency.
+While big data technologies have advanced significantly, there remains a notable gap: a user-friendly, second-level storage solution tailored for big data analytics.</p>
+<p>In most real-time data scenarios, Apache Kafka has emerged as the go-to second-level storage solution. Its integration with Apache Flink represents the dominant architecture for building real-time data warehouses. However, while widely adopted, this combination presents significant challenges for achieving true real-time analytics at scale. The limitations of using Kafka for big data analytics highlight the need for a more robust solution to meet the demands of modern real-time use ca [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="kafka-falls-short-in-real-time-analytics">Kafka Falls Short in Real-Time Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-falls-short-in-real-time-analytics" class="hash-link" aria-label="Direct link to Kafka Falls Short in Real-Time Analytics" title="Direct link to Kafka Falls Short in Real-Time Analytics">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="no-support-for-updates">No Support for Updates<a href="https://fluss.apache.org/blog/why-fluss/#no-support-for-updates" class="hash-link" aria-label="Direct link to No Support for Updates" title="Direct link to No Support for Updates">​</a></h3>
+<p>The first significant challenge with Apache Kafka is its lack of support for updates, a critical feature for data warehouses. In data warehousing, updates are often essential to correct or amend data. However, Kafka's inability to handle updates results in duplicate records for the same primary key. When consumed by a computing engine, this duplication necessitates costly deduplication processes to ensure accurate results.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg" width="3656" height="1172" class="img_ev3q"></p>
+<p>In Apache Flink, for instance, handling this issue requires materializing all upstream data in state, which is resource-intensive. Every time data is consumed from Kafka, the deduplication process incurs a substantial overhead, significantly increasing computational and storage costs. This limitation not only impacts performance but also hampers the reusability of Kafka-stored data for downstream business processes.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="lack-of-querying-capabilities">Lack of Querying Capabilities<a href="https://fluss.apache.org/blog/why-fluss/#lack-of-querying-capabilities" class="hash-link" aria-label="Direct link to Lack of Querying Capabilities" title="Direct link to Lack of Querying Capabilities">​</a></h3>
+<p>The second major limitation of Apache Kafka is hard to debug, primarily due to its lack of native querying capabilities. In data warehousing, querying is a fundamental feature that facilitates troubleshooting and ad-hoc analysis to understand data trends. Unfortunately, Kafka operates much like a black box, making it challenging to perform these critical tasks without additional tools or layers.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg" width="3696" height="1214" class="img_ev3q"></p>
+<p>To address this limitation, the industry has adopted two primary approaches, each with its own trade-offs:</p>
+<ul>
+<li><strong>Synchronizing Kafka Data to an OLAP System:</strong> This allows for querying data using the OLAP system’s capabilities. However, this approach introduces additional components into the architecture, increasing both complexity and cost. Moreover, it risks data inconsistencies due to synchronization delays.</li>
+<li><strong>Querying Kafka Directly Using Trino:</strong> While Trino can query Kafka, it relies solely on full scans, which are inefficient for large-scale operations. For instance, a simple query on just 1GB of Kafka data can take up to one minute, rendering it impractical for large datasets or real-time requirements.</li>
+</ul>
+<p>These limitations make Kafka unsuitable for efficient and scalable data exploration in modern data warehousing workflows.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="difficulty-with-data-backfilling">Difficulty with Data Backfilling<a href="https://fluss.apache.org/blog/why-fluss/#difficulty-with-data-backfilling" class="hash-link" aria-label="Direct link to Difficulty with Data Backfilling" title="Direct link to Difficulty with Data Backfilling">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg" width="3526" height="1210" class="img_ev3q">
+The third significant issue with Apache Kafka is processing historical data, also known as data backfilling, a common requirement in data warehousing.
+For instance, in logistics, it usually needs to process and analyze historical data from several months ago. However, Kafka only retain data for a few days due to the high cost of storage.
+Even though Kafka community has introduced <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage" target="_blank" rel="noopener noreferrer">Tiered Storage</a> to address the long-term data issue, it still has limitations.
+Reading historical data still require all the data to pass through Kafka brokers, which can lead to brokers unstable and <a href="https://www.warpstream.com/blog/tiered-storage-wont-fix-kafka#increased-complexity-and-operational-burden" target="_blank" rel="noopener noreferrer">disrupt live traffics</a>.</p>
+<p>These limitations highlight Kafka’s inefficiency as a solution for data backfilling in large-scale and long-term analytical use cases, further underscoring the need for more robust alternatives in real-time data warehousing.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="excessive-network-costs">Excessive Network Costs<a href="https://fluss.apache.org/blog/why-fluss/#excessive-network-costs" class="hash-link" aria-label="Direct link to Excessive Network Costs" title="Direct link to Excessive Network Costs">​</a></h3>
+<p>The final major challenge with Apache Kafka lies in its high network costs, which account for an estimated 88% of Kafka's overall operational expenses. In data warehousing, the "one write, multiple read" pattern is common, with each consumer often requiring only a subset of the data. However, Kafka's design mandates that consumers read the entire dataset, regardless of how much is actually needed.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg" width="3636" height="1206" class="img_ev3q"></p>
+<p>For instance, among the tens of thousands of Flink SQL jobs at Alibaba, only 49% of the upstream columns are utilized per job on average. Despite this, consumers must read all the columns and pay 100% networking cost, which is highly inefficient and wasteful.</p>
+<p>In summary, using Kafka for real-time analytics presents several critical issues: <strong>(1) lack of support for updates</strong>, <strong>(2) absence of querying capabilities</strong>, <strong>(3) difficulty with data backfilling</strong>, and <strong>(4) excessive network costs</strong>. These limitations make the combination of Flink and Kafka less than ideal for real-time data warehousing.
+But why Kafka lacks these abilities? Is it possible to add the abilities to Kafka?</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="kafka-is-not-designed-for-analytics">Kafka is not designed for Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-is-not-designed-for-analytics" class="hash-link" aria-label="Direct link to Kafka is not designed for Analytics" title="Direct link to Kafka is not designed for Analytics">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg" width="3620" height="1148" class="img_ev3q">
+The root cause of these challenges lies in the fundamental design philosophy of Kafka: <strong>Kafka is designed for streaming events, NOT for streaming analytics</strong>. Each system has its own focus and strengths, and Kafka's design is optimized for message queue scenarios rather than analytical workloads.</p>
+<p>In Kafka, data is typically stored in a row-oriented format, such as CSV, JSON, or Avro.
+While this is highly efficient for use cases involving message streaming, it becomes a bottleneck for analytical scenarios.
+Data analysis requires handling large volumes of data, and therefore heavily relies on data skipping capabilities from storage, such as column pruning and predicate pushdown.
+For this reason, columnar storage is far better suited for analytical workloads, whereas Kafka's row-based storage is not designed to meet these demands effectively.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-fluss">Introducing Fluss<a href="https://fluss.apache.org/blog/why-fluss/#introducing-fluss" class="hash-link" aria-label="Direct link to Introducing Fluss" title="Direct link to Introducing Fluss">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg" width="3644" height="1210" class="img_ev3q">
+When visualizing the data ecosystem as a four-quadrant matrix, an intriguing pattern emerges.
+The left side of the matrix represents operational systems, while the right side represents analytical systems.
+The top half is dedicated to stream storage, and the bottom half to table storage.
+In operational systems, both databases and stream storage predominantly use row-based formats, as row storage is more efficient for transactional workloads. Conversely, in analytical systems like Apache Iceberg and Snowflake, columnar storage is preferred due to its superior performance in analytical scenarios.</p>
+<p>Interestingly, the upper-right quadrant of the matrix remains empty, indicating a significant gap in the market: a streaming storage for analytical scenarios. Unsurprisingly, such a storage would likely adopt a columnar format to effectively address the needs of real-time analytics.</p>
+<p>To fill the gap and resolve problems in Flink and streaming analytics, we embarked on a journey two years ago to create a streaming storage. We named the project "<strong>FL</strong>ink <strong>U</strong>nified <strong>S</strong>treaming <strong>S</strong>torage", and from its initials, we derived the name <strong>Fluss</strong>.
+<img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg" width="3700" height="946" class="img_ev3q">
+Interestingly, Flink is derived from the German word for "<strong>agile</strong>", and Fluss, which translates to "<strong>river</strong>" in German, resonates deeply with the project’s vision.
+It symbolizes the streaming data is continuously flowing, distributing and converging into data lakes, just like a river.
+The launch of Fluss coincides with Flink's 10th anniversary, making it a fitting tribute to the project’s heritage and its enduring contribution to the streaming data landscape.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q"></p>
+<p>Learn more details about Fluss in the next <a href="https://fluss.apache.org/blog/fluss-intro/">blog post</a>, where we will delve deeper into Fluss's architecture, design principles, key features, and explore how it addresses the challenges of using Kafka for real-time analytics.</p>]]></content>
+        <author>
+            <name>Jark Wu</name>
+            <uri>https://github.com/wuchong</uri>
+        </author>
+    </entry>
+    <entry>
+        <title type="html"><![CDATA[Fluss is Now Open Source]]></title>
+        <id>https://fluss.apache.org/blog/fluss-open-source/</id>
+        <link href="https://fluss.apache.org/blog/fluss-open-source/"/>
+        <updated>2024-11-29T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[<!--]]></summary>
+        <content type="html"><![CDATA[<p>Earlier this year at Flink Forward 2024 Berlin we <a href="https://www.ververica.com/blog/introducing-fluss" target="_blank" rel="noopener noreferrer">announced Fluss</a> and today we are thrilled to announce open-sourcing the project.
+Fluss is a <strong>streaming storage system</strong> designed to power real-time analytics. It aspires to change how organizations approach real-time data by acting as the <strong>real-time data layer</strong> for the Lakehouse.
+Its cutting-edge design enables businesses to achieve <strong>sub-second latency</strong>, <strong>high throughput</strong>, and <strong>cost efficiency</strong> for data analytics, making it the ideal solution for modern data-driven applications.</p>
+<p>We have historically invested a lot of effort into advancing the data streaming ecosystem, being major contributors to <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer">Apache Flink®</a>, <a href="https://www.ververica.com/blog/ververica-donates-flink-cdc-empowering-real-time-data-integration-for-the-community" target="_blank" rel="noopener noreferrer">Apache Flink CDC</a>, and <a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">A [...]
+As part of our commitment, Fluss is now open source under the Apache 2.0 license and is available on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>, inviting users to create the next generation of real-time architectures.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png" width="3840" height="1286" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-streaming-storage-for-the-lakehouse-era">Real-Time Streaming Storage for the Lakehouse Era<a href="https://fluss.apache.org/blog/fluss-open-source/#real-time-streaming-storage-for-the-lakehouse-era" class="hash-link" aria-label="Direct link to Real-Time Streaming Storage for the Lakehouse Era" title="Direct link to Real-Time Streaming Storage for the Lakehouse Era">​</a></h3>
+<p>The need for real-time insights has grown exponentially - especially with the recent explosion of AI. Still, the tools and architectures we’ve relied on for years weren’t designed with streaming-first analytical workflows in mind. Traditional architectures often involve complex integrations between message queues like Kafka, processing engines like Flink, and storage systems that are more batch-oriented than real-time. This approach not only increases latency but also adds operational [...]
+<p>At its core, Fluss combines the best of <strong>streaming</strong> and <strong>analytical storage</strong>. Its <strong>columnar stream</strong> design is optimized for real-time analytical queries, enabling lightning-fast data access and updates. With support for <strong>real-time data ingestion</strong> and integrations with <strong>real-time lakehouse solutions</strong> such as Paimon, Fluss ensures that data is always fresh and ready for analysis, making it ideal for applications  [...]
+<p>A critical aspect of Fluss is also its deep integration with Apache FlinkⓇ the de facto gold standard for stream processing. This integration combines a <strong>stream processor</strong> and a <strong>real-time storage layer</strong>, eliminating the need for separate message queues like Kafka in analytics-focused architectures. Fluss simplifies pipelines, reduces costs, and improves performance for <strong>high-throughput</strong>, <strong>low-latency analytics</strong>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="building-the-future-of-analytics-with-fluss">Building the Future of Analytics with Fluss<a href="https://fluss.apache.org/blog/fluss-open-source/#building-the-future-of-analytics-with-fluss" class="hash-link" aria-label="Direct link to Building the Future of Analytics with Fluss" title="Direct link to Building the Future of Analytics with Fluss">​</a></h3>
+<p>Fluss is designed to support a wide range of use cases, from powering dashboards and monitoring systems to enabling <strong>streaming ETL</strong> and <strong>real-time intelligence pipelines</strong> for the modern AI era. Its ability to provide real-time updates makes it a natural fit for <strong>streaming data warehouses</strong>, where fresh data is essential for decision-making.</p>
+<p>By serving as the real-time data layer on the Lakehouse, Fluss supports both <strong>streaming-first</strong> architectures and <strong>unified batch and stream processing</strong>. This flexibility should be appealing for organizations looking to modernize their analytics stack while keeping costs low and performance high.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="whats-next-for-fluss">What’s Next for Fluss?<a href="https://fluss.apache.org/blog/fluss-open-source/#whats-next-for-fluss" class="hash-link" aria-label="Direct link to What’s Next for Fluss?" title="Direct link to What’s Next for Fluss?">​</a></h3>
+<p>Open-sourcing Fluss is just the beginning and it will be donated to the Apache Software Foundation (ASF). We’re committed to working closely with the community to expand its capabilities and adoption. You can find more information about the project’s roadmap <a href="https://alibaba.github.io/fluss-docs/roadmap/" target="_blank" rel="noopener noreferrer">here</a>.</p>
+<p><img decoding="async" loading="lazy" alt="Banner" src="https://fluss.apache.org/assets/images/banner-5523bd3a3f5145b15e36c6bfb46796be.png" width="1998" height="1001" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="join-the-journey">Join the Journey<a href="https://fluss.apache.org/blog/fluss-open-source/#join-the-journey" class="hash-link" aria-label="Direct link to Join the Journey" title="Direct link to Join the Journey">​</a></h3>
+<p>We invite you to join us and help grow our community around the project. Explore Fluss, contribute to its development, and build the next generation of data pipelines.</p>
+<p>Make sure to keep an eye on the project, give it a try and if you like it, don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started">Getting Started<a href="https://fluss.apache.org/blog/fluss-open-source/#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started">​</a></h3>
+<ul>
+<li>Visit the <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub repository</a>.</li>
+<li>Check out the <a href="https://alibaba.github.io/fluss-docs/docs/quickstart/flink/" target="_blank" rel="noopener noreferrer">quickstart guide</a>.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="additional-resources">Additional Resources<a href="https://fluss.apache.org/blog/fluss-open-source/#additional-resources" class="hash-link" aria-label="Direct link to Additional Resources" title="Direct link to Additional Resources">​</a></h3>
+<ul>
+<li>Announcement Blog Post: <a href="https://www.ververica.com/blog/introducing-fluss" target="_blank" rel="noopener noreferrer">Introducing Fluss: Unified Streaming Storage For Next-Generation Data Analytics</a></li>
+<li>Flink Forward Keynote Announcement: <a href="https://www.ververica.academy/courses/3d163483-5040-4d60-b5b3-755c3277edf7/activities/1af290fd-05bc-4fab-90be-6ed4628399be" target="_blank" rel="noopener noreferrer">The Future - Introducing Fluss</a></li>
+<li>Flink Forward Fluss Presentation: <a href="https://www.ververica.academy/courses/3d163483-5040-4d60-b5b3-755c3277edf7/activities/a366d118-6c53-47ef-91bb-289fc2462b07" target="_blank" rel="noopener noreferrer">Is Kafka the Best Storage for Streaming Analytics?</a></li>
+</ul>]]></content>
+        <author>
+            <name>Jark Wu</name>
+            <uri>https://github.com/wuchong</uri>
+        </author>
+        <author>
+            <name>Giannis Polyzos</name>
+            <uri>https://github.com/polyzos</uri>
+        </author>
+    </entry>
+</feed>
\ No newline at end of file
diff --git a/blog/atom.xsl b/blog/atom.xsl
new file mode 100644
index 0000000..b4b2d96
--- /dev/null
+++ b/blog/atom.xsl
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsl:stylesheet
+  version="3.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:atom="http://www.w3.org/2005/Atom">
+  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
+
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+      <head>
+        <title>Atom Feed | <xsl:value-of
+            select="atom:feed/atom:title"
+          /></title>
+        <link rel="stylesheet" href="atom.css" />
+      </head>
+      <body>
+        <main>
+          <div class="description">
+            <div class="info">
+              <strong>This is an Atom feed</strong>. Subscribe by copying the URL
+              from the address bar into your newsreader. Visit
+              <a href="https://aboutfeeds.com/">About Feeds</a> to learn more
+              and get started. It’s free.
+            </div>
+            <h1>
+              <div class="rss-icon">
+                <svg
+                  version="1.1"
+                  id="Capa_1"
+                  xmlns="http://www.w3.org/2000/svg"
+                  xmlns:xlink="http://www.w3.org/1999/xlink"
+                  viewBox="0 0 455.731 455.731"
+                  xml:space="preserve">
+                  <g>
+                    <rect
+                      x="0"
+                      y="0"
+                      style="fill: #f78422"
+                      width="455.731"
+                      height="455.731"
+                    />
+                    <g>
+                      <path
+                        style="fill: #ffffff"
+                        d="M296.208,159.16C234.445,97.397,152.266,63.382,64.81,63.382v64.348
+                c70.268,0,136.288,27.321,185.898,76.931c49.609,49.61,76.931,115.63,76.931,185.898h64.348
+                C391.986,303.103,357.971,220.923,296.208,159.16z"
+                      />
+                      <path
+                        style="fill: #ffffff"
+                        d="M64.143,172.273v64.348c84.881,0,153.938,69.056,153.938,153.939h64.348
+                C282.429,270.196,184.507,172.273,64.143,172.273z"
+                      />
+                      <circle
+                        style="fill: #ffffff"
+                        cx="109.833"
+                        cy="346.26"
+                        r="46.088"
+                      />
+                    </g>
+                  </g>
+                </svg>
+              </div>
+              <xsl:value-of select="atom:feed/atom:title" />
+            </h1>
+            <p class="blog-description">
+              <xsl:value-of select="atom:feed/atom:subtitle" />
+            </p>
+          </div>
+          <h2>Recent Posts</h2>
+          <div class="blog-posts">
+            <xsl:for-each select="atom:feed/atom:entry">
+              <div class="blog-post">
+                <h3><a href="{atom:link/@href}"><xsl:value-of
+                      select="atom:title"
+                    /></a></h3>
+                <div class="blog-post-date">
+                  Published on <xsl:value-of
+                    select="substring(atom:updated,0,11)"
+                  />
+                </div>
+                <div class="blog-post-description">
+                  <xsl:value-of select="atom:summary" />
+                </div>
+              </div>
+            </xsl:for-each>
+          </div>
+        </main>
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>
diff --git a/blog/authors/index.html b/blog/authors/index.html
new file mode 100644
index 0000000..2f34599
--- /dev/null
+++ b/blog/authors/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-authors-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Authors | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/blog/a [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/fluss-intro/index.html b/blog/fluss-intro/index.html
new file mode 100644
index 0000000..0421406
--- /dev/null
+++ b/blog/fluss-intro/index.html
@@ -0,0 +1,94 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Introducing Fluss: Streaming Storage for Real-Time Analytics | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" prope [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+Today, we are excited to introduce Fluss, a cutting-edge streaming storage system designed to power real-time analytics.
+We are going to explore Fluss&#x27;s architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-features-of-fluss">Key Features of Fluss<a href="#key-features-of-fluss" class="hash-link" aria-label="Direct link to Key Features of Fluss" title="Direct link to Key Features of Fluss">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="columnar-stream">Columnar Stream<a href="#columnar-stream" class="hash-link" aria-label="Direct link to Columnar Stream" title="Direct link to Columnar Stream">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img1-591c05a64a0e27a33a3ce5776391d92d.jpg" width="3634" height="1188" class="img_ev3q">
+Fluss is, as anticipated, a columnar-based streaming storage, leveraging the <a href="https://arrow.apache.org/docs/python/ipc.html" target="_blank" rel="noopener noreferrer">Apache Arrow IPC Streaming Format</a> for its underlying file storage.
+This enables Fluss to achieve highly efficient column pruning while maintaining millisecond-level streaming reads and writes capabilities.</p>
+<p>The performance benefits of Fluss are evident in its benchmarks against Kafka. In the comparison, the horizontal axis represents the number of columns read, while the vertical axis shows the read throughput. The results clearly demonstrate that Fluss&#x27;s read performance scales proportionally with the reduction in columns read. For example, when the number of columns is reduced by 90%, Fluss achieves a 10x increase in read throughput.</p>
+<p>A key advantage of Fluss is that column pruning is performed server-side and only the needed column data will be transferred to client-side. This architectural design not only enhances performance but also reduces network costs and resource consumption, making Fluss a highly efficient solution for real-time streaming analytics.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-updates-and-changelog">Real-Time Updates and Changelog<a href="#real-time-updates-and-changelog" class="hash-link" aria-label="Direct link to Real-Time Updates and Changelog" title="Direct link to Real-Time Updates and Changelog">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img2-846063bd092bc571aad305ae7253a190.jpg" width="3484" height="1146" class="img_ev3q">
+Real-time updates and Changelog are very important features required by streaming analytics and Flink.
+At its core, Fluss streaming storage is built on a Log Tablet, with a key-value (KV) index constructed over the Log.
+The relationship between the Log and KV mirrors the concept of stream-table duality:
+updates to the KV generate a changelog that is written to the Log. In the event of a failure, data from the Log is used to recover the KV.</p>
+<p>The KV index is implemented as a Log-Structured Merge (LSM) tree to support large-scale real-time updates,
+and also support partial-update which can be used to build wide tables very efficiently. In addition, the changelog
+generated by KV can be read directly by Flink without additional deduplication cost, which saves a lot of computing resources.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="queryable">Queryable<a href="#queryable" class="hash-link" aria-label="Direct link to Queryable" title="Direct link to Queryable">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img3-f76df2882b217d4aa58efba2edae07d8.jpg" width="3468" height="1148" class="img_ev3q">
+The built-in KV indexes enable high-performance primary key lookups, making Fluss suitable for real-time processing tasks such as dimension table joins. Users can also perform direct data exploration with Fluss, including queries with operations like LIMIT and COUNT, to make debugging data in Fluss very easy.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unification-of-stream-and-lakehouse">Unification of Stream and Lakehouse<a href="#unification-of-stream-and-lakehouse" class="hash-link" aria-label="Direct link to Unification of Stream and Lakehouse" title="Direct link to Unification of Stream and Lakehouse">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img4-80846362d40e3239bfcd92216276b72d.jpg" width="3698" height="1218" class="img_ev3q">
+One of Fluss&#x27;s standout features is the unification of stream and Lakehouse. In traditional Lambda architecture, you have to duplicate data in both real-time layer and batch layer. While Fluss eliminates this redundancy by unifying &quot;data stored in stream&quot; and &quot;data stored in lake&quot;. This unification ensures consistent data and metadata while reducing storage costs and simplifying data workflows.</p>
+<p>At its core, Fluss incorporates a <code>compaction service</code> that ensures seamless integration between stream and lake storage. This service automatically and continuously converts Fluss data into the data lake format.
+A key feature here is called &quot;Shared Data&quot;. The Lakehouse storage serves as the historical data layer for the streaming storage, which is optimized for storing long-term data with minute-level latencies. On the other hand, streaming storage serves as the real-time data layer for Lakehouse storage, which is optimized for storing short-term data with millisecond-level latencies.
+The data is shared with each other, and is exposed as a single table.
+For streaming queries on the table, it firstly uses the Lakehouse storage as historical data to have efficient catch-up read performance, and then seamlessly transitions to the streaming storage for real-time data, ensuring no duplicate data is read.
+For batch queries on the table, streaming storage supplements real-time data for Lakehouse storage, enabling second-level freshness for Lakehouse analytics.
+This capability, termed <strong>Union Read</strong>, allows both layers to work in tandem for highly efficient and accurate data access.</p>
+<p>In addition, the automatically converted data lake tables fully adhere to open table format protocols, ensuring compatibility with existing query engines such as Apache Spark, StarRocks, and Trino.
+These engines can directly query data on Lakehouse storage, seamlessly integrating it into users&#x27; existing Lakehouse architectures.</p>
+<p>Fluss has already completed integration with Apache Paimon, and integration with Apache Iceberg is underway. This commitment to compatibility ensures that Fluss remains a flexible and powerful component in the modern data stack, bridging real-time and historical data for unified analytics and storage efficiency.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overall-architecture">Overall Architecture<a href="#overall-architecture" class="hash-link" aria-label="Direct link to Overall Architecture" title="Direct link to Overall Architecture">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q">
+This is the overall architecture of Fluss, a cutting-edge streaming storage solution designed specifically for real-time analytics. Fluss operates a server cluster to provide high-performance real-time read and write capabilities, while leveraging remote storage for data tiering to optimize storage costs. Additionally, Fluss integrates seamlessly with Lakehouse architectures, enabling robust query capabilities and a unified data ecosystem.</p>
+<p>The core features of Fluss include real-time streaming reads and writes, column pruning, streaming updates, changelog subscription, real-time lookup queries, and integration of stream and Lakehouse.</p>
+<p>With its robust architecture and comprehensive feature set, Fluss empowers organizations to bridge the gap between real-time and historical data, enabling efficient, scalable, and cost-effective solutions for real-time analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="use-case-delta-join">Use Case: Delta Join<a href="#use-case-delta-join" class="hash-link" aria-label="Direct link to Use Case: Delta Join" title="Direct link to Use Case: Delta Join">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img5-c1bedf1a8c60844ffd67f77f722157f9.jpg" width="3650" height="1222" class="img_ev3q">
+The combination of Fluss’s key features lends itself to a highly effective use case: Delta Join. Apache Flink provides a foundational feature called Stream-Stream Join, widely used for building wide tables. However, it is often one of the most challenging operations in Flink.
+Stream-stream joins require maintaining the full upstream data in the state, leading to significant resource consumption. For instance, one of Taobao&#x27;s largest Flink jobs is a stream-stream join (exposing associated orders), which needs to maintains a state of over 50 TB. This brings many challenges, such as high cost, unstable job, checkpoint timeout, slow restart recovery, etc.</p>
+<p>To address these challenges, we developed a new Flink join operator implementation called Delta Join, leveraging Fluss’s streaming read and secondary-index lookup capabilities. Delta Join operates like a &quot;bilateral driven lookup join&quot;, that is:
+when data arrives from the left stream, the right table is queried using the join key;
+when data arrives from the right stream, the left table is queried using the join key.
+This approach eliminates state like Lookup Join, while preserving the semantics of a Stream-Stream Join (any updates on either side triggers an update to the join result).</p>
+<p>We tested Taobao&#x27;s largest stream-stream join job and migrated to delta join. The results were impressive:</p>
+<ul>
+<li><strong>Eliminate State:</strong> Migrating from stream-stream join to delta join eliminated the need for <code>50 TB</code> join state, leading to enhanced job stability and avoid checkpoint timeouts.</li>
+<li><strong>Resource Optimization:</strong> Flink resource cost decreased by 10x, dropping from <code>2300 CU</code> to <code>200 CU</code>, while maintaining the same throughput.</li>
+<li><strong>Faster Backfilling:</strong> By leveraging Fluss’s Lakehouse integration, we can use the converted Paimon/Iceberg table and Sort-Merge Join in batch mode for data backfilling. Re-processing one day data was reduced from <code>4 hours</code> to <code>30 minutes</code>.</li>
+</ul>
+<p>Besides the numbers, Delta Join&#x27;s most significant benefit lies in its user flexibility.
+Unlike traditional stream-stream joins, where the state is tightly coupled with Flink job, operating as an opaque &#x27;black box&#x27;, any job modification requires a costly and time-consuming state rebuild.
+Delta Join addresses this by decoupling the state from the job, facilitating effortless job modifications without the need to reconstruct the state.
+This separation not only boosts backfilling efficiency but also makes state data easily accessible in Fluss for analysis, thereby enhancing business agility and increasing developer productivity.</p>
+<p>To formalize this innovation, we submitted the Delta Join <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-486%3A+Introduce+A+New+DeltaJoin" target="_blank" rel="noopener noreferrer">FLIP-486 proposal</a> to the Apache Flink community. We invite those interested to review and contribute to this exciting advancement.</p>
+<p>Delta Join, powered by Fluss, represents a breakthrough in real-time analytics by significantly reducing resource consumption, enhancing performance, and unlocking flexibility in stateful stream processing.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plan">Future Plan<a href="#future-plan" class="hash-link" aria-label="Direct link to Future Plan" title="Direct link to Future Plan">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img6-3e455650eb36e97091211441c91b48ac.jpg" width="3700" height="1116" class="img_ev3q">
+The future planning for Fluss involves three key aspects, each corresponding to its relationship with three open-source software projects:</p>
+<ul>
+<li><strong>Apache Kafka Protocol Compatibility:</strong> This is aimed at helping existing streaming data migrate to Fluss more effectively.</li>
+<li><strong>Storage for Apache Flink:</strong> Fluss aims to be the best storage for Apache Flink and streaming analytics, offering deep optimization with Flink across the storage, optimizer and execution layer. Delta Join marks our first major step, with many more exciting features on the way.</li>
+<li><strong>Real-Time Data Layer for Apache Iceberg:</strong> By unifying stream and Lakehouse, Fluss is committed to providing a robust real-time data layer for Apache Iceberg and Apache Paimon. This vision includes creating a unified storage solution that supports both real-time and offline analytics.</li>
+</ul>
+<p>There are more exciting work happening in the community. You can check out <a href="/roadmap/">Fluss Roadmap</a> for a comprehensive future planning.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/unified-streaming-lakehouse/"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Towards A Unified Streaming &amp; Lakehouse Ar [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/fluss-open-source/index.html b/blog/fluss-open-source/index.html
new file mode 100644
index 0000000..c81b040
--- /dev/null
+++ b/blog/fluss-open-source/index.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Fluss is Now Open Source | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+Fluss is a <strong>streaming storage system</strong> designed to power real-time analytics. It aspires to change how organizations approach real-time data by acting as the <strong>real-time data layer</strong> for the Lakehouse.
+Its cutting-edge design enables businesses to achieve <strong>sub-second latency</strong>, <strong>high throughput</strong>, and <strong>cost efficiency</strong> for data analytics, making it the ideal solution for modern data-driven applications.</p>
+<p>We have historically invested a lot of effort into advancing the data streaming ecosystem, being major contributors to <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer">Apache Flink®</a>, <a href="https://www.ververica.com/blog/ververica-donates-flink-cdc-empowering-real-time-data-integration-for-the-community" target="_blank" rel="noopener noreferrer">Apache Flink CDC</a>, and <a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">A [...]
+As part of our commitment, Fluss is now open source under the Apache 2.0 license and is available on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>, inviting users to create the next generation of real-time architectures.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png" width="3840" height="1286" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-streaming-storage-for-the-lakehouse-era">Real-Time Streaming Storage for the Lakehouse Era<a href="#real-time-streaming-storage-for-the-lakehouse-era" class="hash-link" aria-label="Direct link to Real-Time Streaming Storage for the Lakehouse Era" title="Direct link to Real-Time Streaming Storage for the Lakehouse Era">​</a></h3>
+<p>The need for real-time insights has grown exponentially - especially with the recent explosion of AI. Still, the tools and architectures we’ve relied on for years weren’t designed with streaming-first analytical workflows in mind. Traditional architectures often involve complex integrations between message queues like Kafka, processing engines like Flink, and storage systems that are more batch-oriented than real-time. This approach not only increases latency but also adds operational [...]
+<p>At its core, Fluss combines the best of <strong>streaming</strong> and <strong>analytical storage</strong>. Its <strong>columnar stream</strong> design is optimized for real-time analytical queries, enabling lightning-fast data access and updates. With support for <strong>real-time data ingestion</strong> and integrations with <strong>real-time lakehouse solutions</strong> such as Paimon, Fluss ensures that data is always fresh and ready for analysis, making it ideal for applications  [...]
+<p>A critical aspect of Fluss is also its deep integration with Apache FlinkⓇ the de facto gold standard for stream processing. This integration combines a <strong>stream processor</strong> and a <strong>real-time storage layer</strong>, eliminating the need for separate message queues like Kafka in analytics-focused architectures. Fluss simplifies pipelines, reduces costs, and improves performance for <strong>high-throughput</strong>, <strong>low-latency analytics</strong>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="building-the-future-of-analytics-with-fluss">Building the Future of Analytics with Fluss<a href="#building-the-future-of-analytics-with-fluss" class="hash-link" aria-label="Direct link to Building the Future of Analytics with Fluss" title="Direct link to Building the Future of Analytics with Fluss">​</a></h3>
+<p>Fluss is designed to support a wide range of use cases, from powering dashboards and monitoring systems to enabling <strong>streaming ETL</strong> and <strong>real-time intelligence pipelines</strong> for the modern AI era. Its ability to provide real-time updates makes it a natural fit for <strong>streaming data warehouses</strong>, where fresh data is essential for decision-making.</p>
+<p>By serving as the real-time data layer on the Lakehouse, Fluss supports both <strong>streaming-first</strong> architectures and <strong>unified batch and stream processing</strong>. This flexibility should be appealing for organizations looking to modernize their analytics stack while keeping costs low and performance high.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="whats-next-for-fluss">What’s Next for Fluss?<a href="#whats-next-for-fluss" class="hash-link" aria-label="Direct link to What’s Next for Fluss?" title="Direct link to What’s Next for Fluss?">​</a></h3>
+<p>Open-sourcing Fluss is just the beginning and it will be donated to the Apache Software Foundation (ASF). We’re committed to working closely with the community to expand its capabilities and adoption. You can find more information about the project’s roadmap <a href="https://alibaba.github.io/fluss-docs/roadmap/" target="_blank" rel="noopener noreferrer">here</a>.</p>
+<p><img decoding="async" loading="lazy" alt="Banner" src="/assets/images/banner-5523bd3a3f5145b15e36c6bfb46796be.png" width="1998" height="1001" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="join-the-journey">Join the Journey<a href="#join-the-journey" class="hash-link" aria-label="Direct link to Join the Journey" title="Direct link to Join the Journey">​</a></h3>
+<p>We invite you to join us and help grow our community around the project. Explore Fluss, contribute to its development, and build the next generation of data pipelines.</p>
+<p>Make sure to keep an eye on the project, give it a try and if you like it, don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started">Getting Started<a href="#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started">​</a></h3>
+<ul>
+<li>Visit the <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub repository</a>.</li>
+<li>Check out the <a href="https://alibaba.github.io/fluss-docs/docs/quickstart/flink/" target="_blank" rel="noopener noreferrer">quickstart guide</a>.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="additional-resources">Additional Resources<a href="#additional-resources" class="hash-link" aria-label="Direct link to Additional Resources" title="Direct link to Additional Resources">​</a></h3>
+<ul>
+<li>Announcement Blog Post: <a href="https://www.ververica.com/blog/introducing-fluss" target="_blank" rel="noopener noreferrer">Introducing Fluss: Unified Streaming Storage For Next-Generation Data Analytics</a></li>
+<li>Flink Forward Keynote Announcement: <a href="https://www.ververica.academy/courses/3d163483-5040-4d60-b5b3-755c3277edf7/activities/1af290fd-05bc-4fab-90be-6ed4628399be" target="_blank" rel="noopener noreferrer">The Future - Introducing Fluss</a></li>
+<li>Flink Forward Fluss Presentation: <a href="https://www.ververica.academy/courses/3d163483-5040-4d60-b5b3-755c3277edf7/activities/a366d118-6c53-47ef-91bb-289fc2462b07" target="_blank" rel="noopener noreferrer">Is Kafka the Best Storage for Streaming Analytics?</a></li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/why-fluss/"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left- [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
new file mode 100644
index 0000000..49d852b
--- /dev/null
+++ b/blog/index.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Blog | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/blog/"><m [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>🌊 We are excited to announce the official release of <strong>Fluss 0.7</strong>!</p>
+<p>This version has undergone extensive improvements in <strong>stability</strong>, <strong>architecture</strong>, <strong>performance optimization</strong>, and <strong>security</strong>, further enhancing its readiness for <strong>production environments</strong>. Over the past three months, we have completed more than <strong>250 commits</strong>, making this release a significant milestone toward becoming a mature, production-grade streaming storage platform.</p></div><footer class=" [...]
+<p>Traditional streaming data pipelines often need to join many tables or streams on a primary key to create a wide view.
+For example, imagine you’re building a real-time recommendation engine for an e-commerce platform.
+To serve highly personalized recommendations, your system needs a complete 360° view of each user, including:
+<em>user preferences</em>, <em>past purchases</em>, <em>clickstream behavior</em>, <em>cart activity</em>, <em>product reviews</em>, <em>support tickets</em>, <em>ad impressions</em>, and <em>loyalty status</em>.</p>
+<p>That’s at least <strong>8 different data sources</strong>, each producing updates independently.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Understanding Partial Updates" href="/blog/partial-updates/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/unveil-fluss-logo/">The Story of Fluss Logo</a></h2><div class="container_mt6G margin-vert--md"><ti [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-the-little-otter">Introducing the Little Otter<a href="#introducing-the-little-otter" class="hash-link" aria-label="Direct link to Introducing the Little Otter" title="Direct link to Introducing the Little Otter">​</a></h2>
+<p>Today is <a href="https://www.otter.org/world-otter-day" target="_blank" rel="noopener noreferrer">World Otter Day</a>, and we are thrilled to introduce the little otter to the Fluss community! 🎉</p>
+<p>Since open-sourced half a year ago, many community members and friends have asked us:
+&quot;When will Fluss get a logo?&quot; After more than a month of careful design work and over 30 iterations, we’re excited to finally unveil the official Fluss logo — a surfing otter! 🦦🌊</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about The Story of Fluss Logo" href="/blog/unveil-fluss-logo/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/releases/0.6/" [...]
+three months of intensive development, bringing together the expertise and efforts of 45 contributors worldwide,
+with more than 200 code commits completed. Our heartfelt thanks go out to every contributor for their invaluable support!</p>
+<p><img decoding="async" loading="lazy" alt="Release Announcement" src="/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png" width="1224" height="440" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a rel="tag" title="Content related release announcement." class="tag_zVej tagRegular_sFm0" href="/blog/tags/releases/">releases</a></li></ul></div><div class= [...]
+<p>Fluss is designed to address the demands of real-time analytics with the following key capabilities:</p>
+<ul>
+<li><strong>Real-Time Stream Reading and Writing:</strong> Supports millisecond-level end-to-end latency.</li>
+<li><strong>Columnar Stream:</strong> Optimizes storage and query efficiency.</li>
+<li><strong>Streaming Updates:</strong> Enables low-latency updates to data streams.</li>
+<li><strong>Changelog Generation:</strong> Supports changelog generation and consumption.</li>
+<li><strong>Real-Time Lookup Queries:</strong> Facilitates instant lookup queries on primary keys.</li>
+<li><strong>Streaming &amp; Lakehouse Unification:</strong> Seamlessly integrates streaming and lakehouse storage for unified data processing.</li>
+</ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Towards A Unified Streaming &amp; Lakehouse Architecture" href="/blog/unified-streaming-lakehouse/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/fluss-intro/">Introducing Fluss: Streaming Storage for Real-Time Analytics</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-12-12T00:0 [...]
+Today, we are excited to introduce Fluss, a cutting-edge streaming storage system designed to power real-time analytics.
+We are going to explore Fluss&#x27;s architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Introducing Fluss: Streaming Storage for Real-Time Analytics" href="/blog/fluss-intro/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/why-fluss/"> [...]
+This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
+where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
+value by leveraging real-time insights to drive business impact and enhance decision-making.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics" href="/blog/why-fluss/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/fluss-open-source/">Fluss is Now Open Source</a></h2><div class="container_ [...]
+Fluss is a <strong>streaming storage system</strong> designed to power real-time analytics. It aspires to change how organizations approach real-time data by acting as the <strong>real-time data layer</strong> for the Lakehouse.
+Its cutting-edge design enables businesses to achieve <strong>sub-second latency</strong>, <strong>high throughput</strong>, and <strong>cost efficiency</strong> for data analytics, making it the ideal solution for modern data-driven applications.</p>
+<p>We have historically invested a lot of effort into advancing the data streaming ecosystem, being major contributors to <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer">Apache Flink®</a>, <a href="https://www.ververica.com/blog/ververica-donates-flink-cdc-empowering-real-time-data-integration-for-the-community" target="_blank" rel="noopener noreferrer">Apache Flink CDC</a>, and <a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">A [...]
+As part of our commitment, Fluss is now open source under the Apache 2.0 license and is available on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>, inviting users to create the next generation of real-time architectures.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png" width="3840" height="1286" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Fluss is Now Open Source" href="/blog/fluss-open-source/"><b>Read more</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class= [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/partial-updates/index.html b/blog/partial-updates/index.html
new file mode 100644
index 0000000..7b58bf5
--- /dev/null
+++ b/blog/partial-updates/index.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Understanding Partial Updates | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://f [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Traditional streaming data pipelines often need to join many tables or streams on a primary key to create a wide view.
+For example, imagine you’re building a real-time recommendation engine for an e-commerce platform.
+To serve highly personalized recommendations, your system needs a complete 360° view of each user, including:
+<em>user preferences</em>, <em>past purchases</em>, <em>clickstream behavior</em>, <em>cart activity</em>, <em>product reviews</em>, <em>support tickets</em>, <em>ad impressions</em>, and <em>loyalty status</em>.</p>
+<p>That’s at least <strong>8 different data sources</strong>, each producing updates independently.</p>
+<p>Joining multiple data streams at scale, although it works with Apache Flink it can be really challenging and resource-intensive.
+More specifically, it can lead to:</p>
+<ul>
+<li><strong>Really large state sizes in Flink:</strong> as it needs to buffer all incoming events until they can be joined. In many case states need to be kept around for a long period of time if not indefinitely.</li>
+<li><strong>Deal with checkpoints overhead and backpressure:</strong> as the join operation and large state uploading can create a bottleneck in the pipeline.</li>
+<li><strong>States are not easy to inspect and debug:</strong> as they are often large and complex. This can make it difficult to understand what is happening in the pipeline and why certain events are not being processed correctly.</li>
+<li><strong>State TTL can lead to inconsistent results:</strong> as events may be dropped before they can be joined. This can lead to data loss and incorrect results in the final output.</li>
+</ul>
+<p>Overall, this approach not only consumes a lot of memory and CPU, but also complicates the job design and maintenance.</p>
+<p><img decoding="async" loading="lazy" alt="Streaming Joins" src="/assets/images/streaming_join-761699227c5633f3575e2036b9e2ac61.png" width="1375" height="550" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partial-updates-a-different-approach-with-fluss">Partial Updates: A Different Approach with Fluss<a href="#partial-updates-a-different-approach-with-fluss" class="hash-link" aria-label="Direct link to Partial Updates: A Different Approach with Fluss" title="Direct link to Partial Updates: A Different Approach with Fluss">​</a></h3>
+<p>Fluss introduces a more elegant solution: <strong>partial updates</strong> on a primary key table.</p>
+<p>Instead of performing multi-way joins in the streaming job, Fluss allows each data stream source to independently update only its relevant columns into a shared wide table identified by the primary key.
+In Fluss, you can define a wide table (for example, a user_profile table based on a <code>user_id</code>) that contains all possible fields from all sources.
+Each source stream then writes partial rows – only the fields it knows about – into this table.</p>
+<p><img decoding="async" loading="lazy" alt="Partial Update" src="/assets/images/partial_update-d529bf24211a76b31444bc7918872d59.png" width="1488" height="669" class="img_ev3q"></p>
+<p>Fluss’s storage engine automatically merges these partial updates together based on the primary key.
+Essentially, Fluss maintains the latest combined value for each key, so you don’t have to manage large join states in Flink.</p>
+<p>Under the hood, when a new partial update for a key arrives, Fluss will look up the existing record for that primary key, update the specific columns provided, and leave other columns unchanged.
+The result is written back as the new version of the record.
+This happens in <em>real-time</em>, so the table is <strong>always up-to-date</strong> with the latest information from all streams.</p>
+<p>Next, let&#x27;s try and better understand how this works in practice with a concrete example.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="example-building-a-unified-wide-table">Example: Building a Unified Wide Table<a href="#example-building-a-unified-wide-table" class="hash-link" aria-label="Direct link to Example: Building a Unified Wide Table" title="Direct link to Example: Building a Unified Wide Table">​</a></h3>
+<blockquote>
+<p>You can find the full source code on github <a href="https://github.com/ververica/ververica-fluss-examples/tree/main/partial_updates" target="_blank" rel="noopener noreferrer">here</a>.</p>
+</blockquote>
+<p>Start by cloning the repository, run <code>docker compose up</code> to spin up the development enviroment and finally grab a terminal
+into the <code>jobmanager</code> and start the Flink SQL cli, by running the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/sql-client.sh</span><br></span></code></pre></div></div>
+<p>Great so far ! 👍</p>
+<p><strong>Step 1:</strong> The first thing we need to do is to create a Flink catalog that will be used to store the tables we are going to create.
+Let&#x27;s create a catalog called <code>fluss_catalog</code> and use this catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> CATALOG fluss_catal [...]
+<p><strong>Step 2:</strong> Then let&#x27;s create <code>3 tables</code> to represent the different data sources that will be used to build the recommendations wide table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Recommendations – model scores</span><span class="token  [...]
+<p><strong>Step 3:</strong> Of course, we will need some sample data to work with , so let&#x27;s go on and insert some records into the tables. 💻</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Recommendations – model scores</span><span class="token  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Impressions – how often each (user,item) was shown</span [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Clicks – user engagement</span><span class="token plain" [...]
+<blockquote>
+<p><strong>Note:</strong> 🚨 So far the jobs we run were bounded jobs, so they will finish after inserting the records. Moving forward we will run some streaming jobs.
+So keep in mind that each job runs with a <code>parallelism of 3</code> and our environment is set up <code>with 10 slots total</code>.
+So make sure to keep an eye to the Flink Web UI to see how many slots are used and how many are available and stop some jobs when are no longer needed to free up resourecs.</p>
+</blockquote>
+<p><strong>Step 4:</strong> At this point let&#x27;s open up a separate terminal and start the Flink SQL CLI.
+In this new terminal, make sure to run set the <code>result-mode</code>:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">SET </span><span class="token string" style="color:rgb(206, 145, 120)">&#x27;sql-client.e [...]
+<p>and then run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>to observe the output of the table, as we insert <code>partially</code> records into the it from the different sources.</p>
+<p><strong>Step 5:</strong> Let&#x27;s insert the records from the <code>recommendations</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply recommendation scores</span><span class="token pla [...]
+<p><strong>Output:</strong> Notice, how only the related columns are updated in the <code>user_rec_wide</code> table and the rest of the columns are <code>NULL</code>.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Step 5:</strong> Next, let&#x27;s insert the records from the <code>impressions</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply impression counts</span><span class="token plain"> [...]
+<p><strong>Output:</strong> Notice how the <code>impressions</code> records are inserted into the <code>user_rec_wide</code> table and the <code>imp_cnt</code> column is updated.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Step 6:</strong> Finally, let&#x27;s insert the records from the <code>clicks</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply click counts</span><span class="token plain"></spa [...]
+<p><strong>Output:</strong> Notice how the <code>clicks</code> records are inserted into the <code>user_rec_wide</code> table and the <code>click_cnt</code> column is updated.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Reminder:</strong> ‼️As mentioned before make sure to stop the jobs that are no longer needed to free up resources.</p>
+<p>Now let&#x27;s switch to <code>batch</code> mode and query the current snapshot of the <code>user_rec_wide</code> table.</p>
+<p>But before that, let&#x27;s start the <a href="https://alibaba.github.io/fluss-docs/docs/maintenance/tiered-storage/lakehouse-storage/#start-the-datalake-tiering-service" target="_blank" rel="noopener noreferrer">Tiering Service</a> that allows offloading the tables as <code>Lakehouse</code> tables.</p>
+<p><strong>Step 7:</strong> Open a new terminal 💻 in the <code>Coordinator Server</code> and run the following command to start the <code>Tiering Service</code>:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/lakehouse.sh </span><span class="token parameter variable" style="color:rgb(156, 22 [...]
+<p>The configured checkpoint is <code>flink.execution.checkpointing.interval=30s</code> so wait a bit until the first checkpoint is created
+and data gets offloading to the <code>Lakehouse</code> tables.</p>
+<p><strong>Step 8:</strong> Finally let&#x27;s switch to <code>batch</code> mode and query the current snapshot of the <code>user_rec_wide</code> table.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">SET </span><span class="token string" style="color:rgb(206, 145, 120)">&#x27;execution.ru [...]
+<p>🎉 That&#x27;s it! You have successfully created a unified wide table using partial updates in Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h3>
+<p>Partial updates in Fluss enable an alternative approach in how we design streaming data pipelines for enriching or joining data.</p>
+<p>When all your sources share a primary key - otherwise you can mix &amp; match <a href="https://alibaba.github.io/fluss-docs/docs/engine-flink/lookups/#lookup" target="_blank" rel="noopener noreferrer">streaming lookup joins</a> - you can turn the problem on its head: update a unified table incrementally, rather than joining streams on the fly.</p>
+<p>The result is a more scalable, maintainable, and efficient pipeline.
+Engineers can spend less time wrestling with Flink’s state, checkpoints and join mechanics, and more time delivering fresh, integrated data to power real-time analytics and applications.
+With Fluss handling the merge logic, achieving a single, up-to-date view from multiple disparate streams becomes way more elegant. 😁</p>
+<p>And before you go 😊 don’t forget to give Fluss 🌊 some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/releases/0.7/"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Announcing Fluss 0.7</div></a><a class="paginatio [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/releases/0.6/index.html b/blog/releases/0.6/index.html
new file mode 100644
index 0000000..d350c15
--- /dev/null
+++ b/blog/releases/0.6/index.html
@@ -0,0 +1,150 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Announcing Fluss 0.6 | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apac [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+three months of intensive development, bringing together the expertise and efforts of 45 contributors worldwide,
+with more than 200 code commits completed. Our heartfelt thanks go out to every contributor for their invaluable support!</p>
+<p><img decoding="async" loading="lazy" alt="Release Announcement" src="/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png" width="1224" height="440" class="img_ev3q"></p>
+<p>This release introduces several exciting features:</p>
+<ul>
+<li><strong>Column Compression</strong>: Reduces storage space by up to <strong>6x</strong> while preserving column pruning performance!</li>
+<li><strong>Merge Engine</strong>: Introduces flexible merge strategies for primary key data, addressing diverse real-time processing needs.</li>
+<li><strong>Prefix Lookup</strong>: Delta Join functionality is now ready on the Fluss side!</li>
+</ul>
+<p>These new features not only significantly enhance the functionality of Fluss but also represent a solid step
+forward in our journey toward building the next-generation analytical stream storage solution.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="column-compression">Column Compression<a href="#column-compression" class="hash-link" aria-label="Direct link to Column Compression" title="Direct link to Column Compression">​</a></h2>
+<p>Fluss uses the <a href="https://arrow.apache.org/" target="_blank" rel="noopener noreferrer">Apache Arrow</a> columnar format for it&#x27;s underlying log file storage, fully leveraging Arrow&#x27;s streaming
+columnar capabilities to achieve highly efficient streaming reads and column pruning. Column pruning in Fluss is performed on the server side,
+with end-to-end zero-copy optimization that allows the required column data to be sent directly to the network without
+loading it into memory from disk. This design not only significantly improves performance but also drastically reduces
+network I/O costs and resource overhead. In previous <a href="/blog/fluss-intro/#columnar-stream">benchmark tests</a>,
+when 90% of the columns were pruned, Fluss achieved a 10x increase in read throughput, demonstrating its exceptional
+performance in streaming data processing and transmission.</p>
+<p>While column pruning effectively reduces network I/O costs, disk storage costs remain high. To address this,
+we have introduced <strong>column compression</strong> in this version, supporting two highly efficient compression algorithms: <strong>ZSTD</strong> and <strong>LZ4</strong>.
+These algorithms significantly reduce data storage requirements, thereby lowering storage costs substantially.
+Since both compression and decompression are performed on the client side, the amount of data transmitted over the network is reduced,
+further decreasing network I/O costs. Notably, compression is applied independently to each column, ensuring that the original column pruning performance is preserved and that streaming read efficiency remains unaffected.</p>
+<p>To validate the actual effectiveness of this feature, we conducted benchmark tests using a typical business scenario from Alibaba Taobao.
+In the tests, we used datasets of the same scale and Flink jobs with identical resources, writing to Fluss with and without ZSTD compression,
+and compared the write throughput. Subsequently, we read data from the table and tested the read throughput.
+The results showed that column compression not only reduced storage space by approximately 6x but also improved read and write throughput.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="/assets/images/compression1-0b666a1467321b28376db725380eda3c.jpg" width="962" height="572" class="img_ev3q"></p>
+<p>However, enabling compression had no noticeable impact on Flink&#x27;s read/write CPU and memory usage.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="/assets/images/compression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg" width="1180" height="542" class="img_ev3q"></p>
+<p>The performance of column pruning on compressed data was also tested. The results show that as the number of pruned columns increases,
+a multiple-fold performance improvement is still achieved, maintaining the original column pruning efficiency.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="/assets/images/compression3-1f5de9eec6dd66394a793f26395a8f49.jpg" width="1196" height="624" class="img_ev3q"></p>
+<p>Given the significant cost savings and performance improvements achieved by column compression in general use cases,
+ZSTD compression is enabled by default for log tables in Fluss 0.6. Users can disable compression by
+setting the parameter <code>&#x27;table.log.arrow.compression.type&#x27;=&#x27;NONE&#x27;</code> on the table.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="merge-engine">Merge Engine<a href="#merge-engine" class="hash-link" aria-label="Direct link to Merge Engine" title="Direct link to Merge Engine">​</a></h2>
+<p>In this version, Fluss introduces a new Merge Engine feature for primary key tables to flexibly support merging strategies for data with the same primary key.
+The default Merge Engine strategy for primary key tables is to retain the latest record for each primary key.
+Users can also choose alternative Merge Engines, including the currently supported <strong>FirstRow Merge Engine</strong> and <strong>Versioned Merge Engine</strong>.
+Support for the <strong>Aggregate Merge Engine</strong> is planned for future releases.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="firstrow-merge-engine">FirstRow Merge Engine<a href="#firstrow-merge-engine" class="hash-link" aria-label="Direct link to FirstRow Merge Engine" title="Direct link to FirstRow Merge Engine">​</a></h3>
+<p>By setting the table property <code>&#x27;table.merge-engine&#x27; = &#x27;first_row&#x27;</code>, users can retain the first record for each primary key.
+When this configuration is enabled, the primary key table will generate an append-only changelog. This allows downstream
+Flink jobs subscribing to the table to receive an append-only stream, enabling the use of operators that do not support retraction messages,
+such as Window Aggregations and Interval Joins. This feature is commonly used as a replacement for log deduplication in streaming processing,
+effectively reducing costs and system complexity.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- create first_row primary key table</span><span class="to [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="versioned-merge-engine">Versioned Merge Engine<a href="#versioned-merge-engine" class="hash-link" aria-label="Direct link to Versioned Merge Engine" title="Direct link to Versioned Merge Engine">​</a></h3>
+<p>The Versioned Merge Engine supports data updates based on version numbers (or event timestamps). It ensures that only the record
+with the highest version number (or event timestamp) for each primary key is retained. This mechanism is particularly useful for
+deduplicating or merging out-of-order data while guaranteeing eventual consistency with the upstream data source.
+In Flink streaming processing, this feature can be used as a replacement for <code>Rank</code> or <code>Deduplication</code> operations, simplifying workflows and reducing costs effectively.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- create a versioned primary key table, `ts` as the versio [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prefix-lookup-for-delta-join">Prefix Lookup for Delta Join<a href="#prefix-lookup-for-delta-join" class="hash-link" aria-label="Direct link to Prefix Lookup for Delta Join" title="Direct link to Prefix Lookup for Delta Join">​</a></h2>
+<p>In the scenario of building wide tables with Flink, optimizing Stream-Stream Join using Delta Join is one of the primary use cases for Fluss.
+We have also contributed this functionality to version 0.6. Delta Join can be simply understood as a &quot;bilateral driven lookup join&quot;, that is:
+when data arrives from the left stream, the right table is queried using the join key; when data arrives from the right stream, the left table is queried using the join key.
+This approach eliminates join state like Lookup Join, while preserving the semantics of a Stream-Stream Join (any updates on either side triggers an update to the join result).
+Delta Join addresses challenges such as high cost, unstable job, checkpoint timeout, slow restart recovery, etc., in the traditional Stream-Stream Join.</p>
+<p><img decoding="async" loading="lazy" alt="Delta Join" src="/assets/images/delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg" width="2024" height="884" class="img_ev3q"></p>
+<p>Overall, Delta Join relies on three core functionalities:</p>
+<ul>
+<li><strong>CDC Stream Read for Source Table</strong>: The foundational capability of Fluss.</li>
+<li><strong>Lookup on Join Keys for Source Table</strong>: Introduced in Fluss 0.6 with Prefix Lookup support.</li>
+<li><strong>Delta Join Operator in Flink SQL</strong>: Proposed in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-486%3A+Introduce+A+New+DeltaJoin" target="_blank" rel="noopener noreferrer">FLIP-486</a>, planned for Flink 2.1.</li>
+</ul>
+<p>Once FLIP-486 is completed, users will be able to achieve Delta Join using the following SQL in conjunction with Fluss&#x27;s Prefix Lookup functionality:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<p>Flink performs lookups on Fluss tables using the Join Key, which serves as the Bucket Key for the Fluss table.
+This allows it to leverage the prefix index of the primary key in the Fluss table, enabling highly efficient lookup queries.
+This feature in Fluss is referred to as Prefix Lookup. Currently, Prefix Lookup can also be used to perform one-to-many lookup queries.
+For more details, please refer to the <a href="/docs/engine-flink/lookups/#prefix-lookup">Prefix Lookup</a> documentation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stability--performance-improvements">Stability &amp; Performance Improvements<a href="#stability--performance-improvements" class="hash-link" aria-label="Direct link to Stability &amp; Performance Improvements" title="Direct link to Stability &amp; Performance Improvements">​</a></h2>
+<p>In this version, we have focused on enhancing the stability and performance of the system, resolving over 50 issues and improvements,
+and conducting in-depth optimizations on core modules. For example:</p>
+<ul>
+<li>Server-side Optimization : By introducing a delayed response mechanism, CPU consumption in low-traffic scenarios has been significantly reduced, thereby improving resource utilization efficiency.</li>
+<li>Client-side Optimization : A unified memory management mechanism has been implemented to effectively prevent Out-of-Memory (OOM) issues in high-traffic scenarios while reducing the impact of garbage collection (GC) on system performance.</li>
+</ul>
+<p>These improvements have significantly enhanced Fluss&#x27;s reliability and performance in high-concurrency, large-data-volume scenarios, enabling it to handle analytical stream storage workload more efficiently.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lakehouse-storage">Lakehouse Storage<a href="#lakehouse-storage" class="hash-link" aria-label="Direct link to Lakehouse Storage" title="Direct link to Lakehouse Storage">​</a></h2>
+<p>In previous versions, if a table in Fluss needed to enable the Lakehouse storage capability, it had to be enabled when table is created.
+Otherwise, enabling this feature later would require deleting and recreating the table. This limitation arose because enabling Lakehouse storage changes the key encoding format and bucket sharding strategy, making existing tables incompatible with the new configuration.</p>
+<p>In this version, we resolve this by detecting the cluster&#x27;s default data lake format and adopting its key encoding and bucketing strategy,
+allowing Lakehouse storage to be enabled dynamically after table creation. This eliminates the need for table recreation, improving usability.
+Additionally, Paimon dependency is upgraded to version 1.0.1 in this release.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="flink-integration">Flink Integration<a href="#flink-integration" class="hash-link" aria-label="Direct link to Flink Integration" title="Direct link to Flink Integration">​</a></h2>
+<p>This version introduces the following enhancements to the Flink connector:</p>
+<ol>
+<li><strong>Sink Support for Ignoring Retractions:</strong>
+Both Primary Key Tables and Log Tables now support the <code>&#x27;sink.ignore-delete&#x27;</code> parameter in their Sink implementations. This enables better compatibility with scenarios involving retraction messages, meeting the demands of more complex streaming data processing.</li>
+<li><strong>Enhanced Partition Table Operations:</strong>
+Partitioned tables now support <code>ALTER TABLE ADD/DROP PARTITION</code> and <code>SHOW PARTITIONS</code> operations, further improving the flexibility and usability of partition management.</li>
+<li><strong>Sink Interface Upgrade:</strong>
+The <code>SinkFunction</code> has been upgraded to the <code>SinkV2</code> interface, laying the groundwork for full compatibility with Flink 2.0 in the next version. This ensures the system&#x27;s scalability and compatibility in future releases.</li>
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-notes">Upgrade Notes<a href="#upgrade-notes" class="hash-link" aria-label="Direct link to Upgrade Notes" title="Direct link to Upgrade Notes">​</a></h2>
+<p>The Fluss community try to ensure compatibility during upgrades. However, upgrading from Fluss 0.5 to 0.6 is an incompatible upgrade.
+Starting with version 0.6, we will officially provide backward compatibility to ensure smoother and more reliable upgrades in future releases.
+Therefore, version 0.6 is the recommended version for adoption and ecosystem integration.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plan">Future Plan<a href="#future-plan" class="hash-link" aria-label="Direct link to Future Plan" title="Direct link to Future Plan">​</a></h2>
+<p>In the next version, we will focus on the development of the following core features:</p>
+<ol>
+<li>
+<p><strong>New Lake-Stream Integrated Architecture:</strong>
+A completely new architecture designed for large-scale production environments, featuring plug-in support for mainstream lake formats such as Iceberg and Hudi. This addresses key pain points in Tiering Service performance, scalability, and operational efficiency, providing a more reliable Lakehouse integrated solution for enterprise use cases.</p>
+</li>
+<li>
+<p><strong>Authentication and Authorization:</strong>
+Introducing plugin-based authentication and fine-grained access control to meet the stringent data security requirements of enterprises.</p>
+</li>
+<li>
+<p><strong>Kafka Compatibility:</strong>
+Compatibility with the Kafka network protocol, enabling seamless integration with the Kafka ecosystem.</p>
+</li>
+</ol>
+<p>For more details about the next release roadmap, please visit the community <a href="https://github.com/alibaba/fluss/discussions/556" target="_blank" rel="noopener noreferrer">discussion page</a>. Your suggestions and contributions are highly welcomed!</p>
+<p>Fluss is under active development. Be sure to stay updated on the project, give it a try and if you like it, don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="list-of-contributors">List of Contributors<a href="#list-of-contributors" class="hash-link" aria-label="Direct link to List of Contributors" title="Direct link to List of Contributors">​</a></h2>
+<p>The Fluss community would like to express gratitude to all the 45 contributors who made this release possible:</p>
+<p>Benchao Li, ForwardXu, Gang Yang, Georgios Andrianakis, Giannis Polyzos, Hongshun Wang, Jark Wu, Kerwin, Leonard Xu, LiJingwei, Liu Xiao, MehulBatra, Michael Koepf, Nicholas Jiang, Ron, RunningDB, Sagar Sumit, SeungMin, Shuo Cheng, Stan, SteNicholas, Tyrantlucifer, Vipamp, WangS-C, WenjunMin, Wenston Xin, Xiaojian Sun, Yang Guo, Yubin Li, Yuepeng Pan, Zmm, benjobs, gongzhongqiang, gyang94, jon-qj, luoyuxia, moses, psxjoy, wangwj, wudi, xiaozhou, yunhong, yuxia Luo, 码界探索, 道君</p></div>< [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/releases/0.7/index.html b/blog/releases/0.7/index.html
new file mode 100644
index 0000000..6ee023a
--- /dev/null
+++ b/blog/releases/0.7/index.html
@@ -0,0 +1,143 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Announcing Fluss 0.7 | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apac [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>🌊 We are excited to announce the official release of <strong>Fluss 0.7</strong>!</p>
+<p>This version has undergone extensive improvements in <strong>stability</strong>, <strong>architecture</strong>, <strong>performance optimization</strong>, and <strong>security</strong>, further enhancing its readiness for <strong>production environments</strong>. Over the past three months, we have completed more than <strong>250 commits</strong>, making this release a significant milestone toward becoming a mature, production-grade streaming storage platform.</p>
+<p><img decoding="async" loading="lazy" alt="Improvements Diagram" src="/assets/images/overview-255047ec7648f12c63660b40d1147c86.png" width="1248" height="778" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stability-enhancements">Stability Enhancements<a href="#stability-enhancements" class="hash-link" aria-label="Direct link to Stability Enhancements" title="Direct link to Stability Enhancements">​</a></h2>
+<p>In this release, we have dedicated significant effort to enhancing system stability. By building a comprehensive stability testing framework covering end-to-end processes and multi-scenario fault simulations, combined with large-scale stress testing using real business data, and through rigorous production-level stability validation in Alibaba, we have addressed and resolved over 50 issues. This has significantly improved the stability of Fluss&#x27; core modules and the overall robus [...]
+<ul>
+<li><strong>Online/Offline Node Optimization:</strong> Refactored the ISR (In-Sync Replica) update mechanism and replica synchronization logic and enhanced idempotency guarantees. This significantly improves system stability and reduces the risk of data loss during node failures.</li>
+<li><strong>Server Metadata Caching:</strong> Introduced a consistent metadata caching layer on the server side. Clients now fetch metadata from the local server cache instead of ZooKeeper, significantly reducing request latency and pressure on ZooKeeper.</li>
+<li><strong>Server Rack-Aware Support:</strong> During replica assignment, the system automatically avoids placing multiple replicas within the same &quot;rack&quot;, thereby significantly improving fault tolerance and high availability. This feature is especially beneficial in multi-AZ deployments and large-scale data center disaster recovery scenarios. You can configure the &quot;rack&quot; of the TabletServer via setting <code>tablet-server.rack</code> in <code>server.yaml</code>.</li>
+<li><strong>Accelerated Table Creation:</strong> Leveraged batched metadata updates to reduce table initialization time. For example, the time for a table creation with 1024 buckets was reduced from minutes to milliseconds.</li>
+<li><strong>Optimized Read/Write Pipelines:</strong>
+<ul>
+<li>Introduce bucket-id-based shuffle for primary key tables to improve write throughput.</li>
+<li>Dynamically estimate the batch size based on incoming traffic to optimize memory usage and throughput.</li>
+<li>Optimize the Arrow memory release logic to enhance job stability.</li>
+</ul>
+</li>
+</ul>
+<p>These enhancements make Fluss 0.7 ready for most production use cases.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="new-architecture-of-the-streaming-lakehouse">New Architecture of the Streaming Lakehouse<a href="#new-architecture-of-the-streaming-lakehouse" class="hash-link" aria-label="Direct link to New Architecture of the Streaming Lakehouse" title="Direct link to New Architecture of the Streaming Lakehouse">​</a></h2>
+<p>In Fluss 0.5, we first introduced the Streaming Lakehouse feature, with the powerful Union Read ability, we can significantly reduce the cost of streaming storage and improve the data freshness of Lakehouse.</p>
+<blockquote>
+<p>Note: Union Reads allows querying and combining the results from both Lakehouse (historical) and Fluss (real-time) data.</p>
+</blockquote>
+<p>However, the initial implementation had architectural limitations affecting scalability and operability in production. In Fluss 0.7, we’ve completely re-architected the Streaming Lakehouse feature to address these challenges.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="elastic-stateless-service">Elastic Stateless Service<a href="#elastic-stateless-service" class="hash-link" aria-label="Direct link to Elastic Stateless Service" title="Direct link to Elastic Stateless Service">​</a></h3>
+<p>Previously, the lake tiering service was implemented as a Flink job encapsulating Fluss as a Source and Paimon as a Sink, storing sync offsets state in Flink’s State, this making it a stateful service.
+This led to several operational issues:</p>
+<ul>
+<li><strong>Single Point of Failure:</strong> The lifecycle of each table is bound to a specific Flink job. Once a job fails, the synchronization of all tables hosted by the job will be blocked.</li>
+<li><strong>Limited Scalability:</strong> Could only scale vertically (increase job resources), not horizontally (start multiple jobs).</li>
+<li><strong>Inflexible Scheduling:</strong> Unable to prioritize tables and dynamically assign to dedicated Flink clusters.</li>
+<li><strong>Opaque State:</strong> Flink State being a black box made monitoring and troubleshooting the offset difficult.</li>
+</ul>
+<p>To address these challenges, we&#x27;ve re-architected the lake tiering service into a truly elastic and stateless component.
+The sync offset is now persisted directly within Fluss metadata, with future plans for integration into Paimon v1.2 snapshot properties.
+Furthermore, Flink jobs have transitioned from maintaining persistent table subscriptions to a more efficient model where they process one table at a time,
+dynamically requesting the next table upon completion of the current one.</p>
+<p><img decoding="async" loading="lazy" alt="New Architecture Diagram" src="/assets/images/new_tiering_service-4509c1a4b51c6821c0fe622cdda534e4.png" width="1980" height="1805" class="img_ev3q"></p>
+<p>This optimization significantly reduces the load on Fluss and boosts batch processing efficiency. As a result, cluster operators gain:</p>
+<ul>
+<li><strong>Enhanced Service Robustness:</strong> Operators can launch multiple Flink jobs to distribute workload and increase overall system resilience.</li>
+<li><strong>Flexible Resource Management:</strong> The ability to stop idle jobs at any time allows for immediate reclamation of valuable cluster resources.</li>
+<li><strong>Dynamic Task Orchestration:</strong> Sync tasks can now be dynamically scheduled across all active Flink jobs, optimizing resource utilization.</li>
+<li><strong>Actionable Offset Visibility:</strong> The offset state is now queryable, providing greater insight and control over data processing.</li>
+</ul>
+<p>This design ensures end-to-end consistency across all operations.
+Furthermore, this stateless design also decouples us from the tight Flink dependency, paving the way for future lightweight execution models, such as running on FaaS (Function as a Service).</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="pluggable-lake-format">Pluggable Lake Format<a href="#pluggable-lake-format" class="hash-link" aria-label="Direct link to Pluggable Lake Format" title="Direct link to Pluggable Lake Format">​</a></h3>
+<p>The previous implementation had a tight coupling with Apache Paimon, which restricted our ability to integrate with other lake formats, such as Iceberg.
+With version 0.7, we have abstracted and modularized all lake format interfaces.
+This enhancement enables easy, plugin-style support for Iceberg and other emerging formats.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="native-flink-command-submission">Native Flink Command Submission<a href="#native-flink-command-submission" class="hash-link" aria-label="Direct link to Native Flink Command Submission" title="Direct link to Native Flink Command Submission">​</a></h3>
+<p>Previously, users were limited to the <code>lakehouse.sh</code> script for initiating the lake tiering service, which submitted jobs to the Flink cluster.
+While convenient, this approach restricted deployment flexibility, particularly when encountering diverse Flink deployment modes and internal product platforms.
+Fluss 0.7 now addresses this by supporting <strong>native job submission via standard Flink commands</strong> (<code>flink run</code>).
+This enhancement ensures broad compatibility with various deployment modes while significantly lowering learning and integration costs.
+The following is an example of how to submit the lake tiering service using the native Flink command:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">flink run /path/to/fluss-flink-tiering-0.7.0.jar </span><span class="token punctuation" sty [...]
+<p>See more details in the <a href="/docs/maintenance/tiered-storage/lakehouse-storage/">Streaming Lakehouse documentation</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-partition-pruning">Streaming Partition Pruning<a href="#streaming-partition-pruning" class="hash-link" aria-label="Direct link to Streaming Partition Pruning" title="Direct link to Streaming Partition Pruning">​</a></h2>
+<p>Partitioning is a foundational technique in modern data warehouses and Lakehouse architectures for optimizing query performance by
+logically dividing datasets along meaningful dimensions (e.g., time, region, business line).</p>
+<p>Fluss 0.7 introduces <strong>streaming partition pruning</strong>, enabling selective reading of relevant partitions based on query conditions.
+For example, if a query filters on <code>nation_key = &#x27;US&#x27;</code>, the Fluss Source will only read matching partitions,
+significantly reducing network I/O and compute overhead.
+Apart from that, we also support the following advanced partition features to make partition pruning adaptable and easy to use:</p>
+<ul>
+<li><strong>Multi-level Partitioning:</strong> Supports nested partition strategies (e.g., <code>dt=20250617/region=US/business=sale</code>).</li>
+<li><strong>Dynamic Partition Creation:</strong> Automatically creates required partitions based on incoming data, no manual pre-creation is required.</li>
+<li><strong>Automatic Partition Discovery:</strong> Fluss source adds matched new partitions to the subscription in real-time.</li>
+</ul>
+<p>Using real business data from <strong>Taobao - the largest online shopping platform in China,</strong> we tested the read and write performance between non-partitioned and partitioned tables (with 20 auto-created partitions). The write results show that the multi-level partition and dynamic partition creation mechanism do not have a significant impact on the write performance.
+<img decoding="async" loading="lazy" alt="Write Perf" src="/assets/images/write_perf-25c062766e117f2c092a79653cf69a85.jpg" width="890" height="554" class="img_ev3q"></p>
+<p>At the same time, under the same data scale, we tested the streaming read performance of non-partitioned tables and partitioned tables under three partition conditions:
+<strong>unconditional</strong>, <strong>medium matching</strong> (hitting five partitions), and <strong>exact matching</strong> (hitting one partition).
+From the results, we can observe that when the partition condition only matches 1/20 of the partitions,
+<strong>the network traffic is reduced by about 20x</strong> and the <strong>processing time is reduced by nearly 9x</strong>,
+demonstrating the huge performance benefit of partition pruning in streaming reads.</p>
+<p><img decoding="async" loading="lazy" alt="Read Perf" src="/assets/images/read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg" width="836" height="852" class="img_ev3q"></p>
+<p>Streaming partition pruning is the second pushdown feature introduced after streaming column pruning in Fluss.
+Looking ahead, we plan to introduce <strong>predicate pushdown with Arrow batch-level I/O pruning</strong> to further enhance query efficiency.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="enterprise-grade-security">Enterprise-Grade Security<a href="#enterprise-grade-security" class="hash-link" aria-label="Direct link to Enterprise-Grade Security" title="Direct link to Enterprise-Grade Security">​</a></h2>
+<p>To meet enterprise-grade security requirements, Fluss 0.7 fully supports Authentication and Authorization mechanisms.</p>
+<p><strong>Authentication</strong> is the process of confirming the identity of the client.
+Fluss introduced a plugin-based authentication with built-in <strong>SASL/PLAIN</strong> support, compatible with <strong>JAAS</strong> (Java Authentication and Authorization Service) configuration for both client and server credentials.</p>
+<p><strong>Authorization</strong> controls which resources the identity can access and which operations it can perform after identity confirmation.
+Fluss implements fine-grained permission control through the <strong>ACL</strong> (Access Control List) mechanism, supporting multi-level access control at the Cluster, Database, and Table levels.</p>
+<p>Additionally, we&#x27;ve integrated Flink SQL&#x27;s <code>CALL</code> statements to ease ACL permission management for users.
+For instance, granting read access to the <code>mydb</code> database for user <code>Tim</code> can now be accomplished with the following command:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CALL</span><span class="token plain"> admin_catalog</span>< [...]
+<p>For details, please refer to the <a href="/docs/security/overview/">Security documentation</a> and quickstarts.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="flink-datastream-connector">Flink DataStream Connector<a href="#flink-datastream-connector" class="hash-link" aria-label="Direct link to Flink DataStream Connector" title="Direct link to Flink DataStream Connector">​</a></h2>
+<p>Fluss 0.7 officially introduces the DataStream Connector, supporting both Source and Sink for reading and writing log and primary key tables. Users can now seamlessly integrate Fluss tables into Flink DataStream pipelines.</p>
+<p>Here’s an example of reading data from a Fluss table into a Flink DataStream:</p>
+<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token class-name" style="color:rgb(78, 201, 176)">FlussSource</span><span class="token generics punctuat [...]
+<p>For usage examples and configuration parameters, see the <a href="https://alibaba.github.io/fluss-docs/docs/engine-flink/datastream/" target="_blank" rel="noopener noreferrer">DataStream Connector documentation</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-java-client">Fluss Java Client<a href="#fluss-java-client" class="hash-link" aria-label="Direct link to Fluss Java Client" title="Direct link to Fluss Java Client">​</a></h2>
+<p>In this version, we officially release the Fluss Java Client, a client library designed for developers working with structured stream tables. The client includes two core API modules:</p>
+<ul>
+<li><strong>Table API:</strong> For table-based data operations, supporting streaming reads/writes, updates, deletions, and point queries.</li>
+<li><strong>Admin API:</strong> For metadata management, including cluster management, table lifecycle, and access control.</li>
+</ul>
+<p>The client supports forward and backward compatibility, ensuring smooth upgrades across Fluss versions. With the Fluss Java Client, developers can build online applications and data ingestion services based on Fluss, as well as enterprise-level components such as Fluss management platforms and operations monitoring systems. For detailed usage instructions, please refer to the official documentation: <a href="https://alibaba.github.io/fluss-docs/docs/apis/java-client/" target="_blank"  [...]
+<p>Fluss uses Apache Arrow as its underlying storage format, enabling efficient cross-language extensions. A <strong>Fluss Python Client</strong> is planned for future releases, leveraging the rich ecosystem of <strong>PyArrow</strong> to integrate with popular data analysis tools such as <strong>Pandas</strong> and <strong>DuckDB</strong>.
+This will further lower the barrier for real-time data exploration and analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-roadmap">Future Roadmap<a href="#future-roadmap" class="hash-link" aria-label="Direct link to Future Roadmap" title="Direct link to Future Roadmap">​</a></h2>
+<p>In the next releases, we will continue to enhance system robustness and operational capabilities and plan to introduce <strong>Rolling Upgrades</strong> and <strong>Cluster Rebalance</strong>.
+In addition, with the new pluggable datalake format of the Streaming Lakehouse, we will further expand support for the mainstream datalake table formats, such as an <strong>Apache Iceberg</strong> integration.
+Meanwhile, we will explore the possibility of using Fluss in <strong>multimodal AI</strong> use cases, supporting ingestion of multimodal data,
+and integrating with <strong><a href="https://github.com/lancedb/lance" target="_blank" rel="noopener noreferrer">Lance</a></strong> format in the Streaming Lakehouse architecture.</p>
+<p>Fluss is under active development. Be sure to stay updated on the project, give it a try and if you like it,
+don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="list-of-contributors">List of contributors<a href="#list-of-contributors" class="hash-link" aria-label="Direct link to List of contributors" title="Direct link to List of contributors">​</a></h2>
+<p>The Fluss community would like to express gratitude to all the contributors who made this release possible:</p>
+<p>Benchao Li,  CaoZhen,  Feng Wang,  Giannis Polyzos,  HZY,  Hongshun Wang,  Jark Wu,  Junbo wang,  Kerwin,  Leonard Xu,  MehulBatra,  Michael Koepf,  Min Zhao,  Nicholas Jiang,  Radek Grebski,  Rohan Dubey,  Xiaojian Sun,  Yang Guo,  dao-jun,  gkatzioura,  luoyuxia,  majialong,  xiaozhou,  yunhong,  yuxia Luo,  yx9o,  zhangmang,  道君</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_jXut [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/rss.css b/blog/rss.css
new file mode 100644
index 0000000..d2fc20b
--- /dev/null
+++ b/blog/rss.css
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+main {
+  flex: 1 0 auto;
+  width: 100%;
+  margin: 2rem auto;
+  max-width: 800px;
+  /* stylelint-disable-next-line font-family-name-quotes */
+  font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell;
+}
+
+.info {
+  display: block;
+  margin: 2rem 0;
+  padding: 1.6rem 2.4rem;
+  border: 1px solid dodgerblue;
+  border-left-width: 0.5rem;
+  border-radius: 0.4rem;
+  background-color: #edf5ff;
+}
+
+a {
+  color: #005aff;
+  text-decoration: none;
+}
+
+h1 {
+  text-wrap: balance;
+  font-size: 3.4rem;
+  font-weight: 800;
+  margin-bottom: 2rem;
+  display: flex;
+  align-items: center;
+}
+
+h1 .rss-icon {
+  height: 3.2rem;
+  width: 3.2rem;
+  margin-right: 1rem;
+}
+
+h2 {
+  font-size: 2.2rem;
+  font-weight: 700;
+  margin-bottom: 0.2rem;
+}
+
+h3 {
+  font-size: 1.8rem;
+  font-weight: 700;
+  margin-bottom: 0.1rem;
+}
+
+.blog-description {
+  font-size: 1.4rem;
+  margin-bottom: 0.6rem;
+}
+
+.blog-post-date {
+  font-size: 1rem;
+  line-height: 1.4rem;
+  font-style: italic;
+  color: #797b7e;
+}
+
+.blog-post-description {
+  font-size: 1rem;
+  line-height: 1.4rem;
+  color: #434349;
+}
diff --git a/blog/rss.xml b/blog/rss.xml
new file mode 100644
index 0000000..40f7b0f
--- /dev/null
+++ b/blog/rss.xml
@@ -0,0 +1,765 @@
+<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+    <channel>
+        <title>Fluss Blog</title>
+        <link>https://fluss.apache.org/blog/</link>
+        <description>Fluss Blog</description>
+        <lastBuildDate>Wed, 18 Jun 2025 00:00:00 GMT</lastBuildDate>
+        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+        <generator>https://github.com/jpmonette/feed</generator>
+        <language>en</language>
+        <item>
+            <title><![CDATA[Announcing Fluss 0.7]]></title>
+            <link>https://fluss.apache.org/blog/releases/0.7/</link>
+            <guid>https://fluss.apache.org/blog/releases/0.7/</guid>
+            <pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Banner" src="https://fluss.apache.org/assets/images/banner-8cc4ea9295caf8358e14adf7a69beb01.png" width="1322" height="632" class="img_ev3q"></p>
+<p>🌊 We are excited to announce the official release of <strong>Fluss 0.7</strong>!</p>
+<p>This version has undergone extensive improvements in <strong>stability</strong>, <strong>architecture</strong>, <strong>performance optimization</strong>, and <strong>security</strong>, further enhancing its readiness for <strong>production environments</strong>. Over the past three months, we have completed more than <strong>250 commits</strong>, making this release a significant milestone toward becoming a mature, production-grade streaming storage platform.</p>
+<p><img decoding="async" loading="lazy" alt="Improvements Diagram" src="https://fluss.apache.org/assets/images/overview-255047ec7648f12c63660b40d1147c86.png" width="1248" height="778" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stability-enhancements">Stability Enhancements<a href="https://fluss.apache.org/blog/releases/0.7/#stability-enhancements" class="hash-link" aria-label="Direct link to Stability Enhancements" title="Direct link to Stability Enhancements">​</a></h2>
+<p>In this release, we have dedicated significant effort to enhancing system stability. By building a comprehensive stability testing framework covering end-to-end processes and multi-scenario fault simulations, combined with large-scale stress testing using real business data, and through rigorous production-level stability validation in Alibaba, we have addressed and resolved over 50 issues. This has significantly improved the stability of Fluss' core modules and the overall robustness [...]
+<ul>
+<li><strong>Online/Offline Node Optimization:</strong> Refactored the ISR (In-Sync Replica) update mechanism and replica synchronization logic and enhanced idempotency guarantees. This significantly improves system stability and reduces the risk of data loss during node failures.</li>
+<li><strong>Server Metadata Caching:</strong> Introduced a consistent metadata caching layer on the server side. Clients now fetch metadata from the local server cache instead of ZooKeeper, significantly reducing request latency and pressure on ZooKeeper.</li>
+<li><strong>Server Rack-Aware Support:</strong> During replica assignment, the system automatically avoids placing multiple replicas within the same "rack", thereby significantly improving fault tolerance and high availability. This feature is especially beneficial in multi-AZ deployments and large-scale data center disaster recovery scenarios. You can configure the "rack" of the TabletServer via setting <code>tablet-server.rack</code> in <code>server.yaml</code>.</li>
+<li><strong>Accelerated Table Creation:</strong> Leveraged batched metadata updates to reduce table initialization time. For example, the time for a table creation with 1024 buckets was reduced from minutes to milliseconds.</li>
+<li><strong>Optimized Read/Write Pipelines:</strong>
+<ul>
+<li>Introduce bucket-id-based shuffle for primary key tables to improve write throughput.</li>
+<li>Dynamically estimate the batch size based on incoming traffic to optimize memory usage and throughput.</li>
+<li>Optimize the Arrow memory release logic to enhance job stability.</li>
+</ul>
+</li>
+</ul>
+<p>These enhancements make Fluss 0.7 ready for most production use cases.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="new-architecture-of-the-streaming-lakehouse">New Architecture of the Streaming Lakehouse<a href="https://fluss.apache.org/blog/releases/0.7/#new-architecture-of-the-streaming-lakehouse" class="hash-link" aria-label="Direct link to New Architecture of the Streaming Lakehouse" title="Direct link to New Architecture of the Streaming Lakehouse">​</a></h2>
+<p>In Fluss 0.5, we first introduced the Streaming Lakehouse feature, with the powerful Union Read ability, we can significantly reduce the cost of streaming storage and improve the data freshness of Lakehouse.</p>
+<blockquote>
+<p>Note: Union Reads allows querying and combining the results from both Lakehouse (historical) and Fluss (real-time) data.</p>
+</blockquote>
+<p>However, the initial implementation had architectural limitations affecting scalability and operability in production. In Fluss 0.7, we’ve completely re-architected the Streaming Lakehouse feature to address these challenges.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="elastic-stateless-service">Elastic Stateless Service<a href="https://fluss.apache.org/blog/releases/0.7/#elastic-stateless-service" class="hash-link" aria-label="Direct link to Elastic Stateless Service" title="Direct link to Elastic Stateless Service">​</a></h3>
+<p>Previously, the lake tiering service was implemented as a Flink job encapsulating Fluss as a Source and Paimon as a Sink, storing sync offsets state in Flink’s State, this making it a stateful service.
+This led to several operational issues:</p>
+<ul>
+<li><strong>Single Point of Failure:</strong> The lifecycle of each table is bound to a specific Flink job. Once a job fails, the synchronization of all tables hosted by the job will be blocked.</li>
+<li><strong>Limited Scalability:</strong> Could only scale vertically (increase job resources), not horizontally (start multiple jobs).</li>
+<li><strong>Inflexible Scheduling:</strong> Unable to prioritize tables and dynamically assign to dedicated Flink clusters.</li>
+<li><strong>Opaque State:</strong> Flink State being a black box made monitoring and troubleshooting the offset difficult.</li>
+</ul>
+<p>To address these challenges, we've re-architected the lake tiering service into a truly elastic and stateless component.
+The sync offset is now persisted directly within Fluss metadata, with future plans for integration into Paimon v1.2 snapshot properties.
+Furthermore, Flink jobs have transitioned from maintaining persistent table subscriptions to a more efficient model where they process one table at a time,
+dynamically requesting the next table upon completion of the current one.</p>
+<p><img decoding="async" loading="lazy" alt="New Architecture Diagram" src="https://fluss.apache.org/assets/images/new_tiering_service-4509c1a4b51c6821c0fe622cdda534e4.png" width="1980" height="1805" class="img_ev3q"></p>
+<p>This optimization significantly reduces the load on Fluss and boosts batch processing efficiency. As a result, cluster operators gain:</p>
+<ul>
+<li><strong>Enhanced Service Robustness:</strong> Operators can launch multiple Flink jobs to distribute workload and increase overall system resilience.</li>
+<li><strong>Flexible Resource Management:</strong> The ability to stop idle jobs at any time allows for immediate reclamation of valuable cluster resources.</li>
+<li><strong>Dynamic Task Orchestration:</strong> Sync tasks can now be dynamically scheduled across all active Flink jobs, optimizing resource utilization.</li>
+<li><strong>Actionable Offset Visibility:</strong> The offset state is now queryable, providing greater insight and control over data processing.</li>
+</ul>
+<p>This design ensures end-to-end consistency across all operations.
+Furthermore, this stateless design also decouples us from the tight Flink dependency, paving the way for future lightweight execution models, such as running on FaaS (Function as a Service).</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="pluggable-lake-format">Pluggable Lake Format<a href="https://fluss.apache.org/blog/releases/0.7/#pluggable-lake-format" class="hash-link" aria-label="Direct link to Pluggable Lake Format" title="Direct link to Pluggable Lake Format">​</a></h3>
+<p>The previous implementation had a tight coupling with Apache Paimon, which restricted our ability to integrate with other lake formats, such as Iceberg.
+With version 0.7, we have abstracted and modularized all lake format interfaces.
+This enhancement enables easy, plugin-style support for Iceberg and other emerging formats.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="native-flink-command-submission">Native Flink Command Submission<a href="https://fluss.apache.org/blog/releases/0.7/#native-flink-command-submission" class="hash-link" aria-label="Direct link to Native Flink Command Submission" title="Direct link to Native Flink Command Submission">​</a></h3>
+<p>Previously, users were limited to the <code>lakehouse.sh</code> script for initiating the lake tiering service, which submitted jobs to the Flink cluster.
+While convenient, this approach restricted deployment flexibility, particularly when encountering diverse Flink deployment modes and internal product platforms.
+Fluss 0.7 now addresses this by supporting <strong>native job submission via standard Flink commands</strong> (<code>flink run</code>).
+This enhancement ensures broad compatibility with various deployment modes while significantly lowering learning and integration costs.
+The following is an example of how to submit the lake tiering service using the native Flink command:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">flink run /path/to/fluss-flink-tiering-0.7.0.jar </span><span class="token punctuation" sty [...]
+<p>See more details in the <a href="https://fluss.apache.org/docs/maintenance/tiered-storage/lakehouse-storage/">Streaming Lakehouse documentation</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-partition-pruning">Streaming Partition Pruning<a href="https://fluss.apache.org/blog/releases/0.7/#streaming-partition-pruning" class="hash-link" aria-label="Direct link to Streaming Partition Pruning" title="Direct link to Streaming Partition Pruning">​</a></h2>
+<p>Partitioning is a foundational technique in modern data warehouses and Lakehouse architectures for optimizing query performance by
+logically dividing datasets along meaningful dimensions (e.g., time, region, business line).</p>
+<p>Fluss 0.7 introduces <strong>streaming partition pruning</strong>, enabling selective reading of relevant partitions based on query conditions.
+For example, if a query filters on <code>nation_key = 'US'</code>, the Fluss Source will only read matching partitions,
+significantly reducing network I/O and compute overhead.
+Apart from that, we also support the following advanced partition features to make partition pruning adaptable and easy to use:</p>
+<ul>
+<li><strong>Multi-level Partitioning:</strong> Supports nested partition strategies (e.g., <code>dt=20250617/region=US/business=sale</code>).</li>
+<li><strong>Dynamic Partition Creation:</strong> Automatically creates required partitions based on incoming data, no manual pre-creation is required.</li>
+<li><strong>Automatic Partition Discovery:</strong> Fluss source adds matched new partitions to the subscription in real-time.</li>
+</ul>
+<p>Using real business data from <strong>Taobao - the largest online shopping platform in China,</strong> we tested the read and write performance between non-partitioned and partitioned tables (with 20 auto-created partitions). The write results show that the multi-level partition and dynamic partition creation mechanism do not have a significant impact on the write performance.
+<img decoding="async" loading="lazy" alt="Write Perf" src="https://fluss.apache.org/assets/images/write_perf-25c062766e117f2c092a79653cf69a85.jpg" width="890" height="554" class="img_ev3q"></p>
+<p>At the same time, under the same data scale, we tested the streaming read performance of non-partitioned tables and partitioned tables under three partition conditions:
+<strong>unconditional</strong>, <strong>medium matching</strong> (hitting five partitions), and <strong>exact matching</strong> (hitting one partition).
+From the results, we can observe that when the partition condition only matches 1/20 of the partitions,
+<strong>the network traffic is reduced by about 20x</strong> and the <strong>processing time is reduced by nearly 9x</strong>,
+demonstrating the huge performance benefit of partition pruning in streaming reads.</p>
+<p><img decoding="async" loading="lazy" alt="Read Perf" src="https://fluss.apache.org/assets/images/read_perf-66abe9aa4ee1bf9ef52dc10c59072c0f.jpg" width="836" height="852" class="img_ev3q"></p>
+<p>Streaming partition pruning is the second pushdown feature introduced after streaming column pruning in Fluss.
+Looking ahead, we plan to introduce <strong>predicate pushdown with Arrow batch-level I/O pruning</strong> to further enhance query efficiency.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="enterprise-grade-security">Enterprise-Grade Security<a href="https://fluss.apache.org/blog/releases/0.7/#enterprise-grade-security" class="hash-link" aria-label="Direct link to Enterprise-Grade Security" title="Direct link to Enterprise-Grade Security">​</a></h2>
+<p>To meet enterprise-grade security requirements, Fluss 0.7 fully supports Authentication and Authorization mechanisms.</p>
+<p><strong>Authentication</strong> is the process of confirming the identity of the client.
+Fluss introduced a plugin-based authentication with built-in <strong>SASL/PLAIN</strong> support, compatible with <strong>JAAS</strong> (Java Authentication and Authorization Service) configuration for both client and server credentials.</p>
+<p><strong>Authorization</strong> controls which resources the identity can access and which operations it can perform after identity confirmation.
+Fluss implements fine-grained permission control through the <strong>ACL</strong> (Access Control List) mechanism, supporting multi-level access control at the Cluster, Database, and Table levels.</p>
+<p>Additionally, we've integrated Flink SQL's <code>CALL</code> statements to ease ACL permission management for users.
+For instance, granting read access to the <code>mydb</code> database for user <code>Tim</code> can now be accomplished with the following command:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CALL</span><span class="token plain"> admin_catalog</span>< [...]
+<p>For details, please refer to the <a href="https://fluss.apache.org/docs/security/overview/">Security documentation</a> and quickstarts.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="flink-datastream-connector">Flink DataStream Connector<a href="https://fluss.apache.org/blog/releases/0.7/#flink-datastream-connector" class="hash-link" aria-label="Direct link to Flink DataStream Connector" title="Direct link to Flink DataStream Connector">​</a></h2>
+<p>Fluss 0.7 officially introduces the DataStream Connector, supporting both Source and Sink for reading and writing log and primary key tables. Users can now seamlessly integrate Fluss tables into Flink DataStream pipelines.</p>
+<p>Here’s an example of reading data from a Fluss table into a Flink DataStream:</p>
+<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token class-name" style="color:rgb(78, 201, 176)">FlussSource</span><span class="token generics punctuat [...]
+<p>For usage examples and configuration parameters, see the <a href="https://alibaba.github.io/fluss-docs/docs/engine-flink/datastream/" target="_blank" rel="noopener noreferrer">DataStream Connector documentation</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-java-client">Fluss Java Client<a href="https://fluss.apache.org/blog/releases/0.7/#fluss-java-client" class="hash-link" aria-label="Direct link to Fluss Java Client" title="Direct link to Fluss Java Client">​</a></h2>
+<p>In this version, we officially release the Fluss Java Client, a client library designed for developers working with structured stream tables. The client includes two core API modules:</p>
+<ul>
+<li><strong>Table API:</strong> For table-based data operations, supporting streaming reads/writes, updates, deletions, and point queries.</li>
+<li><strong>Admin API:</strong> For metadata management, including cluster management, table lifecycle, and access control.</li>
+</ul>
+<p>The client supports forward and backward compatibility, ensuring smooth upgrades across Fluss versions. With the Fluss Java Client, developers can build online applications and data ingestion services based on Fluss, as well as enterprise-level components such as Fluss management platforms and operations monitoring systems. For detailed usage instructions, please refer to the official documentation: <a href="https://alibaba.github.io/fluss-docs/docs/apis/java-client/" target="_blank"  [...]
+<p>Fluss uses Apache Arrow as its underlying storage format, enabling efficient cross-language extensions. A <strong>Fluss Python Client</strong> is planned for future releases, leveraging the rich ecosystem of <strong>PyArrow</strong> to integrate with popular data analysis tools such as <strong>Pandas</strong> and <strong>DuckDB</strong>.
+This will further lower the barrier for real-time data exploration and analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-roadmap">Future Roadmap<a href="https://fluss.apache.org/blog/releases/0.7/#future-roadmap" class="hash-link" aria-label="Direct link to Future Roadmap" title="Direct link to Future Roadmap">​</a></h2>
+<p>In the next releases, we will continue to enhance system robustness and operational capabilities and plan to introduce <strong>Rolling Upgrades</strong> and <strong>Cluster Rebalance</strong>.
+In addition, with the new pluggable datalake format of the Streaming Lakehouse, we will further expand support for the mainstream datalake table formats, such as an <strong>Apache Iceberg</strong> integration.
+Meanwhile, we will explore the possibility of using Fluss in <strong>multimodal AI</strong> use cases, supporting ingestion of multimodal data,
+and integrating with <strong><a href="https://github.com/lancedb/lance" target="_blank" rel="noopener noreferrer">Lance</a></strong> format in the Streaming Lakehouse architecture.</p>
+<p>Fluss is under active development. Be sure to stay updated on the project, give it a try and if you like it,
+don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="list-of-contributors">List of contributors<a href="https://fluss.apache.org/blog/releases/0.7/#list-of-contributors" class="hash-link" aria-label="Direct link to List of contributors" title="Direct link to List of contributors">​</a></h2>
+<p>The Fluss community would like to express gratitude to all the contributors who made this release possible:</p>
+<p>Benchao Li,  CaoZhen,  Feng Wang,  Giannis Polyzos,  HZY,  Hongshun Wang,  Jark Wu,  Junbo wang,  Kerwin,  Leonard Xu,  MehulBatra,  Michael Koepf,  Min Zhao,  Nicholas Jiang,  Radek Grebski,  Rohan Dubey,  Xiaojian Sun,  Yang Guo,  dao-jun,  gkatzioura,  luoyuxia,  majialong,  xiaozhou,  yunhong,  yuxia Luo,  yx9o,  zhangmang,  道君</p>]]></content:encoded>
+            <category>releases</category>
+        </item>
+        <item>
+            <title><![CDATA[Understanding Partial Updates]]></title>
+            <link>https://fluss.apache.org/blog/partial-updates/</link>
+            <guid>https://fluss.apache.org/blog/partial-updates/</guid>
+            <pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Banner" src="https://fluss.apache.org/assets/images/banner-a09e6bac14dc2bee3dbc698347cb2d7f.png" width="1348" height="958" class="img_ev3q"></p>
+<p>Traditional streaming data pipelines often need to join many tables or streams on a primary key to create a wide view.
+For example, imagine you’re building a real-time recommendation engine for an e-commerce platform.
+To serve highly personalized recommendations, your system needs a complete 360° view of each user, including:
+<em>user preferences</em>, <em>past purchases</em>, <em>clickstream behavior</em>, <em>cart activity</em>, <em>product reviews</em>, <em>support tickets</em>, <em>ad impressions</em>, and <em>loyalty status</em>.</p>
+<p>That’s at least <strong>8 different data sources</strong>, each producing updates independently.</p>
+<p>Joining multiple data streams at scale, although it works with Apache Flink it can be really challenging and resource-intensive.
+More specifically, it can lead to:</p>
+<ul>
+<li><strong>Really large state sizes in Flink:</strong> as it needs to buffer all incoming events until they can be joined. In many case states need to be kept around for a long period of time if not indefinitely.</li>
+<li><strong>Deal with checkpoints overhead and backpressure:</strong> as the join operation and large state uploading can create a bottleneck in the pipeline.</li>
+<li><strong>States are not easy to inspect and debug:</strong> as they are often large and complex. This can make it difficult to understand what is happening in the pipeline and why certain events are not being processed correctly.</li>
+<li><strong>State TTL can lead to inconsistent results:</strong> as events may be dropped before they can be joined. This can lead to data loss and incorrect results in the final output.</li>
+</ul>
+<p>Overall, this approach not only consumes a lot of memory and CPU, but also complicates the job design and maintenance.</p>
+<p><img decoding="async" loading="lazy" alt="Streaming Joins" src="https://fluss.apache.org/assets/images/streaming_join-761699227c5633f3575e2036b9e2ac61.png" width="1375" height="550" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partial-updates-a-different-approach-with-fluss">Partial Updates: A Different Approach with Fluss<a href="https://fluss.apache.org/blog/partial-updates/#partial-updates-a-different-approach-with-fluss" class="hash-link" aria-label="Direct link to Partial Updates: A Different Approach with Fluss" title="Direct link to Partial Updates: A Different Approach with Fluss">​</a></h3>
+<p>Fluss introduces a more elegant solution: <strong>partial updates</strong> on a primary key table.</p>
+<p>Instead of performing multi-way joins in the streaming job, Fluss allows each data stream source to independently update only its relevant columns into a shared wide table identified by the primary key.
+In Fluss, you can define a wide table (for example, a user_profile table based on a <code>user_id</code>) that contains all possible fields from all sources.
+Each source stream then writes partial rows – only the fields it knows about – into this table.</p>
+<p><img decoding="async" loading="lazy" alt="Partial Update" src="https://fluss.apache.org/assets/images/partial_update-d529bf24211a76b31444bc7918872d59.png" width="1488" height="669" class="img_ev3q"></p>
+<p>Fluss’s storage engine automatically merges these partial updates together based on the primary key.
+Essentially, Fluss maintains the latest combined value for each key, so you don’t have to manage large join states in Flink.</p>
+<p>Under the hood, when a new partial update for a key arrives, Fluss will look up the existing record for that primary key, update the specific columns provided, and leave other columns unchanged.
+The result is written back as the new version of the record.
+This happens in <em>real-time</em>, so the table is <strong>always up-to-date</strong> with the latest information from all streams.</p>
+<p>Next, let's try and better understand how this works in practice with a concrete example.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="example-building-a-unified-wide-table">Example: Building a Unified Wide Table<a href="https://fluss.apache.org/blog/partial-updates/#example-building-a-unified-wide-table" class="hash-link" aria-label="Direct link to Example: Building a Unified Wide Table" title="Direct link to Example: Building a Unified Wide Table">​</a></h3>
+<blockquote>
+<p>You can find the full source code on github <a href="https://github.com/ververica/ververica-fluss-examples/tree/main/partial_updates" target="_blank" rel="noopener noreferrer">here</a>.</p>
+</blockquote>
+<p>Start by cloning the repository, run <code>docker compose up</code> to spin up the development enviroment and finally grab a terminal
+into the <code>jobmanager</code> and start the Flink SQL cli, by running the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/sql-client.sh</span><br></span></code></pre></div></div>
+<p>Great so far ! 👍</p>
+<p><strong>Step 1:</strong> The first thing we need to do is to create a Flink catalog that will be used to store the tables we are going to create.
+Let's create a catalog called <code>fluss_catalog</code> and use this catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> CATALOG fluss_catal [...]
+<p><strong>Step 2:</strong> Then let's create <code>3 tables</code> to represent the different data sources that will be used to build the recommendations wide table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Recommendations – model scores</span><span class="token  [...]
+<p><strong>Step 3:</strong> Of course, we will need some sample data to work with , so let's go on and insert some records into the tables. 💻</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Recommendations – model scores</span><span class="token  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Impressions – how often each (user,item) was shown</span [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Clicks – user engagement</span><span class="token plain" [...]
+<blockquote>
+<p><strong>Note:</strong> 🚨 So far the jobs we run were bounded jobs, so they will finish after inserting the records. Moving forward we will run some streaming jobs.
+So keep in mind that each job runs with a <code>parallelism of 3</code> and our environment is set up <code>with 10 slots total</code>.
+So make sure to keep an eye to the Flink Web UI to see how many slots are used and how many are available and stop some jobs when are no longer needed to free up resourecs.</p>
+</blockquote>
+<p><strong>Step 4:</strong> At this point let's open up a separate terminal and start the Flink SQL CLI.
+In this new terminal, make sure to run set the <code>result-mode</code>:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">SET </span><span class="token string" style="color:rgb(206, 145, 120)">'sql-client.execut [...]
+<p>and then run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>to observe the output of the table, as we insert <code>partially</code> records into the it from the different sources.</p>
+<p><strong>Step 5:</strong> Let's insert the records from the <code>recommendations</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply recommendation scores</span><span class="token pla [...]
+<p><strong>Output:</strong> Notice, how only the related columns are updated in the <code>user_rec_wide</code> table and the rest of the columns are <code>NULL</code>.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Step 5:</strong> Next, let's insert the records from the <code>impressions</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply impression counts</span><span class="token plain"> [...]
+<p><strong>Output:</strong> Notice how the <code>impressions</code> records are inserted into the <code>user_rec_wide</code> table and the <code>imp_cnt</code> column is updated.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Step 6:</strong> Finally, let's insert the records from the <code>clicks</code> table into the <code>user_rec_wide</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Apply click counts</span><span class="token plain"></spa [...]
+<p><strong>Output:</strong> Notice how the <code>clicks</code> records are inserted into the <code>user_rec_wide</code> table and the <code>click_cnt</code> column is updated.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Flink SQL</span><span class="token operator" style="color:rgb(212, 212, 212)">&gt;</span> [...]
+<p><strong>Reminder:</strong> ‼️As mentioned before make sure to stop the jobs that are no longer needed to free up resources.</p>
+<p>Now let's switch to <code>batch</code> mode and query the current snapshot of the <code>user_rec_wide</code> table.</p>
+<p>But before that, let's start the <a href="https://alibaba.github.io/fluss-docs/docs/maintenance/tiered-storage/lakehouse-storage/#start-the-datalake-tiering-service" target="_blank" rel="noopener noreferrer">Tiering Service</a> that allows offloading the tables as <code>Lakehouse</code> tables.</p>
+<p><strong>Step 7:</strong> Open a new terminal 💻 in the <code>Coordinator Server</code> and run the following command to start the <code>Tiering Service</code>:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/lakehouse.sh </span><span class="token parameter variable" style="color:rgb(156, 22 [...]
+<p>The configured checkpoint is <code>flink.execution.checkpointing.interval=30s</code> so wait a bit until the first checkpoint is created
+and data gets offloading to the <code>Lakehouse</code> tables.</p>
+<p><strong>Step 8:</strong> Finally let's switch to <code>batch</code> mode and query the current snapshot of the <code>user_rec_wide</code> table.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">SET </span><span class="token string" style="color:rgb(206, 145, 120)">'execution.runtime [...]
+<p>🎉 That's it! You have successfully created a unified wide table using partial updates in Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="https://fluss.apache.org/blog/partial-updates/#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h3>
+<p>Partial updates in Fluss enable an alternative approach in how we design streaming data pipelines for enriching or joining data.</p>
+<p>When all your sources share a primary key - otherwise you can mix &amp; match <a href="https://alibaba.github.io/fluss-docs/docs/engine-flink/lookups/#lookup" target="_blank" rel="noopener noreferrer">streaming lookup joins</a> - you can turn the problem on its head: update a unified table incrementally, rather than joining streams on the fly.</p>
+<p>The result is a more scalable, maintainable, and efficient pipeline.
+Engineers can spend less time wrestling with Flink’s state, checkpoints and join mechanics, and more time delivering fresh, integrated data to power real-time analytics and applications.
+With Fluss handling the merge logic, achieving a single, up-to-date view from multiple disparate streams becomes way more elegant. 😁</p>
+<p>And before you go 😊 don’t forget to give Fluss 🌊 some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content:encoded>
+        </item>
+        <item>
+            <title><![CDATA[The Story of Fluss Logo]]></title>
+            <link>https://fluss.apache.org/blog/unveil-fluss-logo/</link>
+            <guid>https://fluss.apache.org/blog/unveil-fluss-logo/</guid>
+            <pubDate>Wed, 28 May 2025 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/colored_logo-570a85568f48c50f3ce9cdcfc57c8670.png" width="1614" height="686" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-the-little-otter">Introducing the Little Otter<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#introducing-the-little-otter" class="hash-link" aria-label="Direct link to Introducing the Little Otter" title="Direct link to Introducing the Little Otter">​</a></h2>
+<p>Today is <a href="https://www.otter.org/world-otter-day" target="_blank" rel="noopener noreferrer">World Otter Day</a>, and we are thrilled to introduce the little otter to the Fluss community! 🎉</p>
+<p>Since open-sourced half a year ago, many community members and friends have asked us:
+"When will Fluss get a logo?" After more than a month of careful design work and over 30 iterations, we’re excited to finally unveil the official Fluss logo — a surfing otter! 🦦🌊</p>
+<p>I don't want to interpret the symbolic meaning behind the Logo in a rigid way. Instead, I’d like to share the story behind its design — how we defined the direction and iterated step by step toward the final version. This process involved numerous subjective decisions made by the team. You might prefer one of the discarded versions, or disagree with some of the design choices. However, we want to share the journey with our community, and we hope it can also serve as a reference or ins [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="logo-symbolism-what-do-we-want-to-convey">Logo symbolism: what do we want to convey?<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#logo-symbolism-what-do-we-want-to-convey" class="hash-link" aria-label="Direct link to Logo symbolism: what do we want to convey?" title="Direct link to Logo symbolism: what do we want to convey?">​</a></h2>
+<p><a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">Fluss</a> is an open-source streaming storage system designed for analytical workloads, with the goal of serving as a real-time data layer for Lakehouse architectures. Therefore, <em><strong>fluidity</strong></em> is the first key message we want to convey.</p>
+<p>Secondly, Fluss’s vision is to <strong>"Bring better analytics to data streams, and bring better freshness to data Lakehouses"</strong>. This requires the ability to adapt to multiple data lake formats and support a variety of query engines and compute engines. So, <em><strong>adaptability</strong></em> is the second core idea we want to convey.</p>
+<p>Additionally, as an open-source project planning to be donated to the Apache Software Foundation, building an open, diverse, and collaborative community has always been one of our core goals. In line with this value, we wanted the brand to express <em><strong>friendliness</strong></em>, which ultimately led us to choose animal as the logo design direction.</p>
+<p>We have also considered using abstract graphics for logo design. However, we noticed that many open-source projects that start with abstract logos, eventually introduce animal mascots to convey the friendliness of the community. These mascots not only play an important role in community outreach but also often replace the main logo in many contexts, becoming more representative visual symbols — such as Go’s gopher, Rust’s crab, and Airbyte’s octopus. Animal images are easier to get cl [...]
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image1-6acb85f09ad799d93582a37896aabf30.png" width="2768" height="1604" class="img_ev3q"></p>
+<p>Therefore, we made clear the direction in the early stage of Fluss Logo design: use an Animal image to convey our concept of <strong>fluidity</strong>, <strong>adaptability</strong>, and <strong>friendliness</strong>. The project name "Fluss" comes from the German word for "river" (Fluss), and we also hope that this animal has a close relationship with the river. Combined with these characteristics, the first animal that comes to our mind is the <strong>otter</strong>. The otter is an [...]
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png" width="2310" height="1242" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="design-iterations-for-more-than-30-versions">Design iterations for more than 30 versions<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#design-iterations-for-more-than-30-versions" class="hash-link" aria-label="Direct link to Design iterations for more than 30 versions" title="Direct link to Design iterations for more than 30 versions">​</a></h2>
+<p>After clarifying the design direction and core values of Fluss Logo, we began to communicate with the design team in depth and launched multiple rounds of iteration. However, in the early versions of the design, we still couldn’t find the right feel — something was missing: the fluidity.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image3-37c9a30c044c5afbc6e35fa21c1793bc.png" width="1930" height="1014" class="img_ev3q"></p>
+<p>Therefore, we used ChatGPT to find inspiration, and tried a variety of prompt words, and this picture with a surfing wave quickly caught our eyes: dynamic, energy, speed, and flow, which is what we want! Although this otter looks like a Jerry rat... our design team quickly got our idea.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image4-c4082ae4730f49472a0414543ab5075a.png" width="298" height="294" class="img_ev3q"></p>
+<p>Based on the core elements of “otter” + “surfing”, we started a new round of design, and we iterated more than 20 versions based on this and finally evolved to the version you see today.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image5-7b6a1c8656ea141b803b8787e89d75df.png" width="2626" height="1204" class="img_ev3q"></p>
+<p>Subsequently, we also made many variations of the logo to adapt to different environments and background colors.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image6-ec1c384b777aef0f617d3fcb08a5e39e.png" width="1900" height="1048" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-feedback-from-community-users">Get feedback from community users<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#get-feedback-from-community-users" class="hash-link" aria-label="Direct link to Get feedback from community users" title="Direct link to Get feedback from community users">​</a></h2>
+<p>Designing a logo is a highly subjective process. But for an open-source project, the goal isn't to please the founding team — it's to resonate with the community. That’s why we've always valued community feedback and used it to guide our iterations.</p>
+<p>Some of the community feedback I loved very much:</p>
+<ul>
+<li>"The Fluss otter seems to be a sibling to Flink's squirrel."</li>
+<li>"I see Paimon in it!"</li>
+<li>"It's soooo cute!"</li>
+</ul>
+<p>Give it some ❤️ via ⭐ on GitHub if you like it as well!
+<a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">https://github.com/alibaba/fluss</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="community-egg">Community Egg<a href="https://fluss.apache.org/blog/unveil-fluss-logo/#community-egg" class="hash-link" aria-label="Direct link to Community Egg" title="Direct link to Community Egg">​</a></h2>
+<p>At the time of the Fluss logo release, we also submitted an <a href="https://lists.apache.org/thread/osg23opm9x95xm318160808r984k0wk9" target="_blank" rel="noopener noreferrer">incubation proposal</a> to the Apache Software Foundation, thanks to the strong support from our incubation mentors Yu Li, tison, Jingsong Lee, Becket Qin, and Jean-Baptiste. We're confident that Fluss will soon become one of the Apache projects.</p>
+<p>In parallel, we’ve designed and launched a series of Fluss community gifts, including stickers, t-shirts, and coffee cups. These items will be available at upcoming community events — stay tuned and pick your swags!</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/image7-246c5eae97745ed3ae9872e84a86b134.png" width="1130" height="633" class="img_ev3q"></p>]]></content:encoded>
+        </item>
+        <item>
+            <title><![CDATA[Announcing Fluss 0.6]]></title>
+            <link>https://fluss.apache.org/blog/releases/0.6/</link>
+            <guid>https://fluss.apache.org/blog/releases/0.6/</guid>
+            <pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p>The Fluss community is pleased to announce the official release of <strong>Fluss 0.6.0</strong>. This version has undergone over
+three months of intensive development, bringing together the expertise and efforts of 45 contributors worldwide,
+with more than 200 code commits completed. Our heartfelt thanks go out to every contributor for their invaluable support!</p>
+<p><img decoding="async" loading="lazy" alt="Release Announcement" src="https://fluss.apache.org/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png" width="1224" height="440" class="img_ev3q"></p>
+<p>This release introduces several exciting features:</p>
+<ul>
+<li><strong>Column Compression</strong>: Reduces storage space by up to <strong>6x</strong> while preserving column pruning performance!</li>
+<li><strong>Merge Engine</strong>: Introduces flexible merge strategies for primary key data, addressing diverse real-time processing needs.</li>
+<li><strong>Prefix Lookup</strong>: Delta Join functionality is now ready on the Fluss side!</li>
+</ul>
+<p>These new features not only significantly enhance the functionality of Fluss but also represent a solid step
+forward in our journey toward building the next-generation analytical stream storage solution.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="column-compression">Column Compression<a href="https://fluss.apache.org/blog/releases/0.6/#column-compression" class="hash-link" aria-label="Direct link to Column Compression" title="Direct link to Column Compression">​</a></h2>
+<p>Fluss uses the <a href="https://arrow.apache.org/" target="_blank" rel="noopener noreferrer">Apache Arrow</a> columnar format for it's underlying log file storage, fully leveraging Arrow's streaming
+columnar capabilities to achieve highly efficient streaming reads and column pruning. Column pruning in Fluss is performed on the server side,
+with end-to-end zero-copy optimization that allows the required column data to be sent directly to the network without
+loading it into memory from disk. This design not only significantly improves performance but also drastically reduces
+network I/O costs and resource overhead. In previous <a href="https://fluss.apache.org/blog/fluss-intro/#columnar-stream">benchmark tests</a>,
+when 90% of the columns were pruned, Fluss achieved a 10x increase in read throughput, demonstrating its exceptional
+performance in streaming data processing and transmission.</p>
+<p>While column pruning effectively reduces network I/O costs, disk storage costs remain high. To address this,
+we have introduced <strong>column compression</strong> in this version, supporting two highly efficient compression algorithms: <strong>ZSTD</strong> and <strong>LZ4</strong>.
+These algorithms significantly reduce data storage requirements, thereby lowering storage costs substantially.
+Since both compression and decompression are performed on the client side, the amount of data transmitted over the network is reduced,
+further decreasing network I/O costs. Notably, compression is applied independently to each column, ensuring that the original column pruning performance is preserved and that streaming read efficiency remains unaffected.</p>
+<p>To validate the actual effectiveness of this feature, we conducted benchmark tests using a typical business scenario from Alibaba Taobao.
+In the tests, we used datasets of the same scale and Flink jobs with identical resources, writing to Fluss with and without ZSTD compression,
+and compared the write throughput. Subsequently, we read data from the table and tested the read throughput.
+The results showed that column compression not only reduced storage space by approximately 6x but also improved read and write throughput.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="https://fluss.apache.org/assets/images/compression1-0b666a1467321b28376db725380eda3c.jpg" width="962" height="572" class="img_ev3q"></p>
+<p>However, enabling compression had no noticeable impact on Flink's read/write CPU and memory usage.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="https://fluss.apache.org/assets/images/compression2-c0feecf4a8fbff819c1ad37ce03ca6e9.jpg" width="1180" height="542" class="img_ev3q"></p>
+<p>The performance of column pruning on compressed data was also tested. The results show that as the number of pruned columns increases,
+a multiple-fold performance improvement is still achieved, maintaining the original column pruning efficiency.</p>
+<p><img decoding="async" loading="lazy" alt="Compression Benchmark" src="https://fluss.apache.org/assets/images/compression3-1f5de9eec6dd66394a793f26395a8f49.jpg" width="1196" height="624" class="img_ev3q"></p>
+<p>Given the significant cost savings and performance improvements achieved by column compression in general use cases,
+ZSTD compression is enabled by default for log tables in Fluss 0.6. Users can disable compression by
+setting the parameter <code>'table.log.arrow.compression.type'='NONE'</code> on the table.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="merge-engine">Merge Engine<a href="https://fluss.apache.org/blog/releases/0.6/#merge-engine" class="hash-link" aria-label="Direct link to Merge Engine" title="Direct link to Merge Engine">​</a></h2>
+<p>In this version, Fluss introduces a new Merge Engine feature for primary key tables to flexibly support merging strategies for data with the same primary key.
+The default Merge Engine strategy for primary key tables is to retain the latest record for each primary key.
+Users can also choose alternative Merge Engines, including the currently supported <strong>FirstRow Merge Engine</strong> and <strong>Versioned Merge Engine</strong>.
+Support for the <strong>Aggregate Merge Engine</strong> is planned for future releases.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="firstrow-merge-engine">FirstRow Merge Engine<a href="https://fluss.apache.org/blog/releases/0.6/#firstrow-merge-engine" class="hash-link" aria-label="Direct link to FirstRow Merge Engine" title="Direct link to FirstRow Merge Engine">​</a></h3>
+<p>By setting the table property <code>'table.merge-engine' = 'first_row'</code>, users can retain the first record for each primary key.
+When this configuration is enabled, the primary key table will generate an append-only changelog. This allows downstream
+Flink jobs subscribing to the table to receive an append-only stream, enabling the use of operators that do not support retraction messages,
+such as Window Aggregations and Interval Joins. This feature is commonly used as a replacement for log deduplication in streaming processing,
+effectively reducing costs and system complexity.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- create first_row primary key table</span><span class="to [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="versioned-merge-engine">Versioned Merge Engine<a href="https://fluss.apache.org/blog/releases/0.6/#versioned-merge-engine" class="hash-link" aria-label="Direct link to Versioned Merge Engine" title="Direct link to Versioned Merge Engine">​</a></h3>
+<p>The Versioned Merge Engine supports data updates based on version numbers (or event timestamps). It ensures that only the record
+with the highest version number (or event timestamp) for each primary key is retained. This mechanism is particularly useful for
+deduplicating or merging out-of-order data while guaranteeing eventual consistency with the upstream data source.
+In Flink streaming processing, this feature can be used as a replacement for <code>Rank</code> or <code>Deduplication</code> operations, simplifying workflows and reducing costs effectively.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- create a versioned primary key table, `ts` as the versio [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prefix-lookup-for-delta-join">Prefix Lookup for Delta Join<a href="https://fluss.apache.org/blog/releases/0.6/#prefix-lookup-for-delta-join" class="hash-link" aria-label="Direct link to Prefix Lookup for Delta Join" title="Direct link to Prefix Lookup for Delta Join">​</a></h2>
+<p>In the scenario of building wide tables with Flink, optimizing Stream-Stream Join using Delta Join is one of the primary use cases for Fluss.
+We have also contributed this functionality to version 0.6. Delta Join can be simply understood as a "bilateral driven lookup join", that is:
+when data arrives from the left stream, the right table is queried using the join key; when data arrives from the right stream, the left table is queried using the join key.
+This approach eliminates join state like Lookup Join, while preserving the semantics of a Stream-Stream Join (any updates on either side triggers an update to the join result).
+Delta Join addresses challenges such as high cost, unstable job, checkpoint timeout, slow restart recovery, etc., in the traditional Stream-Stream Join.</p>
+<p><img decoding="async" loading="lazy" alt="Delta Join" src="https://fluss.apache.org/assets/images/delta-join-ad3cf73fc7f3f01e306ad02fd765d26d.jpg" width="2024" height="884" class="img_ev3q"></p>
+<p>Overall, Delta Join relies on three core functionalities:</p>
+<ul>
+<li><strong>CDC Stream Read for Source Table</strong>: The foundational capability of Fluss.</li>
+<li><strong>Lookup on Join Keys for Source Table</strong>: Introduced in Fluss 0.6 with Prefix Lookup support.</li>
+<li><strong>Delta Join Operator in Flink SQL</strong>: Proposed in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-486%3A+Introduce+A+New+DeltaJoin" target="_blank" rel="noopener noreferrer">FLIP-486</a>, planned for Flink 2.1.</li>
+</ul>
+<p>Once FLIP-486 is completed, users will be able to achieve Delta Join using the following SQL in conjunction with Fluss's Prefix Lookup functionality:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<p>Flink performs lookups on Fluss tables using the Join Key, which serves as the Bucket Key for the Fluss table.
+This allows it to leverage the prefix index of the primary key in the Fluss table, enabling highly efficient lookup queries.
+This feature in Fluss is referred to as Prefix Lookup. Currently, Prefix Lookup can also be used to perform one-to-many lookup queries.
+For more details, please refer to the <a href="https://fluss.apache.org/docs/engine-flink/lookups/#prefix-lookup">Prefix Lookup</a> documentation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stability--performance-improvements">Stability &amp; Performance Improvements<a href="https://fluss.apache.org/blog/releases/0.6/#stability--performance-improvements" class="hash-link" aria-label="Direct link to Stability &amp; Performance Improvements" title="Direct link to Stability &amp; Performance Improvements">​</a></h2>
+<p>In this version, we have focused on enhancing the stability and performance of the system, resolving over 50 issues and improvements,
+and conducting in-depth optimizations on core modules. For example:</p>
+<ul>
+<li>Server-side Optimization : By introducing a delayed response mechanism, CPU consumption in low-traffic scenarios has been significantly reduced, thereby improving resource utilization efficiency.</li>
+<li>Client-side Optimization : A unified memory management mechanism has been implemented to effectively prevent Out-of-Memory (OOM) issues in high-traffic scenarios while reducing the impact of garbage collection (GC) on system performance.</li>
+</ul>
+<p>These improvements have significantly enhanced Fluss's reliability and performance in high-concurrency, large-data-volume scenarios, enabling it to handle analytical stream storage workload more efficiently.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lakehouse-storage">Lakehouse Storage<a href="https://fluss.apache.org/blog/releases/0.6/#lakehouse-storage" class="hash-link" aria-label="Direct link to Lakehouse Storage" title="Direct link to Lakehouse Storage">​</a></h2>
+<p>In previous versions, if a table in Fluss needed to enable the Lakehouse storage capability, it had to be enabled when table is created.
+Otherwise, enabling this feature later would require deleting and recreating the table. This limitation arose because enabling Lakehouse storage changes the key encoding format and bucket sharding strategy, making existing tables incompatible with the new configuration.</p>
+<p>In this version, we resolve this by detecting the cluster's default data lake format and adopting its key encoding and bucketing strategy,
+allowing Lakehouse storage to be enabled dynamically after table creation. This eliminates the need for table recreation, improving usability.
+Additionally, Paimon dependency is upgraded to version 1.0.1 in this release.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="flink-integration">Flink Integration<a href="https://fluss.apache.org/blog/releases/0.6/#flink-integration" class="hash-link" aria-label="Direct link to Flink Integration" title="Direct link to Flink Integration">​</a></h2>
+<p>This version introduces the following enhancements to the Flink connector:</p>
+<ol>
+<li><strong>Sink Support for Ignoring Retractions:</strong>
+Both Primary Key Tables and Log Tables now support the <code>'sink.ignore-delete'</code> parameter in their Sink implementations. This enables better compatibility with scenarios involving retraction messages, meeting the demands of more complex streaming data processing.</li>
+<li><strong>Enhanced Partition Table Operations:</strong>
+Partitioned tables now support <code>ALTER TABLE ADD/DROP PARTITION</code> and <code>SHOW PARTITIONS</code> operations, further improving the flexibility and usability of partition management.</li>
+<li><strong>Sink Interface Upgrade:</strong>
+The <code>SinkFunction</code> has been upgraded to the <code>SinkV2</code> interface, laying the groundwork for full compatibility with Flink 2.0 in the next version. This ensures the system's scalability and compatibility in future releases.</li>
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-notes">Upgrade Notes<a href="https://fluss.apache.org/blog/releases/0.6/#upgrade-notes" class="hash-link" aria-label="Direct link to Upgrade Notes" title="Direct link to Upgrade Notes">​</a></h2>
+<p>The Fluss community try to ensure compatibility during upgrades. However, upgrading from Fluss 0.5 to 0.6 is an incompatible upgrade.
+Starting with version 0.6, we will officially provide backward compatibility to ensure smoother and more reliable upgrades in future releases.
+Therefore, version 0.6 is the recommended version for adoption and ecosystem integration.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plan">Future Plan<a href="https://fluss.apache.org/blog/releases/0.6/#future-plan" class="hash-link" aria-label="Direct link to Future Plan" title="Direct link to Future Plan">​</a></h2>
+<p>In the next version, we will focus on the development of the following core features:</p>
+<ol>
+<li>
+<p><strong>New Lake-Stream Integrated Architecture:</strong>
+A completely new architecture designed for large-scale production environments, featuring plug-in support for mainstream lake formats such as Iceberg and Hudi. This addresses key pain points in Tiering Service performance, scalability, and operational efficiency, providing a more reliable Lakehouse integrated solution for enterprise use cases.</p>
+</li>
+<li>
+<p><strong>Authentication and Authorization:</strong>
+Introducing plugin-based authentication and fine-grained access control to meet the stringent data security requirements of enterprises.</p>
+</li>
+<li>
+<p><strong>Kafka Compatibility:</strong>
+Compatibility with the Kafka network protocol, enabling seamless integration with the Kafka ecosystem.</p>
+</li>
+</ol>
+<p>For more details about the next release roadmap, please visit the community <a href="https://github.com/alibaba/fluss/discussions/556" target="_blank" rel="noopener noreferrer">discussion page</a>. Your suggestions and contributions are highly welcomed!</p>
+<p>Fluss is under active development. Be sure to stay updated on the project, give it a try and if you like it, don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="list-of-contributors">List of Contributors<a href="https://fluss.apache.org/blog/releases/0.6/#list-of-contributors" class="hash-link" aria-label="Direct link to List of Contributors" title="Direct link to List of Contributors">​</a></h2>
+<p>The Fluss community would like to express gratitude to all the 45 contributors who made this release possible:</p>
+<p>Benchao Li, ForwardXu, Gang Yang, Georgios Andrianakis, Giannis Polyzos, Hongshun Wang, Jark Wu, Kerwin, Leonard Xu, LiJingwei, Liu Xiao, MehulBatra, Michael Koepf, Nicholas Jiang, Ron, RunningDB, Sagar Sumit, SeungMin, Shuo Cheng, Stan, SteNicholas, Tyrantlucifer, Vipamp, WangS-C, WenjunMin, Wenston Xin, Xiaojian Sun, Yang Guo, Yubin Li, Yuepeng Pan, Zmm, benjobs, gongzhongqiang, gyang94, jon-qj, luoyuxia, moses, psxjoy, wangwj, wudi, xiaozhou, yunhong, yuxia Luo, 码界探索, 道君</p>]]></co [...]
+            <category>releases</category>
+        </item>
+        <item>
+            <title><![CDATA[Towards A Unified Streaming & Lakehouse Architecture]]></title>
+            <link>https://fluss.apache.org/blog/unified-streaming-lakehouse/</link>
+            <guid>https://fluss.apache.org/blog/unified-streaming-lakehouse/</guid>
+            <pubDate>Tue, 28 Jan 2025 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p>The unification of Lakehouse and streaming storage represents a major trend in the future development of modern data lakes and streaming storage systems. Designed specifically for real-time analytics, Fluss has embraced a unified Streaming and Lakehouse architecture from its inception, enabling seamless integration into existing Lakehouse architectures.</p>
+<p>Fluss is designed to address the demands of real-time analytics with the following key capabilities:</p>
+<ul>
+<li><strong>Real-Time Stream Reading and Writing:</strong> Supports millisecond-level end-to-end latency.</li>
+<li><strong>Columnar Stream:</strong> Optimizes storage and query efficiency.</li>
+<li><strong>Streaming Updates:</strong> Enables low-latency updates to data streams.</li>
+<li><strong>Changelog Generation:</strong> Supports changelog generation and consumption.</li>
+<li><strong>Real-Time Lookup Queries:</strong> Facilitates instant lookup queries on primary keys.</li>
+<li><strong>Streaming &amp; Lakehouse Unification:</strong> Seamlessly integrates streaming and lakehouse storage for unified data processing.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-unified-streaming--lakehouse-architecture">Fluss Unified Streaming &amp; Lakehouse Architecture<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#fluss-unified-streaming--lakehouse-architecture" class="hash-link" aria-label="Direct link to Fluss Unified Streaming &amp; Lakehouse Architecture" title="Direct link to Fluss Unified Streaming &amp; Lakehouse Architecture">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img1-163f1412a1ed7b661686302df5bf9edb.png" width="1866" height="635" class="img_ev3q">
+The Fluss architecture is designed to provide millisecond-level end-to-end latency, ensuring high-performance real-time data writing and reading. A core component of this architecture is the <strong>Tiering Service</strong>, which continuously offloads data in Fluss into a standard lakehouse format, such as <code>Apache Paimon</code> or <code>Apache Iceberg</code>. This tiering ensures that external query engines can directly analyze data in the Lakehouse format, enabling efficient batch [...]
+In this architecture:</p>
+<ul>
+<li><strong>Latest Data in Fluss:</strong> Fluss stores the most recent, high-fidelity data for real-time analytics.</li>
+<li><strong>Historical Data in Paimon:</strong> Older data is compacted and stored in Apache Paimon for large-scale historical analysis.</li>
+</ul>
+<p>By leveraging Apache Flink, the integration of Fluss and Paimon supports Union Reads, which combine real-time data in Fluss with historical data in Paimon. This enables analytical queries with second-level freshness, allowing businesses to benefit from up-to-date insights while maintaining access to extensive historical datasets.</p>
+<p>The Streaming/Lakehouse unification design of Fluss provides:</p>
+<ul>
+<li><strong>Unified Architecture:</strong> Simplifies the Lakehouse ecosystem by combining the strengths of streaming and Lakehouse storage.</li>
+<li><strong>Enhanced Real-Time Capabilities:</strong> Millisecond-level latency ensures data is always fresh for critical use cases.</li>
+<li><strong>Seamless Compatibility:</strong> Native support for standard lakehouse formats ensures interoperability with existing analytics engines.</li>
+<li><strong>Optimized Data Management:</strong> Combines real-time and historical data seamlessly for comprehensive analytics workflows.</li>
+</ul>
+<p>Fluss is <strong>a next-generation approach to streaming storage, purpose-built to complement Lakehouse architectures</strong> and drive the adoption of a streaming and Lakehouse unification across industries.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unified-metadata">Unified metadata<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#unified-metadata" class="hash-link" aria-label="Direct link to Unified metadata" title="Direct link to Unified metadata">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img2-86b0eb7b0f26884f8ead16dc4a8db648.png" width="1842" height="732" class="img_ev3q"></p>
+<p>In traditional architectures, streaming storage systems like Kafka and Lakehouse storage solutions like Apache Paimon operated as distinct entities, each maintaining its own metadata. For computing engines such as Apache Flink, this separation presented two significant challenges:</p>
+<ol>
+<li><strong>Dual Catalogs:</strong> Users were required to create and manage two separate catalogs—one for streaming storage and another for lake storage.</li>
+<li><strong>Manual Switching:</strong> Accessing data involved manually switching between catalogs to determine whether to query stream storage or lake storage, resulting in operational complexity and inefficiencies.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unified-access-in-fluss">Unified Access in Fluss<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#unified-access-in-fluss" class="hash-link" aria-label="Direct link to Unified Access in Fluss" title="Direct link to Unified Access in Fluss">​</a></h3>
+<p>In the Fluss, although Fluss and Paimon still maintain independent metadata, they expose a unified catalog and a single table abstraction to the computing engine, such as Apache Flink. This unified approach offers several key advantages:</p>
+<ul>
+<li><strong>Simplified Data Access:</strong> Users can seamlessly access both Lakehouse storage (Paimon) and streaming storage (Fluss) through a single catalog, eliminating the need to manage or switch between separate catalogs.</li>
+<li><strong>Integrated Querying:</strong> The unified table abstraction allows direct access to real-time data in Fluss and historical data in Paimon. For scenarios requiring both, users can leverage <code>Union Reads</code>, combining data from Fluss and Paimon to enable comprehensive analytics with second-level data freshness.</li>
+<li><strong>Operational Efficiency:</strong> By presenting a cohesive interface, the architecture reduces operational complexity, making it easier for users to work with real-time and historical data within a single workflow.</li>
+</ul>
+<p>This unified approach streamlines the interaction between computing engines and storage layers, enhancing both usability and productivity while supporting the high-performance demands of modern analytics workflows.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="alignment-of-data-distribution">Alignment of Data Distribution<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#alignment-of-data-distribution" class="hash-link" aria-label="Direct link to Alignment of Data Distribution" title="Direct link to Alignment of Data Distribution">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img3-d0ea956fb83807118c4d522bdd7b30f4.png" width="1777" height="856" class="img_ev3q"></p>
+<p>In the Fluss, the data distribution between Fluss and Lakehouse storage (e.g., Apache Paimon) is strictly aligned. Fluss supports partitioned tables and buckets, and its bucketing algorithm is fully consistent with Paimon’s. This ensures that a given piece of data is always allocated to the same bucket in both systems, creating a one-to-one correspondence between Fluss buckets and Paimon buckets.
+This strong consistency in data distribution provides two significant benefits:</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-elimination-of-shuffle-overhead-during-tiering">1. Elimination of Shuffle Overhead During Tiering<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#1-elimination-of-shuffle-overhead-during-tiering" class="hash-link" aria-label="Direct link to 1. Elimination of Shuffle Overhead During Tiering" title="Direct link to 1. Elimination of Shuffle Overhead During Tiering">​</a></h4>
+<p>When tiering data from Fluss into Paimon format:</p>
+<ul>
+<li>A Fluss bucket (e.g., bucket1) can be tiered directly into the corresponding Paimon bucket (bucket1).</li>
+<li>There is no need to read data from a Fluss bucket, calculate which Paimon bucket each piece of data belongs to, and then write it to the appropriate Paimon bucket.</li>
+</ul>
+<p>By bypassing this intermediate redistribution step, the architecture avoids costly shuffle overhead, significantly improving compaction efficiency.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-prevention-of-data-inconsistencies">2. Prevention of Data Inconsistencies<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#2-prevention-of-data-inconsistencies" class="hash-link" aria-label="Direct link to 2. Prevention of Data Inconsistencies" title="Direct link to 2. Prevention of Data Inconsistencies">​</a></h4>
+<p>Data consistency is maintained through the use of an identical bucketing algorithm in both Fluss and Paimon. This algorithm calculates the bucket assignment for each piece of data as follows:</p>
+<blockquote>
+<p>bucket_id = hash(row) % bucket_num</p>
+</blockquote>
+<p>By employing the same hash function and algorithm, Fluss and Paimon ensure consistent bucket assignment. If differing algorithms were used, inconsistencies would arise. For example:</p>
+<ul>
+<li>For a primary key table, a data row a might be assigned to bucket1 in Fluss but to bucket2 in Paimon.</li>
+<li>During tiering, if rows were mistakenly placed in bucket1 in Paimon (per Fluss’s assignment), users would fail to locate the data in Paimon due to the mismatch.</li>
+</ul>
+<p>By maintaining strong alignment in data distribution, the architecture eliminates this risk, ensuring data consistency across Fluss and Paimon while simplifying compaction workflows. This alignment underscores the robustness and efficiency of the Fluss unification design.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-reading-more-efficient-data-tracing">Streaming Reading: More Efficient Data Tracing<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#streaming-reading-more-efficient-data-tracing" class="hash-link" aria-label="Direct link to Streaming Reading: More Efficient Data Tracing" title="Direct link to Streaming Reading: More Efficient Data Tracing">​</a></h3>
+<p>In the Fluss, historical data resides in Lakehouse storage, while real-time data is maintained in Fluss. During streaming reads, this architecture enables a seamless combination of historical and real-time data access:</p>
+<ul>
+<li><strong>Historical Data Access:</strong> Fluss retrieves historical data directly from the Lakehouse storage, leveraging its inherent advantages, such as:<!-- -->
+<ul>
+<li><strong>Efficient Filter Pushdown:</strong> Enables query engines to apply filtering conditions at the storage layer, reducing the amount of data read and improving performance.</li>
+<li><strong>Column Pruning:</strong> Allows retrieval of only the necessary columns, optimizing data transfer and query efficiency.</li>
+<li><strong>High Compression Ratios:</strong> Minimizes storage overhead while maintaining fast retrieval speeds.</li>
+</ul>
+</li>
+<li><strong>Real-Time Data Access:</strong> Fluss concurrently reads the latest real-time data from its own storage, ensuring up-to-the-millisecond freshness.</li>
+</ul>
+<p>By combining the strengths of Lakehouse storage for efficient historical data retrieval and Fluss for real-time streaming data, this architecture delivers a highly performant and scalable solution for streaming read scenarios. This integration ensures that users benefit from low-latency data freshness and optimized query performance across both historical and real-time datasets.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="batch-reading-data-freshness-in-seconds">Batch Reading: Data Freshness in Seconds<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#batch-reading-data-freshness-in-seconds" class="hash-link" aria-label="Direct link to Batch Reading: Data Freshness in Seconds" title="Direct link to Batch Reading: Data Freshness in Seconds">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img4-06aab50ae6bb5a5df5cc0e2658815c1f.png" width="1770" height="747" class="img_ev3q"></p>
+<p>Historical data is stored in the Lakehouse, and real-time data is stored in Fluss. In batch reading scenarios, computing engines (such as Flink) can perform union reading of data in Fluss and lake storage to achieve analysis of data freshness in seconds.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-flink-and-fluss">Apache Flink and Fluss<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#apache-flink-and-fluss" class="hash-link" aria-label="Direct link to Apache Flink and Fluss" title="Direct link to Apache Flink and Fluss">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img5-36f56d95c22f50252c6a5caedbfed1d4.png" width="1761" height="730" class="img_ev3q">
+Fluss exposes a unified API to Flink users, allowing them to choose whether to use union reads or read-only reads on the Lakehouse, using the following SQL:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>This reads the complete data of the orders table and Flink will union read the data in Fluss and the Lakehouse.
+If the user only needs to read data on the data lake, you can add the <code>$lake</code> suffix after the table to be read. The SQL is as follows</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE" [...]
+<p>For scenarios where data on a data lake is read-only, Fluss inherits all the optimizations and capabilities of the lake format as a Flink source, such as runtime filters, system table queries, and time travel.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="benefits-of-the-unified-architecture">Benefits Of The Unified Architecture<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#benefits-of-the-unified-architecture" class="hash-link" aria-label="Direct link to Benefits Of The Unified Architecture" title="Direct link to Benefits Of The Unified Architecture">​</a></h2>
+<p>Next, using Apache Paimon as an example, we will illustrate the advantages of using Fluss to build a unified architecture. We will highlight how Fluss enhances the capabilities of Paimon, creating a unified solution that combines the strengths of both systems for efficient real-time and historical data processing.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="second-level-timeliness">Second-level Timeliness<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#second-level-timeliness" class="hash-link" aria-label="Direct link to Second-level Timeliness" title="Direct link to Second-level Timeliness">​</a></h3>
+<p>In Apache Paimon, data visibility is traditionally determined by the Flink checkpoint interval, which typically operates at one minute-level granularity. However, by integrating Fluss with Paimon to build unfiied architecture, this dependency is eliminated.</p>
+<p>With this unification, data becomes visible immediately upon entering Fluss, significantly improving data timeliness to second-level latency. This enhancement ensures that real-time insights can be derived more quickly, meeting the demands of time-sensitive applications while maintaining seamless access to both historical and real-time data.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="consistent-data-freshness-across-all-layers">Consistent Data Freshness Across All Layers<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#consistent-data-freshness-across-all-layers" class="hash-link" aria-label="Direct link to Consistent Data Freshness Across All Layers" title="Direct link to Consistent Data Freshness Across All Layers">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img6-5fdec641b3032d1c0f236cf990d914da.png" width="1570" height="782" class="img_ev3q">
+In the process of building a data warehouse, it is common to organize and manage data by layering, such as Bronze, Silver and Gold following the medallion architecture. As data flows through these layers, maintaining data freshness becomes a critical consideration.</p>
+<p>When Paimon is used as the sole storage solution for each layer, data visibility depends on the Flink checkpoint interval. This introduces cumulative delays:</p>
+<ul>
+<li>The changelog for a given layer becomes visible only after the completion of a Flink checkpoint.</li>
+<li>As this changelog propagates to subsequent layers, the data freshness delay increases with each checkpoint interval.</li>
+</ul>
+<p>For example, with a Flink checkpoint interval of 1 minute:</p>
+<ul>
+<li>The Bronze layer experiences 1-minute delay.</li>
+<li>The Silver layer adds another 1-minute delay, totaling 2 minutes.</li>
+<li>The Gold layer adds yet another 1-minute delay, resulting in a cumulative 3-minute delay.</li>
+</ul>
+<p>With Fluss and Paimon though we get:</p>
+<ul>
+<li><strong>Immediate Data Visibility:</strong> Data in Fluss becomes visible immediately upon ingestion, without waiting for a Flink checkpoint to complete. The changelog is instantly transferred to the next layer.</li>
+<li><strong>Consistent Data Freshness:</strong> The data freshness across all layers is consistent and measured in seconds, eliminating cumulative delays.</li>
+</ul>
+<p>Additionally, if the Fluss Tiering Service is configured with a tiering cycle of 1 minute, the data delay for Paimon storage at each layer is limited to 1 minute, regardless of the number of layers. This ensures:</p>
+<ul>
+<li><strong>Real-Time Data Processing:</strong> Layers can propagate and process data with minimal delay.</li>
+<li><strong>Optimized Streaming &amp; Lakehouse Unification:</strong> The architecture balances the strengths of real-time and batch-oriented storage.</li>
+</ul>
+<p>This integration significantly improves the performance and usability of layered data warehouses, enabling faster insights and better responsiveness to real-time demands.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="more-efficient-and-higher-throughput-changelog-generation">More efficient and higher throughput changelog generation<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#more-efficient-and-higher-throughput-changelog-generation" class="hash-link" aria-label="Direct link to More efficient and higher throughput changelog generation" title="Direct link to More efficient and higher throughput changelog generation">​</a></h3>
+<p>In Apache Paimon, there are currently two commonly used methods for generating changelogs (excluding the Input Producer, which requires more stringent data source requirements and is not considered here):</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="lookup-changelog-producer">Lookup Changelog Producer<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#lookup-changelog-producer" class="hash-link" aria-label="Direct link to Lookup Changelog Producer" title="Direct link to Lookup Changelog Producer">​</a></h4>
+<ul>
+<li><strong>Advantages:</strong> Offers high timeliness for generating changelogs.</li>
+<li><strong>Challenges:</strong> Consumes significant computational resources, leading to higher operational costs.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="full-compaction-producer">Full Compaction Producer:<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#full-compaction-producer" class="hash-link" aria-label="Direct link to Full Compaction Producer:" title="Direct link to Full Compaction Producer:">​</a></h4>
+<ul>
+<li><strong>Advantages:</strong> Does not require additional resource consumption, as changelogs are generated during the Full Compaction process.</li>
+<li><strong>Challenges:</strong> Suffers from poor timeliness, as changelog generation is delayed until a Full Compaction is triggered, which typically occurs after several checkpoints.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-and-paimon-optimizing-changelog-generation">Fluss and Paimon: Optimizing Changelog Generation<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#fluss-and-paimon-optimizing-changelog-generation" class="hash-link" aria-label="Direct link to Fluss and Paimon: Optimizing Changelog Generation" title="Direct link to Fluss and Paimon: Optimizing Changelog Generation">​</a></h4>
+<p>The Fluss and Paimon architecture strikes a balance between timeliness and performance in changelog generation:</p>
+<ul>
+<li><strong>Changelog Timeliness:</strong> Fluss generates changelogs in seconds, ensuring near real-time visibility of data changes.</li>
+<li><strong>Efficient Conversion:</strong> The Fluss Tiering Service efficiently writes Fluss changelogs directly into the Paimon changelog format. This conversion process is highly optimized, avoiding resource-intensive operations such as lookups. Instead, it relies on direct read-and-write operations, significantly reducing overhead.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="key-benefits-of-fluss-and-paimon-changelog-generation">Key Benefits of Fluss and Paimon Changelog Generation<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#key-benefits-of-fluss-and-paimon-changelog-generation" class="hash-link" aria-label="Direct link to Key Benefits of Fluss and Paimon Changelog Generation" title="Direct link to Key Benefits of Fluss and Paimon Changelog Generation">​</a></h4>
+<ol>
+<li><strong>Improved Timeliness:</strong> Near real-time changelog generation ensures data freshness and faster insights.</li>
+<li><strong>Resource Efficiency:</strong> By eliminating the need for computationally expensive operations, the architecture reduces resource consumption while maintaining high performance.</li>
+<li><strong>Seamless Integration:</strong> The direct compatibility between Fluss changelogs and Paimon changelog formats simplifies the process, enhancing system efficiency and reducing operational complexity.</li>
+</ol>
+<p>This architecture provides an elegant solution for use cases that demand both low-latency data updates and optimized resource utilization, making it a robust choice for modern data processing needs.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enabling-multi-writer-support-for-paimon-partial-updates">Enabling Multi-Writer Support for Paimon Partial Updates<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#enabling-multi-writer-support-for-paimon-partial-updates" class="hash-link" aria-label="Direct link to Enabling Multi-Writer Support for Paimon Partial Updates" title="Direct link to Enabling Multi-Writer Support for Paimon Partial Updates">​</a></h3>
+<p>Partial updates are a critical feature in Apache Paimon, particularly for managing large, wide tables. However, in the current Paimon architecture, performing partial updates on wide tables presents significant challenges:</p>
+<ul>
+<li><strong>Single Writer Limitation:</strong> To ensure consistency, all partial updates to a table must be consolidated into a single SQL job. This requires using a UNION statement to combine all partial update operations into a single pipeline, ensuring only one writer is responsible for updating the table.</li>
+<li><strong>Operational Complexity:</strong> Consolidating all updates into one job makes it difficult to manage and tune individual update operations, leading to challenges in scalability and flexibility.</li>
+</ul>
+<p>With Fluss and Paimon integration these limitations are eliminated</p>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="https://fluss.apache.org/assets/images/img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png" width="1833" height="783" class="img_ev3q"></p>
+<ul>
+<li><strong>Intermediate Synchronization via Fluss:</strong> All updates pass through Fluss, which serves as an intermediary layer to synchronize changes with Paimon.</li>
+<li><strong>Support for Concurrent Updates:</strong> Fluss enables concurrent updates from multiple SQL jobs, removing the need to consolidate updates into a single job.</li>
+<li><strong>Fine-Grained Job Management:</strong> With the ability to execute multiple independent SQL jobs for updating any number of columns in a wide table, users can perform job-level tuning and management, improving operational efficiency and flexibility.</li>
+</ul>
+<p>This enables organizations to unlock several key advantages:</p>
+<ul>
+<li><strong>High Real-Time Performance:</strong> Lakehouse storage achieves second-level data freshness, meeting the demands of real-time data applications.</li>
+<li><strong>Unified Streaming and Lakehouse Processing:</strong> Data is written once into the architecture and can seamlessly support both batch and streaming use cases, reducing duplication of effort.</li>
+<li><strong>Lower Operational Costs:</strong> Simplified maintenance and reduced complexity of partial updates, lower storage costs by minimizing data duplication and reduced computational costs by eliminating redundant processing pipelines.</li>
+</ul>
+<p>The Fluss and Paimon architecture offers a robust solution for managing partial updates in wide tables while delivering significant improvements in performance, scalability, and operational efficiency.</p>
+<p>All the above highlight the power of a unified streaming and Lakehouse architecture in modern data systems, ensuring real-time capabilities with streamlined workflows.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plans">Future plans<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#future-plans" class="hash-link" aria-label="Direct link to Future plans" title="Direct link to Future plans">​</a></h2>
+<p>The Fluss community is actively working to enhance the streaming and Lakehouse unification capabilities, focusing on the following key areas.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="expanding-union-read-ecosystem">Expanding Union Read Ecosystem<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#expanding-union-read-ecosystem" class="hash-link" aria-label="Direct link to Expanding Union Read Ecosystem" title="Direct link to Expanding Union Read Ecosystem">​</a></h3>
+<p>Currently, Union Read functionality is integrated with Apache Flink, enabling seamless querying of real-time and historical data. Moving forward, the community plans to extend this capability to support additional query engines, such as Apache Spark and StarRocks, further broadening its ecosystem compatibility and adoption.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="diversifying-lake-storage-formats">Diversifying Lake Storage Formats<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#diversifying-lake-storage-formats" class="hash-link" aria-label="Direct link to Diversifying Lake Storage Formats" title="Direct link to Diversifying Lake Storage Formats">​</a></h3>
+<p>At present, Fluss supports Apache Paimon as its primary lake storage. To meet diverse user requirements, the community aims to add support for more lake formats, including <strong>Apache Iceberg</strong> and <strong>Apache Hudi</strong>, thereby providing flexibility and interoperability with a wider range of Lakehouse ecosystems.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="optimizing-arrow-to-parquet-conversion">Optimizing Arrow-to-Parquet Conversion<a href="https://fluss.apache.org/blog/unified-streaming-lakehouse/#optimizing-arrow-to-parquet-conversion" class="hash-link" aria-label="Direct link to Optimizing Arrow-to-Parquet Conversion" title="Direct link to Optimizing Arrow-to-Parquet Conversion">​</a></h3>
+<p>Fluss leverages Apache Arrow as its storage format, while many Lakehouse formats, such as Paimon, Iceberg, and Hudi, utilize parquet for storage. The Apache Arrow community has developed a mature and efficient solution for converting Arrow data to Parquet. In the future, Fluss will integrate these advancements to enable high-performance Arrow-to-Parquet conversions, significantly reducing the computational overhead of the tiering service and enhancing overall efficiency.</p>]]></conte [...]
+        </item>
+        <item>
+            <title><![CDATA[Introducing Fluss: Streaming Storage for Real-Time Analytics]]></title>
+            <link>https://fluss.apache.org/blog/fluss-intro/</link>
+            <guid>https://fluss.apache.org/blog/fluss-intro/</guid>
+            <pubDate>Thu, 12 Dec 2024 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p>We have discussed the challenges of using Kafka for real-time analytics in our previous <a href="https://fluss.apache.org/blog/why-fluss/">blog post</a>.
+Today, we are excited to introduce Fluss, a cutting-edge streaming storage system designed to power real-time analytics.
+We are going to explore Fluss's architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-features-of-fluss">Key Features of Fluss<a href="https://fluss.apache.org/blog/fluss-intro/#key-features-of-fluss" class="hash-link" aria-label="Direct link to Key Features of Fluss" title="Direct link to Key Features of Fluss">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="columnar-stream">Columnar Stream<a href="https://fluss.apache.org/blog/fluss-intro/#columnar-stream" class="hash-link" aria-label="Direct link to Columnar Stream" title="Direct link to Columnar Stream">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img1-591c05a64a0e27a33a3ce5776391d92d.jpg" width="3634" height="1188" class="img_ev3q">
+Fluss is, as anticipated, a columnar-based streaming storage, leveraging the <a href="https://arrow.apache.org/docs/python/ipc.html" target="_blank" rel="noopener noreferrer">Apache Arrow IPC Streaming Format</a> for its underlying file storage.
+This enables Fluss to achieve highly efficient column pruning while maintaining millisecond-level streaming reads and writes capabilities.</p>
+<p>The performance benefits of Fluss are evident in its benchmarks against Kafka. In the comparison, the horizontal axis represents the number of columns read, while the vertical axis shows the read throughput. The results clearly demonstrate that Fluss's read performance scales proportionally with the reduction in columns read. For example, when the number of columns is reduced by 90%, Fluss achieves a 10x increase in read throughput.</p>
+<p>A key advantage of Fluss is that column pruning is performed server-side and only the needed column data will be transferred to client-side. This architectural design not only enhances performance but also reduces network costs and resource consumption, making Fluss a highly efficient solution for real-time streaming analytics.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-updates-and-changelog">Real-Time Updates and Changelog<a href="https://fluss.apache.org/blog/fluss-intro/#real-time-updates-and-changelog" class="hash-link" aria-label="Direct link to Real-Time Updates and Changelog" title="Direct link to Real-Time Updates and Changelog">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img2-846063bd092bc571aad305ae7253a190.jpg" width="3484" height="1146" class="img_ev3q">
+Real-time updates and Changelog are very important features required by streaming analytics and Flink.
+At its core, Fluss streaming storage is built on a Log Tablet, with a key-value (KV) index constructed over the Log.
+The relationship between the Log and KV mirrors the concept of stream-table duality:
+updates to the KV generate a changelog that is written to the Log. In the event of a failure, data from the Log is used to recover the KV.</p>
+<p>The KV index is implemented as a Log-Structured Merge (LSM) tree to support large-scale real-time updates,
+and also support partial-update which can be used to build wide tables very efficiently. In addition, the changelog
+generated by KV can be read directly by Flink without additional deduplication cost, which saves a lot of computing resources.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="queryable">Queryable<a href="https://fluss.apache.org/blog/fluss-intro/#queryable" class="hash-link" aria-label="Direct link to Queryable" title="Direct link to Queryable">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img3-f76df2882b217d4aa58efba2edae07d8.jpg" width="3468" height="1148" class="img_ev3q">
+The built-in KV indexes enable high-performance primary key lookups, making Fluss suitable for real-time processing tasks such as dimension table joins. Users can also perform direct data exploration with Fluss, including queries with operations like LIMIT and COUNT, to make debugging data in Fluss very easy.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unification-of-stream-and-lakehouse">Unification of Stream and Lakehouse<a href="https://fluss.apache.org/blog/fluss-intro/#unification-of-stream-and-lakehouse" class="hash-link" aria-label="Direct link to Unification of Stream and Lakehouse" title="Direct link to Unification of Stream and Lakehouse">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img4-80846362d40e3239bfcd92216276b72d.jpg" width="3698" height="1218" class="img_ev3q">
+One of Fluss's standout features is the unification of stream and Lakehouse. In traditional Lambda architecture, you have to duplicate data in both real-time layer and batch layer. While Fluss eliminates this redundancy by unifying "data stored in stream" and "data stored in lake". This unification ensures consistent data and metadata while reducing storage costs and simplifying data workflows.</p>
+<p>At its core, Fluss incorporates a <code>compaction service</code> that ensures seamless integration between stream and lake storage. This service automatically and continuously converts Fluss data into the data lake format.
+A key feature here is called "Shared Data". The Lakehouse storage serves as the historical data layer for the streaming storage, which is optimized for storing long-term data with minute-level latencies. On the other hand, streaming storage serves as the real-time data layer for Lakehouse storage, which is optimized for storing short-term data with millisecond-level latencies.
+The data is shared with each other, and is exposed as a single table.
+For streaming queries on the table, it firstly uses the Lakehouse storage as historical data to have efficient catch-up read performance, and then seamlessly transitions to the streaming storage for real-time data, ensuring no duplicate data is read.
+For batch queries on the table, streaming storage supplements real-time data for Lakehouse storage, enabling second-level freshness for Lakehouse analytics.
+This capability, termed <strong>Union Read</strong>, allows both layers to work in tandem for highly efficient and accurate data access.</p>
+<p>In addition, the automatically converted data lake tables fully adhere to open table format protocols, ensuring compatibility with existing query engines such as Apache Spark, StarRocks, and Trino.
+These engines can directly query data on Lakehouse storage, seamlessly integrating it into users' existing Lakehouse architectures.</p>
+<p>Fluss has already completed integration with Apache Paimon, and integration with Apache Iceberg is underway. This commitment to compatibility ensures that Fluss remains a flexible and powerful component in the modern data stack, bridging real-time and historical data for unified analytics and storage efficiency.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overall-architecture">Overall Architecture<a href="https://fluss.apache.org/blog/fluss-intro/#overall-architecture" class="hash-link" aria-label="Direct link to Overall Architecture" title="Direct link to Overall Architecture">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q">
+This is the overall architecture of Fluss, a cutting-edge streaming storage solution designed specifically for real-time analytics. Fluss operates a server cluster to provide high-performance real-time read and write capabilities, while leveraging remote storage for data tiering to optimize storage costs. Additionally, Fluss integrates seamlessly with Lakehouse architectures, enabling robust query capabilities and a unified data ecosystem.</p>
+<p>The core features of Fluss include real-time streaming reads and writes, column pruning, streaming updates, changelog subscription, real-time lookup queries, and integration of stream and Lakehouse.</p>
+<p>With its robust architecture and comprehensive feature set, Fluss empowers organizations to bridge the gap between real-time and historical data, enabling efficient, scalable, and cost-effective solutions for real-time analytics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="use-case-delta-join">Use Case: Delta Join<a href="https://fluss.apache.org/blog/fluss-intro/#use-case-delta-join" class="hash-link" aria-label="Direct link to Use Case: Delta Join" title="Direct link to Use Case: Delta Join">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img5-c1bedf1a8c60844ffd67f77f722157f9.jpg" width="3650" height="1222" class="img_ev3q">
+The combination of Fluss’s key features lends itself to a highly effective use case: Delta Join. Apache Flink provides a foundational feature called Stream-Stream Join, widely used for building wide tables. However, it is often one of the most challenging operations in Flink.
+Stream-stream joins require maintaining the full upstream data in the state, leading to significant resource consumption. For instance, one of Taobao's largest Flink jobs is a stream-stream join (exposing associated orders), which needs to maintains a state of over 50 TB. This brings many challenges, such as high cost, unstable job, checkpoint timeout, slow restart recovery, etc.</p>
+<p>To address these challenges, we developed a new Flink join operator implementation called Delta Join, leveraging Fluss’s streaming read and secondary-index lookup capabilities. Delta Join operates like a "bilateral driven lookup join", that is:
+when data arrives from the left stream, the right table is queried using the join key;
+when data arrives from the right stream, the left table is queried using the join key.
+This approach eliminates state like Lookup Join, while preserving the semantics of a Stream-Stream Join (any updates on either side triggers an update to the join result).</p>
+<p>We tested Taobao's largest stream-stream join job and migrated to delta join. The results were impressive:</p>
+<ul>
+<li><strong>Eliminate State:</strong> Migrating from stream-stream join to delta join eliminated the need for <code>50 TB</code> join state, leading to enhanced job stability and avoid checkpoint timeouts.</li>
+<li><strong>Resource Optimization:</strong> Flink resource cost decreased by 10x, dropping from <code>2300 CU</code> to <code>200 CU</code>, while maintaining the same throughput.</li>
+<li><strong>Faster Backfilling:</strong> By leveraging Fluss’s Lakehouse integration, we can use the converted Paimon/Iceberg table and Sort-Merge Join in batch mode for data backfilling. Re-processing one day data was reduced from <code>4 hours</code> to <code>30 minutes</code>.</li>
+</ul>
+<p>Besides the numbers, Delta Join's most significant benefit lies in its user flexibility.
+Unlike traditional stream-stream joins, where the state is tightly coupled with Flink job, operating as an opaque 'black box', any job modification requires a costly and time-consuming state rebuild.
+Delta Join addresses this by decoupling the state from the job, facilitating effortless job modifications without the need to reconstruct the state.
+This separation not only boosts backfilling efficiency but also makes state data easily accessible in Fluss for analysis, thereby enhancing business agility and increasing developer productivity.</p>
+<p>To formalize this innovation, we submitted the Delta Join <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-486%3A+Introduce+A+New+DeltaJoin" target="_blank" rel="noopener noreferrer">FLIP-486 proposal</a> to the Apache Flink community. We invite those interested to review and contribute to this exciting advancement.</p>
+<p>Delta Join, powered by Fluss, represents a breakthrough in real-time analytics by significantly reducing resource consumption, enhancing performance, and unlocking flexibility in stateful stream processing.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plan">Future Plan<a href="https://fluss.apache.org/blog/fluss-intro/#future-plan" class="hash-link" aria-label="Direct link to Future Plan" title="Direct link to Future Plan">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img6-3e455650eb36e97091211441c91b48ac.jpg" width="3700" height="1116" class="img_ev3q">
+The future planning for Fluss involves three key aspects, each corresponding to its relationship with three open-source software projects:</p>
+<ul>
+<li><strong>Apache Kafka Protocol Compatibility:</strong> This is aimed at helping existing streaming data migrate to Fluss more effectively.</li>
+<li><strong>Storage for Apache Flink:</strong> Fluss aims to be the best storage for Apache Flink and streaming analytics, offering deep optimization with Flink across the storage, optimizer and execution layer. Delta Join marks our first major step, with many more exciting features on the way.</li>
+<li><strong>Real-Time Data Layer for Apache Iceberg:</strong> By unifying stream and Lakehouse, Fluss is committed to providing a robust real-time data layer for Apache Iceberg and Apache Paimon. This vision includes creating a unified storage solution that supports both real-time and offline analytics.</li>
+</ul>
+<p>There are more exciting work happening in the community. You can check out <a href="https://fluss.apache.org/roadmap/">Fluss Roadmap</a> for a comprehensive future planning.</p>]]></content:encoded>
+        </item>
+        <item>
+            <title><![CDATA[Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics]]></title>
+            <link>https://fluss.apache.org/blog/why-fluss/</link>
+            <guid>https://fluss.apache.org/blog/why-fluss/</guid>
+            <pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p>The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.
+This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
+where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
+value by leveraging real-time insights to drive business impact and enhance decision-making.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg" width="3656" height="1240" class="img_ev3q">
+The evolution of big data technology is becoming increasingly impactful, reshaping the computing architecture landscape.
+The traditional Hive-based data warehouse has given way to modern architectures, starting with Lakehouse models and progressing
+to the Paimon streaming Lakehouse, which has gained significant traction in markets like China and more recently started expanding to EU/US markets.
+The core driver behind these architectural innovations is the need to improve data processing timeliness. The data freshness is improved from traditional
+T+1 (next-day readiness) to T+1 hours, and now T+1 minutes. However, Lakehouse architectures, being file-system-based,
+inherently face minute-level latency as their practical upper limit.</p>
+<p>Yet, many critical use cases, such as search and recommendation systems, advertisement attribution, and anomaly detection, demand second-level latency.
+While big data technologies have advanced significantly, there remains a notable gap: a user-friendly, second-level storage solution tailored for big data analytics.</p>
+<p>In most real-time data scenarios, Apache Kafka has emerged as the go-to second-level storage solution. Its integration with Apache Flink represents the dominant architecture for building real-time data warehouses. However, while widely adopted, this combination presents significant challenges for achieving true real-time analytics at scale. The limitations of using Kafka for big data analytics highlight the need for a more robust solution to meet the demands of modern real-time use ca [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="kafka-falls-short-in-real-time-analytics">Kafka Falls Short in Real-Time Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-falls-short-in-real-time-analytics" class="hash-link" aria-label="Direct link to Kafka Falls Short in Real-Time Analytics" title="Direct link to Kafka Falls Short in Real-Time Analytics">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="no-support-for-updates">No Support for Updates<a href="https://fluss.apache.org/blog/why-fluss/#no-support-for-updates" class="hash-link" aria-label="Direct link to No Support for Updates" title="Direct link to No Support for Updates">​</a></h3>
+<p>The first significant challenge with Apache Kafka is its lack of support for updates, a critical feature for data warehouses. In data warehousing, updates are often essential to correct or amend data. However, Kafka's inability to handle updates results in duplicate records for the same primary key. When consumed by a computing engine, this duplication necessitates costly deduplication processes to ensure accurate results.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg" width="3656" height="1172" class="img_ev3q"></p>
+<p>In Apache Flink, for instance, handling this issue requires materializing all upstream data in state, which is resource-intensive. Every time data is consumed from Kafka, the deduplication process incurs a substantial overhead, significantly increasing computational and storage costs. This limitation not only impacts performance but also hampers the reusability of Kafka-stored data for downstream business processes.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="lack-of-querying-capabilities">Lack of Querying Capabilities<a href="https://fluss.apache.org/blog/why-fluss/#lack-of-querying-capabilities" class="hash-link" aria-label="Direct link to Lack of Querying Capabilities" title="Direct link to Lack of Querying Capabilities">​</a></h3>
+<p>The second major limitation of Apache Kafka is hard to debug, primarily due to its lack of native querying capabilities. In data warehousing, querying is a fundamental feature that facilitates troubleshooting and ad-hoc analysis to understand data trends. Unfortunately, Kafka operates much like a black box, making it challenging to perform these critical tasks without additional tools or layers.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg" width="3696" height="1214" class="img_ev3q"></p>
+<p>To address this limitation, the industry has adopted two primary approaches, each with its own trade-offs:</p>
+<ul>
+<li><strong>Synchronizing Kafka Data to an OLAP System:</strong> This allows for querying data using the OLAP system’s capabilities. However, this approach introduces additional components into the architecture, increasing both complexity and cost. Moreover, it risks data inconsistencies due to synchronization delays.</li>
+<li><strong>Querying Kafka Directly Using Trino:</strong> While Trino can query Kafka, it relies solely on full scans, which are inefficient for large-scale operations. For instance, a simple query on just 1GB of Kafka data can take up to one minute, rendering it impractical for large datasets or real-time requirements.</li>
+</ul>
+<p>These limitations make Kafka unsuitable for efficient and scalable data exploration in modern data warehousing workflows.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="difficulty-with-data-backfilling">Difficulty with Data Backfilling<a href="https://fluss.apache.org/blog/why-fluss/#difficulty-with-data-backfilling" class="hash-link" aria-label="Direct link to Difficulty with Data Backfilling" title="Direct link to Difficulty with Data Backfilling">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg" width="3526" height="1210" class="img_ev3q">
+The third significant issue with Apache Kafka is processing historical data, also known as data backfilling, a common requirement in data warehousing.
+For instance, in logistics, it usually needs to process and analyze historical data from several months ago. However, Kafka only retain data for a few days due to the high cost of storage.
+Even though Kafka community has introduced <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage" target="_blank" rel="noopener noreferrer">Tiered Storage</a> to address the long-term data issue, it still has limitations.
+Reading historical data still require all the data to pass through Kafka brokers, which can lead to brokers unstable and <a href="https://www.warpstream.com/blog/tiered-storage-wont-fix-kafka#increased-complexity-and-operational-burden" target="_blank" rel="noopener noreferrer">disrupt live traffics</a>.</p>
+<p>These limitations highlight Kafka’s inefficiency as a solution for data backfilling in large-scale and long-term analytical use cases, further underscoring the need for more robust alternatives in real-time data warehousing.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="excessive-network-costs">Excessive Network Costs<a href="https://fluss.apache.org/blog/why-fluss/#excessive-network-costs" class="hash-link" aria-label="Direct link to Excessive Network Costs" title="Direct link to Excessive Network Costs">​</a></h3>
+<p>The final major challenge with Apache Kafka lies in its high network costs, which account for an estimated 88% of Kafka's overall operational expenses. In data warehousing, the "one write, multiple read" pattern is common, with each consumer often requiring only a subset of the data. However, Kafka's design mandates that consumers read the entire dataset, regardless of how much is actually needed.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg" width="3636" height="1206" class="img_ev3q"></p>
+<p>For instance, among the tens of thousands of Flink SQL jobs at Alibaba, only 49% of the upstream columns are utilized per job on average. Despite this, consumers must read all the columns and pay 100% networking cost, which is highly inefficient and wasteful.</p>
+<p>In summary, using Kafka for real-time analytics presents several critical issues: <strong>(1) lack of support for updates</strong>, <strong>(2) absence of querying capabilities</strong>, <strong>(3) difficulty with data backfilling</strong>, and <strong>(4) excessive network costs</strong>. These limitations make the combination of Flink and Kafka less than ideal for real-time data warehousing.
+But why Kafka lacks these abilities? Is it possible to add the abilities to Kafka?</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="kafka-is-not-designed-for-analytics">Kafka is not designed for Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-is-not-designed-for-analytics" class="hash-link" aria-label="Direct link to Kafka is not designed for Analytics" title="Direct link to Kafka is not designed for Analytics">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg" width="3620" height="1148" class="img_ev3q">
+The root cause of these challenges lies in the fundamental design philosophy of Kafka: <strong>Kafka is designed for streaming events, NOT for streaming analytics</strong>. Each system has its own focus and strengths, and Kafka's design is optimized for message queue scenarios rather than analytical workloads.</p>
+<p>In Kafka, data is typically stored in a row-oriented format, such as CSV, JSON, or Avro.
+While this is highly efficient for use cases involving message streaming, it becomes a bottleneck for analytical scenarios.
+Data analysis requires handling large volumes of data, and therefore heavily relies on data skipping capabilities from storage, such as column pruning and predicate pushdown.
+For this reason, columnar storage is far better suited for analytical workloads, whereas Kafka's row-based storage is not designed to meet these demands effectively.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-fluss">Introducing Fluss<a href="https://fluss.apache.org/blog/why-fluss/#introducing-fluss" class="hash-link" aria-label="Direct link to Introducing Fluss" title="Direct link to Introducing Fluss">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg" width="3644" height="1210" class="img_ev3q">
+When visualizing the data ecosystem as a four-quadrant matrix, an intriguing pattern emerges.
+The left side of the matrix represents operational systems, while the right side represents analytical systems.
+The top half is dedicated to stream storage, and the bottom half to table storage.
+In operational systems, both databases and stream storage predominantly use row-based formats, as row storage is more efficient for transactional workloads. Conversely, in analytical systems like Apache Iceberg and Snowflake, columnar storage is preferred due to its superior performance in analytical scenarios.</p>
+<p>Interestingly, the upper-right quadrant of the matrix remains empty, indicating a significant gap in the market: a streaming storage for analytical scenarios. Unsurprisingly, such a storage would likely adopt a columnar format to effectively address the needs of real-time analytics.</p>
+<p>To fill the gap and resolve problems in Flink and streaming analytics, we embarked on a journey two years ago to create a streaming storage. We named the project "<strong>FL</strong>ink <strong>U</strong>nified <strong>S</strong>treaming <strong>S</strong>torage", and from its initials, we derived the name <strong>Fluss</strong>.
+<img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg" width="3700" height="946" class="img_ev3q">
+Interestingly, Flink is derived from the German word for "<strong>agile</strong>", and Fluss, which translates to "<strong>river</strong>" in German, resonates deeply with the project’s vision.
+It symbolizes the streaming data is continuously flowing, distributing and converging into data lakes, just like a river.
+The launch of Fluss coincides with Flink's 10th anniversary, making it a fitting tribute to the project’s heritage and its enduring contribution to the streaming data landscape.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q"></p>
+<p>Learn more details about Fluss in the next <a href="https://fluss.apache.org/blog/fluss-intro/">blog post</a>, where we will delve deeper into Fluss's architecture, design principles, key features, and explore how it addresses the challenges of using Kafka for real-time analytics.</p>]]></content:encoded>
+        </item>
+        <item>
+            <title><![CDATA[Fluss is Now Open Source]]></title>
+            <link>https://fluss.apache.org/blog/fluss-open-source/</link>
+            <guid>https://fluss.apache.org/blog/fluss-open-source/</guid>
+            <pubDate>Fri, 29 Nov 2024 00:00:00 GMT</pubDate>
+            <description><![CDATA[<!--]]></description>
+            <content:encoded><![CDATA[<p>Earlier this year at Flink Forward 2024 Berlin we <a href="https://www.ververica.com/blog/introducing-fluss" target="_blank" rel="noopener noreferrer">announced Fluss</a> and today we are thrilled to announce open-sourcing the project.
+Fluss is a <strong>streaming storage system</strong> designed to power real-time analytics. It aspires to change how organizations approach real-time data by acting as the <strong>real-time data layer</strong> for the Lakehouse.
+Its cutting-edge design enables businesses to achieve <strong>sub-second latency</strong>, <strong>high throughput</strong>, and <strong>cost efficiency</strong> for data analytics, making it the ideal solution for modern data-driven applications.</p>
+<p>We have historically invested a lot of effort into advancing the data streaming ecosystem, being major contributors to <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer">Apache Flink®</a>, <a href="https://www.ververica.com/blog/ververica-donates-flink-cdc-empowering-real-time-data-integration-for-the-community" target="_blank" rel="noopener noreferrer">Apache Flink CDC</a>, and <a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">A [...]
+As part of our commitment, Fluss is now open source under the Apache 2.0 license and is available on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a>, inviting users to create the next generation of real-time architectures.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/ff_os-2589690ef465b4d2c76c7861438ad18b.png" width="3840" height="1286" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-streaming-storage-for-the-lakehouse-era">Real-Time Streaming Storage for the Lakehouse Era<a href="https://fluss.apache.org/blog/fluss-open-source/#real-time-streaming-storage-for-the-lakehouse-era" class="hash-link" aria-label="Direct link to Real-Time Streaming Storage for the Lakehouse Era" title="Direct link to Real-Time Streaming Storage for the Lakehouse Era">​</a></h3>
+<p>The need for real-time insights has grown exponentially - especially with the recent explosion of AI. Still, the tools and architectures we’ve relied on for years weren’t designed with streaming-first analytical workflows in mind. Traditional architectures often involve complex integrations between message queues like Kafka, processing engines like Flink, and storage systems that are more batch-oriented than real-time. This approach not only increases latency but also adds operational [...]
+<p>At its core, Fluss combines the best of <strong>streaming</strong> and <strong>analytical storage</strong>. Its <strong>columnar stream</strong> design is optimized for real-time analytical queries, enabling lightning-fast data access and updates. With support for <strong>real-time data ingestion</strong> and integrations with <strong>real-time lakehouse solutions</strong> such as Paimon, Fluss ensures that data is always fresh and ready for analysis, making it ideal for applications  [...]
+<p>A critical aspect of Fluss is also its deep integration with Apache FlinkⓇ the de facto gold standard for stream processing. This integration combines a <strong>stream processor</strong> and a <strong>real-time storage layer</strong>, eliminating the need for separate message queues like Kafka in analytics-focused architectures. Fluss simplifies pipelines, reduces costs, and improves performance for <strong>high-throughput</strong>, <strong>low-latency analytics</strong>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="building-the-future-of-analytics-with-fluss">Building the Future of Analytics with Fluss<a href="https://fluss.apache.org/blog/fluss-open-source/#building-the-future-of-analytics-with-fluss" class="hash-link" aria-label="Direct link to Building the Future of Analytics with Fluss" title="Direct link to Building the Future of Analytics with Fluss">​</a></h3>
+<p>Fluss is designed to support a wide range of use cases, from powering dashboards and monitoring systems to enabling <strong>streaming ETL</strong> and <strong>real-time intelligence pipelines</strong> for the modern AI era. Its ability to provide real-time updates makes it a natural fit for <strong>streaming data warehouses</strong>, where fresh data is essential for decision-making.</p>
+<p>By serving as the real-time data layer on the Lakehouse, Fluss supports both <strong>streaming-first</strong> architectures and <strong>unified batch and stream processing</strong>. This flexibility should be appealing for organizations looking to modernize their analytics stack while keeping costs low and performance high.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="whats-next-for-fluss">What’s Next for Fluss?<a href="https://fluss.apache.org/blog/fluss-open-source/#whats-next-for-fluss" class="hash-link" aria-label="Direct link to What’s Next for Fluss?" title="Direct link to What’s Next for Fluss?">​</a></h3>
+<p>Open-sourcing Fluss is just the beginning and it will be donated to the Apache Software Foundation (ASF). We’re committed to working closely with the community to expand its capabilities and adoption. You can find more information about the project’s roadmap <a href="https://alibaba.github.io/fluss-docs/roadmap/" target="_blank" rel="noopener noreferrer">here</a>.</p>
+<p><img decoding="async" loading="lazy" alt="Banner" src="https://fluss.apache.org/assets/images/banner-5523bd3a3f5145b15e36c6bfb46796be.png" width="1998" height="1001" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="join-the-journey">Join the Journey<a href="https://fluss.apache.org/blog/fluss-open-source/#join-the-journey" class="hash-link" aria-label="Direct link to Join the Journey" title="Direct link to Join the Journey">​</a></h3>
+<p>We invite you to join us and help grow our community around the project. Explore Fluss, contribute to its development, and build the next generation of data pipelines.</p>
+<p>Make sure to keep an eye on the project, give it a try and if you like it, don’t forget to give it some ❤️ via ⭐ on <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub</a></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started">Getting Started<a href="https://fluss.apache.org/blog/fluss-open-source/#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started">​</a></h3>
+<ul>
+<li>Visit the <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">GitHub repository</a>.</li>
+<li>Check out the <a href="https://alibaba.github.io/fluss-docs/docs/quickstart/flink/" target="_blank" rel="noopener noreferrer">quickstart guide</a>.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="additional-resources">Additional Resources<a href="https://fluss.apache.org/blog/fluss-open-source/#additional-resources" class="hash-link" aria-label="Direct link to Additional Resources" title="Direct link to Additional Resources">​</a></h3>
+<ul>
+<li>Announcement Blog Post: <a href="https://www.ververica.com/blog/introducing-fluss" target="_blank" rel="noopener noreferrer">Introducing Fluss: Unified Streaming Storage For Next-Generation Data Analytics</a></li>
+<li>Flink Forward Keynote Announcement: <a href="https://www.ververica.academy/courses/3d163483-5040-4d60-b5b3-755c3277edf7/activities/1af290fd-05bc-4fab-90be-6ed4628399be" target="_blank" rel="noopener noreferrer">The Future - Introducing Fluss</a></li>
+<li>Flink Forward Fluss Presentation: <a href="https://www.ververica.academy/courses/3d163483-5040-4d60-b5b3-755c3277edf7/activities/a366d118-6c53-47ef-91bb-289fc2462b07" target="_blank" rel="noopener noreferrer">Is Kafka the Best Storage for Streaming Analytics?</a></li>
+</ul>]]></content:encoded>
+        </item>
+    </channel>
+</rss>
\ No newline at end of file
diff --git a/blog/rss.xsl b/blog/rss.xsl
new file mode 100644
index 0000000..e9695b2
--- /dev/null
+++ b/blog/rss.xsl
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsl:stylesheet
+  version="3.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:atom="http://www.w3.org/2005/Atom">
+  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
+
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+      <head>
+        <title>RSS Feed | <xsl:value-of select="rss/channel/title" /></title>
+        <link rel="stylesheet" href="rss.css" />
+      </head>
+      <body>
+        <main>
+          <div class="description">
+            <div class="info">
+              <strong>This is an RSS feed</strong>. Subscribe by copying the URL
+              from the address bar into your newsreader. Visit
+              <a href="https://aboutfeeds.com/">About Feeds</a> to learn more
+              and get started. It’s free.
+            </div>
+            <h1>
+              <div class="rss-icon">
+                <svg
+                  version="1.1"
+                  id="Capa_1"
+                  xmlns="http://www.w3.org/2000/svg"
+                  xmlns:xlink="http://www.w3.org/1999/xlink"
+                  viewBox="0 0 455.731 455.731"
+                  xml:space="preserve">
+                  <g>
+                    <rect
+                      x="0"
+                      y="0"
+                      style="fill: #f78422"
+                      width="455.731"
+                      height="455.731"
+                    />
+                    <g>
+                      <path
+                        style="fill: #ffffff"
+                        d="M296.208,159.16C234.445,97.397,152.266,63.382,64.81,63.382v64.348
+                c70.268,0,136.288,27.321,185.898,76.931c49.609,49.61,76.931,115.63,76.931,185.898h64.348
+                C391.986,303.103,357.971,220.923,296.208,159.16z"
+                      />
+                      <path
+                        style="fill: #ffffff"
+                        d="M64.143,172.273v64.348c84.881,0,153.938,69.056,153.938,153.939h64.348
+                C282.429,270.196,184.507,172.273,64.143,172.273z"
+                      />
+                      <circle
+                        style="fill: #ffffff"
+                        cx="109.833"
+                        cy="346.26"
+                        r="46.088"
+                      />
+                    </g>
+                  </g>
+                </svg>
+              </div>
+              <xsl:value-of select="rss/channel/title" />
+            </h1>
+            <p class="blog-description">
+              <xsl:value-of select="rss/channel/description" />
+            </p>
+          </div>
+          <h2>Recent Posts</h2>
+          <div class="blog-posts">
+            <xsl:for-each select="rss/channel/item">
+              <div class="blog-post">
+                <h3><a href="{link}"><xsl:value-of select="title" /></a></h3>
+                <div class="blog-post-date">
+                  Published on <xsl:value-of select="substring(pubDate,0,17)" />
+                </div>
+                <div class="blog-post-description">
+                  <xsl:value-of select="description" />
+                </div>
+              </div>
+            </xsl:for-each>
+          </div>
+        </main>
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>
diff --git a/blog/tags/index.html b/blog/tags/index.html
new file mode 100644
index 0000000..dda2362
--- /dev/null
+++ b/blog/tags/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Tags | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/blog/tags [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/releases/index.html b/blog/tags/releases/index.html
new file mode 100644
index 0000000..6c2589c
--- /dev/null
+++ b/blog/tags/releases/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">2 posts tagged with &quot;releases&quot; | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>🌊 We are excited to announce the official release of <strong>Fluss 0.7</strong>!</p>
+<p>This version has undergone extensive improvements in <strong>stability</strong>, <strong>architecture</strong>, <strong>performance optimization</strong>, and <strong>security</strong>, further enhancing its readiness for <strong>production environments</strong>. Over the past three months, we have completed more than <strong>250 commits</strong>, making this release a significant milestone toward becoming a mature, production-grade streaming storage platform.</p></div><footer class=" [...]
+three months of intensive development, bringing together the expertise and efforts of 45 contributors worldwide,
+with more than 200 code commits completed. Our heartfelt thanks go out to every contributor for their invaluable support!</p>
+<p><img decoding="async" loading="lazy" alt="Release Announcement" src="/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png" width="1224" height="440" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a rel="tag" title="Content related release announcement." class="tag_zVej tagRegular_sFm0" href="/blog/tags/releases/">releases</a></li></ul></div><div class= [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/unified-streaming-lakehouse/index.html b/blog/unified-streaming-lakehouse/index.html
new file mode 100644
index 0000000..4094bbc
--- /dev/null
+++ b/blog/unified-streaming-lakehouse/index.html
@@ -0,0 +1,198 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Towards A Unified Streaming &amp; Lakehouse Architecture | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property= [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss is designed to address the demands of real-time analytics with the following key capabilities:</p>
+<ul>
+<li><strong>Real-Time Stream Reading and Writing:</strong> Supports millisecond-level end-to-end latency.</li>
+<li><strong>Columnar Stream:</strong> Optimizes storage and query efficiency.</li>
+<li><strong>Streaming Updates:</strong> Enables low-latency updates to data streams.</li>
+<li><strong>Changelog Generation:</strong> Supports changelog generation and consumption.</li>
+<li><strong>Real-Time Lookup Queries:</strong> Facilitates instant lookup queries on primary keys.</li>
+<li><strong>Streaming &amp; Lakehouse Unification:</strong> Seamlessly integrates streaming and lakehouse storage for unified data processing.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-unified-streaming--lakehouse-architecture">Fluss Unified Streaming &amp; Lakehouse Architecture<a href="#fluss-unified-streaming--lakehouse-architecture" class="hash-link" aria-label="Direct link to Fluss Unified Streaming &amp; Lakehouse Architecture" title="Direct link to Fluss Unified Streaming &amp; Lakehouse Architecture">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img1-163f1412a1ed7b661686302df5bf9edb.png" width="1866" height="635" class="img_ev3q">
+The Fluss architecture is designed to provide millisecond-level end-to-end latency, ensuring high-performance real-time data writing and reading. A core component of this architecture is the <strong>Tiering Service</strong>, which continuously offloads data in Fluss into a standard lakehouse format, such as <code>Apache Paimon</code> or <code>Apache Iceberg</code>. This tiering ensures that external query engines can directly analyze data in the Lakehouse format, enabling efficient batch [...]
+In this architecture:</p>
+<ul>
+<li><strong>Latest Data in Fluss:</strong> Fluss stores the most recent, high-fidelity data for real-time analytics.</li>
+<li><strong>Historical Data in Paimon:</strong> Older data is compacted and stored in Apache Paimon for large-scale historical analysis.</li>
+</ul>
+<p>By leveraging Apache Flink, the integration of Fluss and Paimon supports Union Reads, which combine real-time data in Fluss with historical data in Paimon. This enables analytical queries with second-level freshness, allowing businesses to benefit from up-to-date insights while maintaining access to extensive historical datasets.</p>
+<p>The Streaming/Lakehouse unification design of Fluss provides:</p>
+<ul>
+<li><strong>Unified Architecture:</strong> Simplifies the Lakehouse ecosystem by combining the strengths of streaming and Lakehouse storage.</li>
+<li><strong>Enhanced Real-Time Capabilities:</strong> Millisecond-level latency ensures data is always fresh for critical use cases.</li>
+<li><strong>Seamless Compatibility:</strong> Native support for standard lakehouse formats ensures interoperability with existing analytics engines.</li>
+<li><strong>Optimized Data Management:</strong> Combines real-time and historical data seamlessly for comprehensive analytics workflows.</li>
+</ul>
+<p>Fluss is <strong>a next-generation approach to streaming storage, purpose-built to complement Lakehouse architectures</strong> and drive the adoption of a streaming and Lakehouse unification across industries.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unified-metadata">Unified metadata<a href="#unified-metadata" class="hash-link" aria-label="Direct link to Unified metadata" title="Direct link to Unified metadata">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img2-86b0eb7b0f26884f8ead16dc4a8db648.png" width="1842" height="732" class="img_ev3q"></p>
+<p>In traditional architectures, streaming storage systems like Kafka and Lakehouse storage solutions like Apache Paimon operated as distinct entities, each maintaining its own metadata. For computing engines such as Apache Flink, this separation presented two significant challenges:</p>
+<ol>
+<li><strong>Dual Catalogs:</strong> Users were required to create and manage two separate catalogs—one for streaming storage and another for lake storage.</li>
+<li><strong>Manual Switching:</strong> Accessing data involved manually switching between catalogs to determine whether to query stream storage or lake storage, resulting in operational complexity and inefficiencies.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="unified-access-in-fluss">Unified Access in Fluss<a href="#unified-access-in-fluss" class="hash-link" aria-label="Direct link to Unified Access in Fluss" title="Direct link to Unified Access in Fluss">​</a></h3>
+<p>In the Fluss, although Fluss and Paimon still maintain independent metadata, they expose a unified catalog and a single table abstraction to the computing engine, such as Apache Flink. This unified approach offers several key advantages:</p>
+<ul>
+<li><strong>Simplified Data Access:</strong> Users can seamlessly access both Lakehouse storage (Paimon) and streaming storage (Fluss) through a single catalog, eliminating the need to manage or switch between separate catalogs.</li>
+<li><strong>Integrated Querying:</strong> The unified table abstraction allows direct access to real-time data in Fluss and historical data in Paimon. For scenarios requiring both, users can leverage <code>Union Reads</code>, combining data from Fluss and Paimon to enable comprehensive analytics with second-level data freshness.</li>
+<li><strong>Operational Efficiency:</strong> By presenting a cohesive interface, the architecture reduces operational complexity, making it easier for users to work with real-time and historical data within a single workflow.</li>
+</ul>
+<p>This unified approach streamlines the interaction between computing engines and storage layers, enhancing both usability and productivity while supporting the high-performance demands of modern analytics workflows.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="alignment-of-data-distribution">Alignment of Data Distribution<a href="#alignment-of-data-distribution" class="hash-link" aria-label="Direct link to Alignment of Data Distribution" title="Direct link to Alignment of Data Distribution">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img3-d0ea956fb83807118c4d522bdd7b30f4.png" width="1777" height="856" class="img_ev3q"></p>
+<p>In the Fluss, the data distribution between Fluss and Lakehouse storage (e.g., Apache Paimon) is strictly aligned. Fluss supports partitioned tables and buckets, and its bucketing algorithm is fully consistent with Paimon’s. This ensures that a given piece of data is always allocated to the same bucket in both systems, creating a one-to-one correspondence between Fluss buckets and Paimon buckets.
+This strong consistency in data distribution provides two significant benefits:</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-elimination-of-shuffle-overhead-during-tiering">1. Elimination of Shuffle Overhead During Tiering<a href="#1-elimination-of-shuffle-overhead-during-tiering" class="hash-link" aria-label="Direct link to 1. Elimination of Shuffle Overhead During Tiering" title="Direct link to 1. Elimination of Shuffle Overhead During Tiering">​</a></h4>
+<p>When tiering data from Fluss into Paimon format:</p>
+<ul>
+<li>A Fluss bucket (e.g., bucket1) can be tiered directly into the corresponding Paimon bucket (bucket1).</li>
+<li>There is no need to read data from a Fluss bucket, calculate which Paimon bucket each piece of data belongs to, and then write it to the appropriate Paimon bucket.</li>
+</ul>
+<p>By bypassing this intermediate redistribution step, the architecture avoids costly shuffle overhead, significantly improving compaction efficiency.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-prevention-of-data-inconsistencies">2. Prevention of Data Inconsistencies<a href="#2-prevention-of-data-inconsistencies" class="hash-link" aria-label="Direct link to 2. Prevention of Data Inconsistencies" title="Direct link to 2. Prevention of Data Inconsistencies">​</a></h4>
+<p>Data consistency is maintained through the use of an identical bucketing algorithm in both Fluss and Paimon. This algorithm calculates the bucket assignment for each piece of data as follows:</p>
+<blockquote>
+<p>bucket_id = hash(row) % bucket_num</p>
+</blockquote>
+<p>By employing the same hash function and algorithm, Fluss and Paimon ensure consistent bucket assignment. If differing algorithms were used, inconsistencies would arise. For example:</p>
+<ul>
+<li>For a primary key table, a data row a might be assigned to bucket1 in Fluss but to bucket2 in Paimon.</li>
+<li>During tiering, if rows were mistakenly placed in bucket1 in Paimon (per Fluss’s assignment), users would fail to locate the data in Paimon due to the mismatch.</li>
+</ul>
+<p>By maintaining strong alignment in data distribution, the architecture eliminates this risk, ensuring data consistency across Fluss and Paimon while simplifying compaction workflows. This alignment underscores the robustness and efficiency of the Fluss unification design.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-reading-more-efficient-data-tracing">Streaming Reading: More Efficient Data Tracing<a href="#streaming-reading-more-efficient-data-tracing" class="hash-link" aria-label="Direct link to Streaming Reading: More Efficient Data Tracing" title="Direct link to Streaming Reading: More Efficient Data Tracing">​</a></h3>
+<p>In the Fluss, historical data resides in Lakehouse storage, while real-time data is maintained in Fluss. During streaming reads, this architecture enables a seamless combination of historical and real-time data access:</p>
+<ul>
+<li><strong>Historical Data Access:</strong> Fluss retrieves historical data directly from the Lakehouse storage, leveraging its inherent advantages, such as:<!-- -->
+<ul>
+<li><strong>Efficient Filter Pushdown:</strong> Enables query engines to apply filtering conditions at the storage layer, reducing the amount of data read and improving performance.</li>
+<li><strong>Column Pruning:</strong> Allows retrieval of only the necessary columns, optimizing data transfer and query efficiency.</li>
+<li><strong>High Compression Ratios:</strong> Minimizes storage overhead while maintaining fast retrieval speeds.</li>
+</ul>
+</li>
+<li><strong>Real-Time Data Access:</strong> Fluss concurrently reads the latest real-time data from its own storage, ensuring up-to-the-millisecond freshness.</li>
+</ul>
+<p>By combining the strengths of Lakehouse storage for efficient historical data retrieval and Fluss for real-time streaming data, this architecture delivers a highly performant and scalable solution for streaming read scenarios. This integration ensures that users benefit from low-latency data freshness and optimized query performance across both historical and real-time datasets.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="batch-reading-data-freshness-in-seconds">Batch Reading: Data Freshness in Seconds<a href="#batch-reading-data-freshness-in-seconds" class="hash-link" aria-label="Direct link to Batch Reading: Data Freshness in Seconds" title="Direct link to Batch Reading: Data Freshness in Seconds">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img4-06aab50ae6bb5a5df5cc0e2658815c1f.png" width="1770" height="747" class="img_ev3q"></p>
+<p>Historical data is stored in the Lakehouse, and real-time data is stored in Fluss. In batch reading scenarios, computing engines (such as Flink) can perform union reading of data in Fluss and lake storage to achieve analysis of data freshness in seconds.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-flink-and-fluss">Apache Flink and Fluss<a href="#apache-flink-and-fluss" class="hash-link" aria-label="Direct link to Apache Flink and Fluss" title="Direct link to Apache Flink and Fluss">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img5-36f56d95c22f50252c6a5caedbfed1d4.png" width="1761" height="730" class="img_ev3q">
+Fluss exposes a unified API to Flink users, allowing them to choose whether to use union reads or read-only reads on the Lakehouse, using the following SQL:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>This reads the complete data of the orders table and Flink will union read the data in Fluss and the Lakehouse.
+If the user only needs to read data on the data lake, you can add the <code>$lake</code> suffix after the table to be read. The SQL is as follows</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE" [...]
+<p>For scenarios where data on a data lake is read-only, Fluss inherits all the optimizations and capabilities of the lake format as a Flink source, such as runtime filters, system table queries, and time travel.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="benefits-of-the-unified-architecture">Benefits Of The Unified Architecture<a href="#benefits-of-the-unified-architecture" class="hash-link" aria-label="Direct link to Benefits Of The Unified Architecture" title="Direct link to Benefits Of The Unified Architecture">​</a></h2>
+<p>Next, using Apache Paimon as an example, we will illustrate the advantages of using Fluss to build a unified architecture. We will highlight how Fluss enhances the capabilities of Paimon, creating a unified solution that combines the strengths of both systems for efficient real-time and historical data processing.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="second-level-timeliness">Second-level Timeliness<a href="#second-level-timeliness" class="hash-link" aria-label="Direct link to Second-level Timeliness" title="Direct link to Second-level Timeliness">​</a></h3>
+<p>In Apache Paimon, data visibility is traditionally determined by the Flink checkpoint interval, which typically operates at one minute-level granularity. However, by integrating Fluss with Paimon to build unfiied architecture, this dependency is eliminated.</p>
+<p>With this unification, data becomes visible immediately upon entering Fluss, significantly improving data timeliness to second-level latency. This enhancement ensures that real-time insights can be derived more quickly, meeting the demands of time-sensitive applications while maintaining seamless access to both historical and real-time data.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="consistent-data-freshness-across-all-layers">Consistent Data Freshness Across All Layers<a href="#consistent-data-freshness-across-all-layers" class="hash-link" aria-label="Direct link to Consistent Data Freshness Across All Layers" title="Direct link to Consistent Data Freshness Across All Layers">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img6-5fdec641b3032d1c0f236cf990d914da.png" width="1570" height="782" class="img_ev3q">
+In the process of building a data warehouse, it is common to organize and manage data by layering, such as Bronze, Silver and Gold following the medallion architecture. As data flows through these layers, maintaining data freshness becomes a critical consideration.</p>
+<p>When Paimon is used as the sole storage solution for each layer, data visibility depends on the Flink checkpoint interval. This introduces cumulative delays:</p>
+<ul>
+<li>The changelog for a given layer becomes visible only after the completion of a Flink checkpoint.</li>
+<li>As this changelog propagates to subsequent layers, the data freshness delay increases with each checkpoint interval.</li>
+</ul>
+<p>For example, with a Flink checkpoint interval of 1 minute:</p>
+<ul>
+<li>The Bronze layer experiences 1-minute delay.</li>
+<li>The Silver layer adds another 1-minute delay, totaling 2 minutes.</li>
+<li>The Gold layer adds yet another 1-minute delay, resulting in a cumulative 3-minute delay.</li>
+</ul>
+<p>With Fluss and Paimon though we get:</p>
+<ul>
+<li><strong>Immediate Data Visibility:</strong> Data in Fluss becomes visible immediately upon ingestion, without waiting for a Flink checkpoint to complete. The changelog is instantly transferred to the next layer.</li>
+<li><strong>Consistent Data Freshness:</strong> The data freshness across all layers is consistent and measured in seconds, eliminating cumulative delays.</li>
+</ul>
+<p>Additionally, if the Fluss Tiering Service is configured with a tiering cycle of 1 minute, the data delay for Paimon storage at each layer is limited to 1 minute, regardless of the number of layers. This ensures:</p>
+<ul>
+<li><strong>Real-Time Data Processing:</strong> Layers can propagate and process data with minimal delay.</li>
+<li><strong>Optimized Streaming &amp; Lakehouse Unification:</strong> The architecture balances the strengths of real-time and batch-oriented storage.</li>
+</ul>
+<p>This integration significantly improves the performance and usability of layered data warehouses, enabling faster insights and better responsiveness to real-time demands.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="more-efficient-and-higher-throughput-changelog-generation">More efficient and higher throughput changelog generation<a href="#more-efficient-and-higher-throughput-changelog-generation" class="hash-link" aria-label="Direct link to More efficient and higher throughput changelog generation" title="Direct link to More efficient and higher throughput changelog generation">​</a></h3>
+<p>In Apache Paimon, there are currently two commonly used methods for generating changelogs (excluding the Input Producer, which requires more stringent data source requirements and is not considered here):</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="lookup-changelog-producer">Lookup Changelog Producer<a href="#lookup-changelog-producer" class="hash-link" aria-label="Direct link to Lookup Changelog Producer" title="Direct link to Lookup Changelog Producer">​</a></h4>
+<ul>
+<li><strong>Advantages:</strong> Offers high timeliness for generating changelogs.</li>
+<li><strong>Challenges:</strong> Consumes significant computational resources, leading to higher operational costs.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="full-compaction-producer">Full Compaction Producer:<a href="#full-compaction-producer" class="hash-link" aria-label="Direct link to Full Compaction Producer:" title="Direct link to Full Compaction Producer:">​</a></h4>
+<ul>
+<li><strong>Advantages:</strong> Does not require additional resource consumption, as changelogs are generated during the Full Compaction process.</li>
+<li><strong>Challenges:</strong> Suffers from poor timeliness, as changelog generation is delayed until a Full Compaction is triggered, which typically occurs after several checkpoints.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-and-paimon-optimizing-changelog-generation">Fluss and Paimon: Optimizing Changelog Generation<a href="#fluss-and-paimon-optimizing-changelog-generation" class="hash-link" aria-label="Direct link to Fluss and Paimon: Optimizing Changelog Generation" title="Direct link to Fluss and Paimon: Optimizing Changelog Generation">​</a></h4>
+<p>The Fluss and Paimon architecture strikes a balance between timeliness and performance in changelog generation:</p>
+<ul>
+<li><strong>Changelog Timeliness:</strong> Fluss generates changelogs in seconds, ensuring near real-time visibility of data changes.</li>
+<li><strong>Efficient Conversion:</strong> The Fluss Tiering Service efficiently writes Fluss changelogs directly into the Paimon changelog format. This conversion process is highly optimized, avoiding resource-intensive operations such as lookups. Instead, it relies on direct read-and-write operations, significantly reducing overhead.</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="key-benefits-of-fluss-and-paimon-changelog-generation">Key Benefits of Fluss and Paimon Changelog Generation<a href="#key-benefits-of-fluss-and-paimon-changelog-generation" class="hash-link" aria-label="Direct link to Key Benefits of Fluss and Paimon Changelog Generation" title="Direct link to Key Benefits of Fluss and Paimon Changelog Generation">​</a></h4>
+<ol>
+<li><strong>Improved Timeliness:</strong> Near real-time changelog generation ensures data freshness and faster insights.</li>
+<li><strong>Resource Efficiency:</strong> By eliminating the need for computationally expensive operations, the architecture reduces resource consumption while maintaining high performance.</li>
+<li><strong>Seamless Integration:</strong> The direct compatibility between Fluss changelogs and Paimon changelog formats simplifies the process, enhancing system efficiency and reducing operational complexity.</li>
+</ol>
+<p>This architecture provides an elegant solution for use cases that demand both low-latency data updates and optimized resource utilization, making it a robust choice for modern data processing needs.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enabling-multi-writer-support-for-paimon-partial-updates">Enabling Multi-Writer Support for Paimon Partial Updates<a href="#enabling-multi-writer-support-for-paimon-partial-updates" class="hash-link" aria-label="Direct link to Enabling Multi-Writer Support for Paimon Partial Updates" title="Direct link to Enabling Multi-Writer Support for Paimon Partial Updates">​</a></h3>
+<p>Partial updates are a critical feature in Apache Paimon, particularly for managing large, wide tables. However, in the current Paimon architecture, performing partial updates on wide tables presents significant challenges:</p>
+<ul>
+<li><strong>Single Writer Limitation:</strong> To ensure consistency, all partial updates to a table must be consolidated into a single SQL job. This requires using a UNION statement to combine all partial update operations into a single pipeline, ensuring only one writer is responsible for updating the table.</li>
+<li><strong>Operational Complexity:</strong> Consolidating all updates into one job makes it difficult to manage and tune individual update operations, leading to challenges in scalability and flexibility.</li>
+</ul>
+<p>With Fluss and Paimon integration these limitations are eliminated</p>
+<p><img decoding="async" loading="lazy" alt="Unification Solutions" src="/assets/images/img7-8b8e86a6e036ca0f37b6d53f8fc5ae77.png" width="1833" height="783" class="img_ev3q"></p>
+<ul>
+<li><strong>Intermediate Synchronization via Fluss:</strong> All updates pass through Fluss, which serves as an intermediary layer to synchronize changes with Paimon.</li>
+<li><strong>Support for Concurrent Updates:</strong> Fluss enables concurrent updates from multiple SQL jobs, removing the need to consolidate updates into a single job.</li>
+<li><strong>Fine-Grained Job Management:</strong> With the ability to execute multiple independent SQL jobs for updating any number of columns in a wide table, users can perform job-level tuning and management, improving operational efficiency and flexibility.</li>
+</ul>
+<p>This enables organizations to unlock several key advantages:</p>
+<ul>
+<li><strong>High Real-Time Performance:</strong> Lakehouse storage achieves second-level data freshness, meeting the demands of real-time data applications.</li>
+<li><strong>Unified Streaming and Lakehouse Processing:</strong> Data is written once into the architecture and can seamlessly support both batch and streaming use cases, reducing duplication of effort.</li>
+<li><strong>Lower Operational Costs:</strong> Simplified maintenance and reduced complexity of partial updates, lower storage costs by minimizing data duplication and reduced computational costs by eliminating redundant processing pipelines.</li>
+</ul>
+<p>The Fluss and Paimon architecture offers a robust solution for managing partial updates in wide tables while delivering significant improvements in performance, scalability, and operational efficiency.</p>
+<p>All the above highlight the power of a unified streaming and Lakehouse architecture in modern data systems, ensuring real-time capabilities with streamlined workflows.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-plans">Future plans<a href="#future-plans" class="hash-link" aria-label="Direct link to Future plans" title="Direct link to Future plans">​</a></h2>
+<p>The Fluss community is actively working to enhance the streaming and Lakehouse unification capabilities, focusing on the following key areas.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="expanding-union-read-ecosystem">Expanding Union Read Ecosystem<a href="#expanding-union-read-ecosystem" class="hash-link" aria-label="Direct link to Expanding Union Read Ecosystem" title="Direct link to Expanding Union Read Ecosystem">​</a></h3>
+<p>Currently, Union Read functionality is integrated with Apache Flink, enabling seamless querying of real-time and historical data. Moving forward, the community plans to extend this capability to support additional query engines, such as Apache Spark and StarRocks, further broadening its ecosystem compatibility and adoption.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="diversifying-lake-storage-formats">Diversifying Lake Storage Formats<a href="#diversifying-lake-storage-formats" class="hash-link" aria-label="Direct link to Diversifying Lake Storage Formats" title="Direct link to Diversifying Lake Storage Formats">​</a></h3>
+<p>At present, Fluss supports Apache Paimon as its primary lake storage. To meet diverse user requirements, the community aims to add support for more lake formats, including <strong>Apache Iceberg</strong> and <strong>Apache Hudi</strong>, thereby providing flexibility and interoperability with a wider range of Lakehouse ecosystems.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="optimizing-arrow-to-parquet-conversion">Optimizing Arrow-to-Parquet Conversion<a href="#optimizing-arrow-to-parquet-conversion" class="hash-link" aria-label="Direct link to Optimizing Arrow-to-Parquet Conversion" title="Direct link to Optimizing Arrow-to-Parquet Conversion">​</a></h3>
+<p>Fluss leverages Apache Arrow as its storage format, while many Lakehouse formats, such as Paimon, Iceberg, and Hudi, utilize parquet for storage. The Apache Arrow community has developed a mature and efficient solution for converting Arrow data to Parquet. In the future, Fluss will integrate these advancements to enable high-performance Arrow-to-Parquet conversions, significantly reducing the computational overhead of the tiering service and enhancing overall efficiency.</p></div></ar [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/unveil-fluss-logo/index.html b/blog/unveil-fluss-logo/index.html
new file mode 100644
index 0000000..39f211c
--- /dev/null
+++ b/blog/unveil-fluss-logo/index.html
@@ -0,0 +1,63 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">The Story of Fluss Logo | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-the-little-otter">Introducing the Little Otter<a href="#introducing-the-little-otter" class="hash-link" aria-label="Direct link to Introducing the Little Otter" title="Direct link to Introducing the Little Otter">​</a></h2>
+<p>Today is <a href="https://www.otter.org/world-otter-day" target="_blank" rel="noopener noreferrer">World Otter Day</a>, and we are thrilled to introduce the little otter to the Fluss community! 🎉</p>
+<p>Since open-sourced half a year ago, many community members and friends have asked us:
+&quot;When will Fluss get a logo?&quot; After more than a month of careful design work and over 30 iterations, we’re excited to finally unveil the official Fluss logo — a surfing otter! 🦦🌊</p>
+<p>I don&#x27;t want to interpret the symbolic meaning behind the Logo in a rigid way. Instead, I’d like to share the story behind its design — how we defined the direction and iterated step by step toward the final version. This process involved numerous subjective decisions made by the team. You might prefer one of the discarded versions, or disagree with some of the design choices. However, we want to share the journey with our community, and we hope it can also serve as a reference o [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="logo-symbolism-what-do-we-want-to-convey">Logo symbolism: what do we want to convey?<a href="#logo-symbolism-what-do-we-want-to-convey" class="hash-link" aria-label="Direct link to Logo symbolism: what do we want to convey?" title="Direct link to Logo symbolism: what do we want to convey?">​</a></h2>
+<p><a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">Fluss</a> is an open-source streaming storage system designed for analytical workloads, with the goal of serving as a real-time data layer for Lakehouse architectures. Therefore, <em><strong>fluidity</strong></em> is the first key message we want to convey.</p>
+<p>Secondly, Fluss’s vision is to <strong>&quot;Bring better analytics to data streams, and bring better freshness to data Lakehouses&quot;</strong>. This requires the ability to adapt to multiple data lake formats and support a variety of query engines and compute engines. So, <em><strong>adaptability</strong></em> is the second core idea we want to convey.</p>
+<p>Additionally, as an open-source project planning to be donated to the Apache Software Foundation, building an open, diverse, and collaborative community has always been one of our core goals. In line with this value, we wanted the brand to express <em><strong>friendliness</strong></em>, which ultimately led us to choose animal as the logo design direction.</p>
+<p>We have also considered using abstract graphics for logo design. However, we noticed that many open-source projects that start with abstract logos, eventually introduce animal mascots to convey the friendliness of the community. These mascots not only play an important role in community outreach but also often replace the main logo in many contexts, becoming more representative visual symbols — such as Go’s gopher, Rust’s crab, and Airbyte’s octopus. Animal images are easier to get cl [...]
+<p><img decoding="async" loading="lazy" src="/assets/images/image1-6acb85f09ad799d93582a37896aabf30.png" width="2768" height="1604" class="img_ev3q"></p>
+<p>Therefore, we made clear the direction in the early stage of Fluss Logo design: use an Animal image to convey our concept of <strong>fluidity</strong>, <strong>adaptability</strong>, and <strong>friendliness</strong>. The project name &quot;Fluss&quot; comes from the German word for &quot;river&quot; (Fluss), and we also hope that this animal has a close relationship with the river. Combined with these characteristics, the first animal that comes to our mind is the <strong>otter</stro [...]
+<p><img decoding="async" loading="lazy" src="/assets/images/image2-b9a57e1c35eb09c32fa4fcd07406ceeb.png" width="2310" height="1242" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="design-iterations-for-more-than-30-versions">Design iterations for more than 30 versions<a href="#design-iterations-for-more-than-30-versions" class="hash-link" aria-label="Direct link to Design iterations for more than 30 versions" title="Direct link to Design iterations for more than 30 versions">​</a></h2>
+<p>After clarifying the design direction and core values of Fluss Logo, we began to communicate with the design team in depth and launched multiple rounds of iteration. However, in the early versions of the design, we still couldn’t find the right feel — something was missing: the fluidity.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/image3-37c9a30c044c5afbc6e35fa21c1793bc.png" width="1930" height="1014" class="img_ev3q"></p>
+<p>Therefore, we used ChatGPT to find inspiration, and tried a variety of prompt words, and this picture with a surfing wave quickly caught our eyes: dynamic, energy, speed, and flow, which is what we want! Although this otter looks like a Jerry rat... our design team quickly got our idea.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/image4-c4082ae4730f49472a0414543ab5075a.png" width="298" height="294" class="img_ev3q"></p>
+<p>Based on the core elements of “otter” + “surfing”, we started a new round of design, and we iterated more than 20 versions based on this and finally evolved to the version you see today.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/image5-7b6a1c8656ea141b803b8787e89d75df.png" width="2626" height="1204" class="img_ev3q"></p>
+<p>Subsequently, we also made many variations of the logo to adapt to different environments and background colors.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/image6-ec1c384b777aef0f617d3fcb08a5e39e.png" width="1900" height="1048" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-feedback-from-community-users">Get feedback from community users<a href="#get-feedback-from-community-users" class="hash-link" aria-label="Direct link to Get feedback from community users" title="Direct link to Get feedback from community users">​</a></h2>
+<p>Designing a logo is a highly subjective process. But for an open-source project, the goal isn&#x27;t to please the founding team — it&#x27;s to resonate with the community. That’s why we&#x27;ve always valued community feedback and used it to guide our iterations.</p>
+<p>Some of the community feedback I loved very much:</p>
+<ul>
+<li>&quot;The Fluss otter seems to be a sibling to Flink&#x27;s squirrel.&quot;</li>
+<li>&quot;I see Paimon in it!&quot;</li>
+<li>&quot;It&#x27;s soooo cute!&quot;</li>
+</ul>
+<p>Give it some ❤️ via ⭐ on GitHub if you like it as well!
+<a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">https://github.com/alibaba/fluss</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="community-egg">Community Egg<a href="#community-egg" class="hash-link" aria-label="Direct link to Community Egg" title="Direct link to Community Egg">​</a></h2>
+<p>At the time of the Fluss logo release, we also submitted an <a href="https://lists.apache.org/thread/osg23opm9x95xm318160808r984k0wk9" target="_blank" rel="noopener noreferrer">incubation proposal</a> to the Apache Software Foundation, thanks to the strong support from our incubation mentors Yu Li, tison, Jingsong Lee, Becket Qin, and Jean-Baptiste. We&#x27;re confident that Fluss will soon become one of the Apache projects.</p>
+<p>In parallel, we’ve designed and launched a series of Fluss community gifts, including stickers, t-shirts, and coffee cups. These items will be available at upcoming community events — stay tuned and pick your swags!</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/image7-246c5eae97745ed3ae9872e84a86b134.png" width="1130" height="633" class="img_ev3q"></p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/partial-updates/"><div class="pagination-nav__sublabel">Newer post</div><div class="pagination-nav__label">Understanding Partial Updates</div></a><a class="pagination-na [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/why-fluss/index.html b/blog/why-fluss/index.html
new file mode 100644
index 0000000..d64f388
--- /dev/null
+++ b/blog/why-fluss/index.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
+where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
+value by leveraging real-time insights to drive business impact and enhance decision-making.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg" width="3656" height="1240" class="img_ev3q">
+The evolution of big data technology is becoming increasingly impactful, reshaping the computing architecture landscape.
+The traditional Hive-based data warehouse has given way to modern architectures, starting with Lakehouse models and progressing
+to the Paimon streaming Lakehouse, which has gained significant traction in markets like China and more recently started expanding to EU/US markets.
+The core driver behind these architectural innovations is the need to improve data processing timeliness. The data freshness is improved from traditional
+T+1 (next-day readiness) to T+1 hours, and now T+1 minutes. However, Lakehouse architectures, being file-system-based,
+inherently face minute-level latency as their practical upper limit.</p>
+<p>Yet, many critical use cases, such as search and recommendation systems, advertisement attribution, and anomaly detection, demand second-level latency.
+While big data technologies have advanced significantly, there remains a notable gap: a user-friendly, second-level storage solution tailored for big data analytics.</p>
+<p>In most real-time data scenarios, Apache Kafka has emerged as the go-to second-level storage solution. Its integration with Apache Flink represents the dominant architecture for building real-time data warehouses. However, while widely adopted, this combination presents significant challenges for achieving true real-time analytics at scale. The limitations of using Kafka for big data analytics highlight the need for a more robust solution to meet the demands of modern real-time use ca [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="kafka-falls-short-in-real-time-analytics">Kafka Falls Short in Real-Time Analytics<a href="#kafka-falls-short-in-real-time-analytics" class="hash-link" aria-label="Direct link to Kafka Falls Short in Real-Time Analytics" title="Direct link to Kafka Falls Short in Real-Time Analytics">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="no-support-for-updates">No Support for Updates<a href="#no-support-for-updates" class="hash-link" aria-label="Direct link to No Support for Updates" title="Direct link to No Support for Updates">​</a></h3>
+<p>The first significant challenge with Apache Kafka is its lack of support for updates, a critical feature for data warehouses. In data warehousing, updates are often essential to correct or amend data. However, Kafka&#x27;s inability to handle updates results in duplicate records for the same primary key. When consumed by a computing engine, this duplication necessitates costly deduplication processes to ensure accurate results.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg" width="3656" height="1172" class="img_ev3q"></p>
+<p>In Apache Flink, for instance, handling this issue requires materializing all upstream data in state, which is resource-intensive. Every time data is consumed from Kafka, the deduplication process incurs a substantial overhead, significantly increasing computational and storage costs. This limitation not only impacts performance but also hampers the reusability of Kafka-stored data for downstream business processes.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="lack-of-querying-capabilities">Lack of Querying Capabilities<a href="#lack-of-querying-capabilities" class="hash-link" aria-label="Direct link to Lack of Querying Capabilities" title="Direct link to Lack of Querying Capabilities">​</a></h3>
+<p>The second major limitation of Apache Kafka is hard to debug, primarily due to its lack of native querying capabilities. In data warehousing, querying is a fundamental feature that facilitates troubleshooting and ad-hoc analysis to understand data trends. Unfortunately, Kafka operates much like a black box, making it challenging to perform these critical tasks without additional tools or layers.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg" width="3696" height="1214" class="img_ev3q"></p>
+<p>To address this limitation, the industry has adopted two primary approaches, each with its own trade-offs:</p>
+<ul>
+<li><strong>Synchronizing Kafka Data to an OLAP System:</strong> This allows for querying data using the OLAP system’s capabilities. However, this approach introduces additional components into the architecture, increasing both complexity and cost. Moreover, it risks data inconsistencies due to synchronization delays.</li>
+<li><strong>Querying Kafka Directly Using Trino:</strong> While Trino can query Kafka, it relies solely on full scans, which are inefficient for large-scale operations. For instance, a simple query on just 1GB of Kafka data can take up to one minute, rendering it impractical for large datasets or real-time requirements.</li>
+</ul>
+<p>These limitations make Kafka unsuitable for efficient and scalable data exploration in modern data warehousing workflows.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="difficulty-with-data-backfilling">Difficulty with Data Backfilling<a href="#difficulty-with-data-backfilling" class="hash-link" aria-label="Direct link to Difficulty with Data Backfilling" title="Direct link to Difficulty with Data Backfilling">​</a></h3>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg" width="3526" height="1210" class="img_ev3q">
+The third significant issue with Apache Kafka is processing historical data, also known as data backfilling, a common requirement in data warehousing.
+For instance, in logistics, it usually needs to process and analyze historical data from several months ago. However, Kafka only retain data for a few days due to the high cost of storage.
+Even though Kafka community has introduced <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage" target="_blank" rel="noopener noreferrer">Tiered Storage</a> to address the long-term data issue, it still has limitations.
+Reading historical data still require all the data to pass through Kafka brokers, which can lead to brokers unstable and <a href="https://www.warpstream.com/blog/tiered-storage-wont-fix-kafka#increased-complexity-and-operational-burden" target="_blank" rel="noopener noreferrer">disrupt live traffics</a>.</p>
+<p>These limitations highlight Kafka’s inefficiency as a solution for data backfilling in large-scale and long-term analytical use cases, further underscoring the need for more robust alternatives in real-time data warehousing.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="excessive-network-costs">Excessive Network Costs<a href="#excessive-network-costs" class="hash-link" aria-label="Direct link to Excessive Network Costs" title="Direct link to Excessive Network Costs">​</a></h3>
+<p>The final major challenge with Apache Kafka lies in its high network costs, which account for an estimated 88% of Kafka&#x27;s overall operational expenses. In data warehousing, the &quot;one write, multiple read&quot; pattern is common, with each consumer often requiring only a subset of the data. However, Kafka&#x27;s design mandates that consumers read the entire dataset, regardless of how much is actually needed.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg" width="3636" height="1206" class="img_ev3q"></p>
+<p>For instance, among the tens of thousands of Flink SQL jobs at Alibaba, only 49% of the upstream columns are utilized per job on average. Despite this, consumers must read all the columns and pay 100% networking cost, which is highly inefficient and wasteful.</p>
+<p>In summary, using Kafka for real-time analytics presents several critical issues: <strong>(1) lack of support for updates</strong>, <strong>(2) absence of querying capabilities</strong>, <strong>(3) difficulty with data backfilling</strong>, and <strong>(4) excessive network costs</strong>. These limitations make the combination of Flink and Kafka less than ideal for real-time data warehousing.
+But why Kafka lacks these abilities? Is it possible to add the abilities to Kafka?</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="kafka-is-not-designed-for-analytics">Kafka is not designed for Analytics<a href="#kafka-is-not-designed-for-analytics" class="hash-link" aria-label="Direct link to Kafka is not designed for Analytics" title="Direct link to Kafka is not designed for Analytics">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg" width="3620" height="1148" class="img_ev3q">
+The root cause of these challenges lies in the fundamental design philosophy of Kafka: <strong>Kafka is designed for streaming events, NOT for streaming analytics</strong>. Each system has its own focus and strengths, and Kafka&#x27;s design is optimized for message queue scenarios rather than analytical workloads.</p>
+<p>In Kafka, data is typically stored in a row-oriented format, such as CSV, JSON, or Avro.
+While this is highly efficient for use cases involving message streaming, it becomes a bottleneck for analytical scenarios.
+Data analysis requires handling large volumes of data, and therefore heavily relies on data skipping capabilities from storage, such as column pruning and predicate pushdown.
+For this reason, columnar storage is far better suited for analytical workloads, whereas Kafka&#x27;s row-based storage is not designed to meet these demands effectively.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-fluss">Introducing Fluss<a href="#introducing-fluss" class="hash-link" aria-label="Direct link to Introducing Fluss" title="Direct link to Introducing Fluss">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg" width="3644" height="1210" class="img_ev3q">
+When visualizing the data ecosystem as a four-quadrant matrix, an intriguing pattern emerges.
+The left side of the matrix represents operational systems, while the right side represents analytical systems.
+The top half is dedicated to stream storage, and the bottom half to table storage.
+In operational systems, both databases and stream storage predominantly use row-based formats, as row storage is more efficient for transactional workloads. Conversely, in analytical systems like Apache Iceberg and Snowflake, columnar storage is preferred due to its superior performance in analytical scenarios.</p>
+<p>Interestingly, the upper-right quadrant of the matrix remains empty, indicating a significant gap in the market: a streaming storage for analytical scenarios. Unsurprisingly, such a storage would likely adopt a columnar format to effectively address the needs of real-time analytics.</p>
+<p>To fill the gap and resolve problems in Flink and streaming analytics, we embarked on a journey two years ago to create a streaming storage. We named the project &quot;<strong>FL</strong>ink <strong>U</strong>nified <strong>S</strong>treaming <strong>S</strong>torage&quot;, and from its initials, we derived the name <strong>Fluss</strong>.
+<img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg" width="3700" height="946" class="img_ev3q">
+Interestingly, Flink is derived from the German word for &quot;<strong>agile</strong>&quot;, and Fluss, which translates to &quot;<strong>river</strong>&quot; in German, resonates deeply with the project’s vision.
+It symbolizes the streaming data is continuously flowing, distributing and converging into data lakes, just like a river.
+The launch of Fluss coincides with Flink&#x27;s 10th anniversary, making it a fitting tribute to the project’s heritage and its enduring contribution to the streaming data landscape.</p>
+<p><img decoding="async" loading="lazy" alt="FF Announcement" src="/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q"></p>
+<p>Learn more details about Fluss in the next <a href="/blog/fluss-intro/">blog post</a>, where we will delve deeper into Fluss&#x27;s architecture, design principles, key features, and explore how it addresses the challenges of using Kafka for real-time analytics.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/fluss-intro/"><div class="pagination-nav__sublabel"> [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/dev/building/index.html b/community/dev/building/index.html
new file mode 100644
index 0000000..140a014
--- /dev/null
+++ b/community/dev/building/index.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-dev/building" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Building Fluss | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This page covers how to build Fluss from sources.</p>
+<p>In order to build Fluss you need to get the source code by <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">cloning the git repository</a>.</p>
+<p>In addition, you need <strong>Maven 3.8.6</strong> and a <strong>JDK</strong> (Java Development Kit). Fluss requires <strong>Java 8 or Java 11</strong> to build.</p>
+<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<li>It is recommended to use JDK 1.8.3 if you&#x27;re using Java 8 and encounter an error like <code>java.lang.NoSuchMethodError: &#x27;java.nio.MappedByteBuffer java.nio.MappedByteBuffer.duplicate()&#x27;</code>.</li>
+<li>Setting the environment variable via <code>export JAVA_TOOL_OPTIONS=&quot;-XX:+UnlockExperimentalVMOptions&quot;</code> is useful if you encounter an error <code>VM option &#x27;UseG1GC&#x27; is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions</code>.</li>
+</ul></div></div>
+<p>To clone from git, enter:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> clone git@github.c [...]
+<p>If you want to build a specific release or release candidate, have a look at the existing tags using</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> tag </span><span c [...]
+<p>and checkout the corresponding branch using</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> checkout </span><s [...]
+<p>The simplest way of building Fluss is by running:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">mvn clean </span><span class="token function" style="color:rgb(220, 220, 170)">install</spa [...]
+<p>This instructs <a href="http://maven.apache.org" target="_blank" rel="noopener noreferrer">Maven</a> (<code>mvn</code>) to first remove all existing builds (<code>clean</code>) and then create a new Fluss binary (<code>install</code>).</p>
+<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<p>To speed up the build you can:</p>
+<ul>
+<li>skip tests by using <code> -DskipTests</code></li>
+<li>use Maven&#x27;s parallel build feature, e.g., <code>mvn package -T 1C</code> will attempt to build 1 module for each CPU core in parallel.</li>
+</ul>
+<p>The build script will be:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">mvn clean </span><span class="token function" style="color:rgb(220, 220, 170)">install</spa [...]
+<p><strong>NOTE</strong>:</p>
+<ul>
+<li>For local testing, it&#x27;s recommend to use directory <code>${project}/build-target</code> in project.</li>
+<li>For deploying distributed cluster, it&#x27;s recommend to use binary file named <code>fluss-xxx-bin.tgz</code>, the file is in directory <code>${project}/fluss-dist/target</code>.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/dev/building.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0 [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/dev/ide-setup/index.html b/community/dev/ide-setup/index.html
new file mode 100644
index 0000000..5c9b5d7
--- /dev/null
+++ b/community/dev/ide-setup/index.html
@@ -0,0 +1,169 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-dev/ide-setup" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">IDE Setup | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/comm [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>The sections below describe how to import the Fluss project into an IDE
+for the development of Fluss itself.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+command line first (<code>mvn clean package -DskipTests</code>) as it might be your IDE
+that has a bug or is not properly set up.</p></div></div>
+<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="preparation-fork-and-clone-the-fluss-repository">Preparation: Fork and Clone the Fluss Repository<a href="#preparation-fork-and-clone-the-fluss-repository" class="hash-link" aria-label="Direct link to Preparation: Fork and Clone the Fluss Repository" title="Direct link to Preparation: Fork and Clone the Fluss Repository">​</a></h2>
+<p>Fluss uses <a href="http://git-scm.com/" target="_blank" rel="noopener noreferrer">git</a> for version control.
+The Git repository is mirrored to <a href="https://github.com/alibaba/fluss/" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
+<p>The common way to merge code changes on GitHub is to fork the repository (creating a copy of the repository to your personal GitHub account so you can modify the source code) and issue a pull request.</p>
+<ol>
+<li>To fork the Fluss repository, log in with your GitHub account. If you do not have one yet, <a href="https://github.com/signup" target="_blank" rel="noopener noreferrer">sign up for free</a>. Then, click the <code>[Fork]</code> button on the upper right of the <a href="https://github.com/alibaba/fluss/" target="_blank" rel="noopener noreferrer">Fluss repository</a>.</li>
+<li>Clone the <em>forked</em> version of the repository over HTTPs or SSH. SSH is recommended but needs to be <a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh" target="_blank" rel="noopener noreferrer">explicitly configured</a>.</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Clone using HTTPs</span><span class="token plain"></spa [...]
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># Clone using SSH</span><span class="token plain"></span> [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="intellij-idea">IntelliJ IDEA<a href="#intellij-idea" class="hash-link" aria-label="Direct link to IntelliJ IDEA" title="Direct link to IntelliJ IDEA">​</a></h2>
+<p>The following guide has been written for <a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener noreferrer">IntelliJ IDEA</a>
+2024.3. Some details might differ in other versions. Please make sure to follow all steps</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="importing-fluss">Importing Fluss<a href="#importing-fluss" class="hash-link" aria-label="Direct link to Importing Fluss" title="Direct link to Importing Fluss">​</a></h3>
+<ol>
+<li>Choose &quot;New&quot; → &quot;Project from Existing Sources&quot;.</li>
+<li>Select the root folder of the cloned Fluss repository.</li>
+<li>Choose &quot;Import project from external model&quot; and select &quot;Maven&quot;.</li>
+<li>Leave the default options and successively click &quot;Next&quot; until you reach the SDK section.</li>
+<li>If there is no SDK listed, create one using the &quot;+&quot; sign on the top left.
+Select &quot;JDK&quot;, choose the JDK home directory and click &quot;OK&quot;.
+Select the most suitable JDK version. NOTE: A good rule of thumb is to select
+the JDK version matching the active Maven profile.</li>
+<li>Continue by clicking &quot;Next&quot; until the import is finished.</li>
+<li>Open the &quot;Maven&quot; tab (or right-click on the imported project and find &quot;Maven&quot;) and run
+&quot;Generate Sources and Update Folders&quot;. Alternatively, you can run
+<code>mvn clean package -DskipTests</code>.</li>
+<li>Build the Project (&quot;Build&quot; → &quot;Build Project&quot;).</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="copyright-profile">Copyright Profile<a href="#copyright-profile" class="hash-link" aria-label="Direct link to Copyright Profile" title="Direct link to Copyright Profile">​</a></h3>
+<p>Every file needs to include the Alibaba license as a header. This can be automated in IntelliJ by
+adding a Copyright profile:</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Editor&quot; → &quot;Copyright&quot; → &quot;Copyright Profiles&quot;.</li>
+<li>Add a new profile and name it &quot;Alibaba&quot;.</li>
+<li>Add the following text as the license text:</li>
+</ol>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">Licensed to the Apache Software Foundation (ASF) under one</span><br></span><span class="to [...]
+<ol start="4">
+<li>Go to &quot;Editor&quot; → &quot;Copyright&quot; and choose the &quot;Alibaba&quot; profile as the default profile for this
+project.</li>
+<li>Click &quot;Apply&quot;.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="required-plugins">Required Plugins<a href="#required-plugins" class="hash-link" aria-label="Direct link to Required Plugins" title="Direct link to Required Plugins">​</a></h3>
+<p>Go to &quot;Settings&quot; → &quot;Plugins&quot; and select the &quot;Marketplace&quot; tab. Search for the following plugins,
+install them, and restart the IDE if prompted:</p>
+<ul>
+<li><a href="https://plugins.jetbrains.com/plugin/22113-save-actions-x" target="_blank" rel="noopener noreferrer">Save Actions X</a></li>
+<li><a href="https://plugins.jetbrains.com/plugin/1065-checkstyle-idea" target="_blank" rel="noopener noreferrer">Checkstyle-IDEA</a></li>
+</ul>
+<p>You will also need to install the <a href="https://github.com/google/google-java-format" target="_blank" rel="noopener noreferrer">google-java-format</a>
+plugin. However, a specific version of this plugin is required. Download
+<a href="https://plugins.jetbrains.com/plugin/8527-google-java-format/versions/stable/115957" target="_blank" rel="noopener noreferrer">google-java-format v1.7.0.6</a>
+and install it as follows. <strong>Make sure to never update this plugin</strong>.</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Plugins&quot;.</li>
+<li>Click the gear icon and select &quot;Install Plugin from Disk&quot;.</li>
+<li>Navigate to the downloaded ZIP file and select it.</li>
+</ol>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="code-formatting">Code Formatting<a href="#code-formatting" class="hash-link" aria-label="Direct link to Code Formatting" title="Direct link to Code Formatting">​</a></h4>
+<p>Fluss uses <a href="https://github.com/diffplug/spotless/tree/main/plugin-maven" target="_blank" rel="noopener noreferrer">Spotless</a> together with
+<a href="https://github.com/google/google-java-format" target="_blank" rel="noopener noreferrer">google-java-format</a> to format the Java code.</p>
+<p>It is recommended to automatically format your code by applying the following settings:</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Other Settings&quot; → &quot;google-java-format Settings&quot;.</li>
+<li>Tick the checkbox to enable the plugin.</li>
+<li>Change the code style to &quot;Android Open Source Project (AOSP) style&quot;.</li>
+<li>Go to &quot;Settings&quot; → &quot;Tools&quot; → &quot;Actions on Save&quot;.</li>
+<li>Under &quot;Formatting Actions&quot;, select &quot;Optimize imports&quot; and &quot;Reformat code&quot;.</li>
+<li>From the &quot;All file types list&quot; next to &quot;Reformat code&quot;, select Java and Scala.</li>
+</ol>
+<p>For earlier IntelliJ IDEA versions:</p>
+<ol start="4">
+<li>Go to &quot;Settings&quot; → &quot;Other Settings&quot; → &quot;Save Actions&quot;.</li>
+<li>Under &quot;General&quot;, enable your preferred settings for when to format the code, e.g. &quot;Activate save actions on save&quot;.</li>
+<li>Under &quot;Formatting Actions&quot;, select &quot;Optimize imports&quot; and &quot;Reformat file&quot;.</li>
+<li>Under &quot;File Path Inclusions&quot;, add an entry for <code>.*\.java</code> to avoid formatting other file types.</li>
+</ol>
+<p>You can also format the whole project via Maven by using <code>mvn spotless:apply</code>.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="checkstyle-for-java">Checkstyle For Java<a href="#checkstyle-for-java" class="hash-link" aria-label="Direct link to Checkstyle For Java" title="Direct link to Checkstyle For Java">​</a></h4>
+<p><a href="https://checkstyle.sourceforge.io/" target="_blank" rel="noopener noreferrer">Checkstyle</a> is used to enforce static coding guidelines.</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Tools&quot; → &quot;Checkstyle&quot;.</li>
+<li>Set &quot;Scan Scope&quot; to &quot;Only Java sources (including tests)&quot;.</li>
+<li>For &quot;Checkstyle Version&quot; select &quot;9.3&quot;.</li>
+<li>Under &quot;Configuration File&quot; click the &quot;+&quot; icon to add a new configuration.</li>
+<li>Set &quot;Description&quot; to &quot;Fluss&quot;.</li>
+<li>Select &quot;Use a local Checkstyle file&quot; and point it to <code>tools/maven/checkstyle.xml</code> located within
+your cloned repository.</li>
+<li>Select &quot;Store relative to project location&quot; and click &quot;Next&quot;.</li>
+<li>Configure the property <code>checkstyle.suppressions.file</code> with the value <code>suppressions.xml</code> and click
+&quot;Next&quot;.</li>
+<li>Click &quot;Finish&quot;.</li>
+<li>Select &quot;Fluss&quot; as the only active configuration file and click &quot;Apply&quot;.</li>
+</ol>
+<p>You can now import the Checkstyle configuration for the Java code formatter.</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Editor&quot; → &quot;Code Style&quot; → &quot;Java&quot;.</li>
+<li>Click the gear icon next to &quot;Scheme&quot; and select &quot;Import Scheme&quot; → &quot;Checkstyle Configuration&quot;.</li>
+<li>Navigate to and select <code>tools/maven/checkstyle.xml</code> located within your cloned repository.</li>
+</ol>
+<p>To verify the setup, click &quot;View&quot; → &quot;Tool Windows&quot; → &quot;Checkstyle&quot; and find the &quot;Check Module&quot;
+button in the opened tool window. It should report no violations.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configure-git-commit-username-and-email">Configure Git Commit Username and Email<a href="#configure-git-commit-username-and-email" class="hash-link" aria-label="Direct link to Configure Git Commit Username and Email" title="Direct link to Configure Git Commit Username and Email">​</a></h3>
+<p>Verify that the Git commit username is set to your preferred name using</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> config user.name</ [...]
+<p>The set username will be shown in the contributor list in Fluss release notes.</p>
+<p>To change the username use</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> config user.name < [...]
+<p>You are free to choose any username you want.
+In particular, the username does <em>not</em> have to correspond to your GitHub username.
+A common choice is simply your full name.</p>
+<p>Also verify that the Git commit email address is set to your preferred email address using</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> config user.email< [...]
+<p>Make sure that the set email address is an email address that is linked to your GitHub account.
+If the email address is not linked to your GitHub account, commits in the contribution graph will not be associated with your account.</p>
+<p>To change the email address use</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> config user.email  [...]
+<p>If you do not want to expose your email address in Git commits, you can activate <a href="https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address" target="_blank" rel="noopener noreferrer">GitHub&#x27;s email privacy setting</a> and set the Git commit email address to the anonymized <code>noreply @users.noreply.github.com</code> email address.</p>
+<div class="theme-admonition theme-admonition-important admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>important</div><div class="admonitionContent_BuS1"><ul>
+<li>When committing from different devices, make sure the username is consistently set on all devices.</li>
+<li>The <code>git config</code> commands above only set the username and email address for the current Git repository. If you want to apply the same settings to all Git repositories on a device, execute the commands with the <code>--global</code> option.</li>
+</ul></div></div>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="common-problems">Common Problems<a href="#common-problems" class="hash-link" aria-label="Direct link to Common Problems" title="Direct link to Common Problems">​</a></h3>
+<p>This section lists issues that developers have run into in the past when working with IntelliJ.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compilation-fails-with-invalid-flag---add-exportsjavabasesunnetutilall-unnamed">Compilation fails with <code>invalid flag: --add-exports=java.base/sun.net.util=ALL-UNNAMED</code><a href="#compilation-fails-with-invalid-flag---add-exportsjavabasesunnetutilall-unnamed" class="hash-link" aria-label="Direct link to compilation-fails-with-invalid-flag---add-exportsjavabasesunnetutilall-unnamed" title="Direct link to compilation-fails-with-inv [...]
+<p>This happens if the &quot;java11&quot; Maven profile is active, but an older JDK version is used. Go to
+&quot;View&quot; → &quot;Tool Windows&quot; → &quot;Maven&quot; and uncheck the &quot;java11&quot; profile. Afterwards, reimport the
+project.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compilation-fails-with-package-sunmisc-does-not-exist">Compilation fails with <code>package sun.misc does not exist</code><a href="#compilation-fails-with-package-sunmisc-does-not-exist" class="hash-link" aria-label="Direct link to compilation-fails-with-package-sunmisc-does-not-exist" title="Direct link to compilation-fails-with-package-sunmisc-does-not-exist">​</a></h4>
+<p>This happens if you are using JDK 11 and compile to Java 8 with the <code>--release</code> option. This option is currently incompatible with our build setup.
+Go to &quot;Settings&quot; → &quot;Build, Execution, Deployment&quot; → &quot;Compiler&quot; → &quot;Java Compiler&quot; and uncheck the &quot;Use &#x27;--release&#x27; option for cross-compilation (Java 9 and later)&quot;.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="examples-fail-with-a-noclassdeffounderror-for-fluss-classes">Examples fail with a <code>NoClassDefFoundError</code> for Fluss classes.<a href="#examples-fail-with-a-noclassdeffounderror-for-fluss-classes" class="hash-link" aria-label="Direct link to examples-fail-with-a-noclassdeffounderror-for-fluss-classes" title="Direct link to examples-fail-with-a-noclassdeffounderror-for-fluss-classes">​</a></h4>
+<p>This happens if Fluss dependencies are set to &quot;provided&quot;, resulting in them not being available
+on the classpath. You can either check &quot;Include dependencies with &#x27;Provided&#x27; scope&quot; in your
+run configuration, or create a test that calls the <code>main()</code> method of the example.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/dev/ide-setup.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/fluss-logos/index.html b/community/fluss-logos/index.html
new file mode 100644
index 0000000..1a0ae11
--- /dev/null
+++ b/community/fluss-logos/index.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-fluss-logos" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Fluss Logos | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/co [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>We provide the Fluss logo in different formats and variants.</p>
+<p><img decoding="async" loading="lazy" alt="Fluss Logo Overview" src="/assets/images/logo_overview-3a76e21a805e31d6bbf8e32563a22eb2.jpg" width="3840" height="2160" class="img_ev3q"></p>
+<p>You can download the logos in SVG and PNG formats from the following links:</p>
+<ul>
+<li>Colored logo<!-- -->
+<ul>
+<li>with black text: <a href="/img/logo/svg/colored_logo.svg" target="_blank" rel="noopener noreferrer">colored_logo.svg</a>, <a href="/img/logo/png/colored_logo.png" target="_blank" rel="noopener noreferrer">color_logo.png</a></li>
+<li>without text: <a href="/img/logo/svg/colored_logo_notext.svg" target="_blank" rel="noopener noreferrer">colored_logo_notext.svg</a>, <a href="/img/logo/png/colored_logo_notext.png" target="_blank" rel="noopener noreferrer">colored_logo_notext.png</a></li>
+</ul>
+</li>
+<li>White color logo<!-- -->
+<ul>
+<li>with black text: <a href="/img/logo/svg/white_color_logo.svg" target="_blank" rel="noopener noreferrer">white_color_logo.svg</a>, <a href="/img/logo/png/white_color_logo.png" target="_blank" rel="noopener noreferrer">white_color_logo.png</a></li>
+<li>without text: <a href="/img/logo/svg/white_color_logo_notext.svg" target="_blank" rel="noopener noreferrer">white_color_logo_notext.svg</a>, <a href="/img/logo/png/white_color_logo_notext.png" target="_blank" rel="noopener noreferrer">white_color_logo_notext.png</a></li>
+</ul>
+</li>
+<li>Black outline logo<!-- -->
+<ul>
+<li>with black text: <a href="/img/logo/svg/black_outline.svg" target="_blank" rel="noopener noreferrer">black_outline.svg</a>, <a href="/img/logo/png/black_outline.png" target="_blank" rel="noopener noreferrer">black_outline.png</a></li>
+<li>without text: <a href="/img/logo/svg/black_outline_notext.svg" target="_blank" rel="noopener noreferrer">black_outline_notext.svg</a>, <a href="/img/logo/png/black_outline_notext.png" target="_blank" rel="noopener noreferrer">black_outline_notext.png</a></li>
+</ul>
+</li>
+<li>White filled logo<!-- -->
+<ul>
+<li>with black text: <a href="/img/logo/svg/white_filled.svg" target="_blank" rel="noopener noreferrer">white_filled.svg</a>, <a href="/img/logo/png/white_filled.png" target="_blank" rel="noopener noreferrer">white_filled.png</a></li>
+<li>without text: <a href="/img/logo/svg/white_filled_notext.svg" target="_blank" rel="noopener noreferrer">white_filled_notext.svg</a>, <a href="/img/logo/png/white_filled_notext.png" target="_blank" rel="noopener noreferrer">white_filled_notext.png</a></li>
+</ul>
+</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/fluss-logos.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0. [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/how-to-contribute/contribute-code/index.html b/community/how-to-contribute/contribute-code/index.html
new file mode 100644
index 0000000..0521914
--- /dev/null
+++ b/community/how-to-contribute/contribute-code/index.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-how-to-contribute/contribute-code" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Contribute Code | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.or [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss is maintained, improved, and extended by code contributions of volunteers. We welcome contributions to Fluss, but due to preserve the high quality of the code base, we follow a contribution process that is explained in this document.</p>
+<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>warning</ [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="looking-for-what-to-contribute">Looking for what to contribute<a href="#looking-for-what-to-contribute" class="hash-link" aria-label="Direct link to Looking for what to contribute" title="Direct link to Looking for what to contribute">​</a></h2>
+<ul>
+<li>If you have a good idea for the contribution, you can proceed to <a href="#code-contribution-process">the code contribution process</a>.</li>
+<li>If you are looking for what you could contribute, you can browse <a href="https://github.com/alibaba/fluss/issues" target="_blank" rel="noopener noreferrer">open issues</a>, which are not assigned, and then follow <a href="#code-contribution-process">the code contribution process</a>.</li>
+<li>If you are very new to the Fluss project and ready to tackle some open issues, we&#x27;ve collected some <a href="https://github.com/alibaba/fluss/contribute" target="_blank" rel="noopener noreferrer">good first issues</a> for you.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="code-contribution-process">Code Contribution Process<a href="#code-contribution-process" class="hash-link" aria-label="Direct link to Code Contribution Process" title="Direct link to Code Contribution Process">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="discuss">Discuss<a href="#discuss" class="hash-link" aria-label="Direct link to Discuss" title="Direct link to Discuss">​</a></h3>
+<p>Create an issue and reach consensus.</p>
+<p><strong>To request an issue, please note that it is not just a &quot;please assign it to me&quot;, you need to explain your understanding of the issue, and your design, and if possible, you need to provide your POC code.</strong></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="implement">Implement<a href="#implement" class="hash-link" aria-label="Direct link to Implement" title="Direct link to Implement">​</a></h3>
+<p>Implement the change according to the Code Style and Quality(refer to the <a href="https://flink.apache.org/how-to-contribute/code-style-and-quality-preamble/" target="_blank" rel="noopener noreferrer">Flink doc</a> Guide and the approach agreed upon in the issue.</p>
+<ol>
+<li>Only start working on the implementation if there is consensus on the approach (e.g. you are assigned to the ticket)</li>
+<li>If you are newer, can refer to <a href="/community/dev/ide-setup/">ide setup</a> to setup a Fluss dev environment.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="review">Review<a href="#review" class="hash-link" aria-label="Direct link to Review" title="Direct link to Review">​</a></h3>
+<p>Create the pull request and work with the reviewer.</p>
+<ol>
+<li>Make sure no unrelated or unnecessary reformatting changes are included.</li>
+<li>Please ensure that the test passing.</li>
+<li>Please don&#x27;t resolve conversation.</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="merge">Merge<a href="#merge" class="hash-link" aria-label="Direct link to Merge" title="Direct link to Merge">​</a></h3>
+<p>A committer of Fluss checks if the contribution fulfills the requirements and merges the code to the codebase.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="pull-request-guide">Pull Request Guide<a href="#pull-request-guide" class="hash-link" aria-label="Direct link to Pull Request Guide" title="Direct link to Pull Request Guide">​</a></h2>
+<p>Considerations before opening a pull request:</p>
+<ul>
+<li>
+<p>Make sure that the pull request corresponds to a <a href="https://github.com/alibaba/fluss/issues" target="_blank" rel="noopener noreferrer">GitHub issue</a>. Exceptions are made for typos in JavaDoc or documentation files, which need no issue.</p>
+</li>
+<li>
+<p>Name the pull request in the format &quot;[component] Title of the pull request&quot;, where <em>[component]</em> should be replaced by the name of the component being changed. Typically, this corresponds to the component label assigned to the issue (e.g., [kv], [log], [client], [flink]). Skip <em>[component]</em> if you are unsure about which is the best component. <strong>Hotfixes</strong> should be named for example <code>[hotfix][docs] Expand JavaDoc for PuncuatedWatermarkGenerato [...]
+</li>
+<li>
+<p>Fill out the pull request template to describe the changes contributed by the pull request. Please describe it such that the reviewer understands the problem and solution from the description, not only from the code. That will give reviewers the context they need to do the review.</p>
+</li>
+<li>
+<p>Make sure that the change passes the automated tests, i.e., <code>mvn clean verify</code> passes.</p>
+</li>
+<li>
+<p>Each pull request should address only one issue, not mix up code from multiple issues.</p>
+</li>
+</ul>
+<p>There is a separate guide on <a href="/community/how-to-contribute/review-pull-requests/">how to review a pull request</a>, including our pull request review process. As a code author, you should prepare your pull request to meet all requirements.</p>
+<p>You need to make sure that all GitHub Actions CI checks must pass for a pull request. If there are any failures, it is essential to investigate the exception stack by in the CI logs. Additionally, GitHub Actions automatically collects and uploads Maven logs (logs printed by log4j in the code) to GitHub Artifacts (see the &quot;Artifacts&quot; section in this <a href="https://github.com/alibaba/fluss/actions/runs/13761957739" target="_blank" rel="noopener noreferrer">build</a>). These  [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/how-to-contribute/contribute-docs/index.html b/community/how-to-contribute/contribute-docs/index.html
new file mode 100644
index 0000000..f91fa68
--- /dev/null
+++ b/community/how-to-contribute/contribute-docs/index.html
@@ -0,0 +1,137 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-how-to-contribute/contribute-docs" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Contribute Documentation | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>The Fluss website serves as the primary interface between the project and its community, with several key purposes:</p>
+<ul>
+<li>Introducing Fluss as a streaming storage solution for real-time analytics</li>
+<li>Providing technical documentation for users and developers</li>
+<li>Facilitating downloads and deployment guidance</li>
+<li>Fostering community engagement and contributions</li>
+<li>Showcasing Fluss features, use cases, and roadmap</li>
+</ul>
+<p>This website is built with Docusaurus, a modern static website generator optimized for documentation. For advanced features and tools, visit the <a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer">official Docusaurus documentation</a>.</p>
+<p>This guide will walk you through the process of contributing to the Fluss documentation, from setting up your environment to submitting your changes.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="build-documentation">Build Documentation<a href="#build-documentation" class="hash-link" aria-label="Direct link to Build Documentation" title="Direct link to Build Documentation">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fork-and-clone">Fork and Clone<a href="#fork-and-clone" class="hash-link" aria-label="Direct link to Fork and Clone" title="Direct link to Fork and Clone">​</a></h3>
+<p>Fork the <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">Fluss repository</a></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> clone https://gith [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-branch">Create a Branch<a href="#create-a-branch" class="hash-link" aria-label="Direct link to Create a Branch" title="Direct link to Create a Branch">​</a></h3>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> checkout </span><s [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-dependencies">Install Dependencies<a href="#install-dependencies" class="hash-link" aria-label="Direct link to Install Dependencies" title="Direct link to Install Dependencies">​</a></h3>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token builtin class-name" style="color:rgb(78, 201, 176)">cd</span><span class="token plain"> website</s [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="directory-structure">Directory Structure<a href="#directory-structure" class="hash-link" aria-label="Direct link to Directory Structure" title="Direct link to Directory Structure">​</a></h3>
+<p>The Fluss documentation is organized as follows:</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">fluss/website/</span><br></span><span class="token-line" style="color:#9CDCFE"><span class= [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="validation-including-versioned-docs">Validation (including versioned docs)<a href="#validation-including-versioned-docs" class="hash-link" aria-label="Direct link to Validation (including versioned docs)" title="Direct link to Validation (including versioned docs)">​</a></h3>
+<ul>
+<li>Edit or create Markdown files in the appropriate directories</li>
+<li>Generate versioned docs (simulates what CI does)</li>
+</ul>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./build_versioned_docs.sh</span><br></span></code></pre></div></div>
+<ul>
+<li>Then build the complete site which checks broken links</li>
+</ul>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">npm</span><span class="token plain"> run build -- --no- [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="preview-changes">Preview Changes<a href="#preview-changes" class="hash-link" aria-label="Direct link to Preview Changes" title="Direct link to Preview Changes">​</a></h3>
+<ul>
+<li>Start the local development server to preview changes</li>
+</ul>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">npm</span><span class="token plain"> run start</span><b [...]
+<ul>
+<li>View your changes at <a href="http://localhost:3000/fluss-docs/" target="_blank" rel="noopener noreferrer">http://localhost:3000/fluss-docs/</a></li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="versioned-documentation">Versioned Documentation<a href="#versioned-documentation" class="hash-link" aria-label="Direct link to Versioned Documentation" title="Direct link to Versioned Documentation">​</a></h2>
+<ul>
+<li>Only content in <code>website/docs/* </code>is versioned</li>
+<li>Each version corresponds to a branch (e.g., release-0.5, release-0.6)</li>
+<li>Fixes for <code>website/docs/*</code> documentation related to old versions should be backported to their corresponding release-x.y branches</li>
+<li>The main branch contains the latest (unreleased) documentation</li>
+<li>Other pages (community, roadmap) are only maintained in the main branch</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="updating-existing-versions">Updating Existing Versions<a href="#updating-existing-versions" class="hash-link" aria-label="Direct link to Updating Existing Versions" title="Direct link to Updating Existing Versions">​</a></h3>
+<ul>
+<li>Checkout the corresponding release branch</li>
+</ul>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> checkout release-0 [...]
+<ul>
+<li>Make changes to files in <code>website/docs/</code></li>
+<li>Create a pull request to that specific release branch</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="version-expressions">Version Expressions<a href="#version-expressions" class="hash-link" aria-label="Direct link to Version Expressions" title="Direct link to Version Expressions">​</a></h3>
+<p>Fluss documentation uses placeholder variables that are automatically replaced during the build process. Note that these variables are only available for documentation under <code>website/docs/*</code>.</p>
+<ul>
+<li><code>$FLUSS_VERSION$</code>: Expands to the full version (e.g., &quot;0.6.0&quot;)</li>
+<li><code>$FLUSS_VERSION_SHORT$</code>: Expands to the short version (e.g., &quot;0.6&quot;)</li>
+<li><code>$FLUSS_DOCKER_VERSION$</code>: Expands to the docker version (e.g., &quot;0.6.0-rc1&quot;), it is suggested to use this variable when referring to the docker image version that we can link to a RC version during release testing.</li>
+</ul>
+<p>For example, to link to a specific version of Fluss binary:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span class [...]
+<p>The above code block will be rendered as follows for 0.6 version:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span class [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="documentation-linking">Documentation Linking<a href="#documentation-linking" class="hash-link" aria-label="Direct link to Documentation Linking" title="Direct link to Documentation Linking">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="dos">Do&#x27;s<a href="#dos" class="hash-link" aria-label="Direct link to Do&#x27;s" title="Direct link to Do&#x27;s">​</a></h3>
+<ul>
+<li>Use file paths with .md extensions</li>
+</ul>
+<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token url">[</span><span class="token url content">Table Design</span><span class="token url">]( [...]
+<ul>
+<li>Use paths relative to the docs/ directory</li>
+</ul>
+<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token url">[</span><span class="token url content">Flink Engine</span><span class="token url">]( [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="donts">Don&#x27;ts<a href="#donts" class="hash-link" aria-label="Direct link to Don&#x27;ts" title="Direct link to Don&#x27;ts">​</a></h3>
+<ul>
+<li>Use absolute links like <code>/docs/</code> or <code>/blog/</code></li>
+<li>Use URLs without file extensions</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="link-validation">Link Validation<a href="#link-validation" class="hash-link" aria-label="Direct link to Link Validation" title="Direct link to Link Validation">​</a></h3>
+<ul>
+<li>Pull request CI checks for broken links using <code>.github/workflows/docs-check.yaml</code></li>
+<li>Fix any broken links identified in the CI build</li>
+<li>Test locally with <code>npm run build</code> in the website directory</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="submitting-your-contribution">Submitting Your Contribution<a href="#submitting-your-contribution" class="hash-link" aria-label="Direct link to Submitting Your Contribution" title="Direct link to Submitting Your Contribution">​</a></h2>
+<ol>
+<li>Commit your changes with a descriptive message:</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> </span><span class [...]
+<ol start="2">
+<li>Push to your fork:</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> push origin featur [...]
+<ol start="3">
+<li>Create a pull request on GitHub from your branch to the appropriate branch</li>
+</ol>
+<ul>
+<li>For latest docs: target the main branch</li>
+<li>For version-specific changes: target the specific release-x.y branch</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="deployment-process">Deployment Process<a href="#deployment-process" class="hash-link" aria-label="Direct link to Deployment Process" title="Direct link to Deployment Process">​</a></h2>
+<ul>
+<li>The <code>.github/workflows/docs-deploy.yaml</code> workflow automatically deploys documentation</li>
+<li>Triggers when changes are pushed to <code>website/*</code> in any <code>release-*</code> branches or <code>main</code></li>
+<li>Runs <code>build_versioned_docs.sh</code> to collect versioned docs from all release branches</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/how-to-contribute/contribute-docs.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1  [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/how-to-contribute/review-pull-requests/index.html b/community/how-to-contribute/review-pull-requests/index.html
new file mode 100644
index 0000000..66f342c
--- /dev/null
+++ b/community/how-to-contribute/review-pull-requests/index.html
@@ -0,0 +1,57 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-how-to-contribute/review-pull-requests" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Review Pull Requests | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apac [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This guide is for all committers and contributors that want to help with reviewing code contributions. Thank you for your effort - good reviews are one of the most important and crucial parts of an open source project. This guide should help the community to make reviews such that:</p>
+<ul>
+<li>Contributors have a good contribution experience.</li>
+<li>Our reviews are structured and check all important aspects of a contribution.</li>
+<li>We make sure to keep a high code quality in Fluss.</li>
+<li>We avoid situations where contributors and reviewers spend a lot of time refining a contribution that gets rejected later.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="review-checklist">Review Checklist<a href="#review-checklist" class="hash-link" aria-label="Direct link to Review Checklist" title="Direct link to Review Checklist">​</a></h2>
+<p>Every review needs to check the following six aspects. <strong>We encourage to check these aspects in order, to avoid
+spending time on detailed code quality reviews when formal requirements are not met or there is no consensus in
+the community to accept the change.</strong></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-is-the-contribution-well-described">1. Is the Contribution Well-Described?<a href="#1-is-the-contribution-well-described" class="hash-link" aria-label="Direct link to 1. Is the Contribution Well-Described?" title="Direct link to 1. Is the Contribution Well-Described?">​</a></h3>
+<p>Check whether the contribution is sufficiently well-described to support a good review. Trivial changes and fixes
+do not need a long description. If the implementation is exactly according to a prior discussion on issue or the
+development mailing list, only a short reference to that discussion is needed.</p>
+<p>If the implementation is different from the agreed approach in the consensus discussion, a detailed description of
+the implementation is required for any further review of the contribution.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-does-the-contribution-need-attention-from-some-specific-committers">2. Does the Contribution Need Attention from some Specific Committers?<a href="#2-does-the-contribution-need-attention-from-some-specific-committers" class="hash-link" aria-label="Direct link to 2. Does the Contribution Need Attention from some Specific Committers?" title="Direct link to 2. Does the Contribution Need Attention from some Specific Committers?">​</a></h3>
+<p>Some changes require attention and approval from specific committers.</p>
+<p>If the pull request needs specific attention, one of the tagged committers/contributors should give the final approval.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-is-the-overall-code-quality-good-meeting-standard-we-want-to-maintain-in-fluss">3. Is the Overall Code Quality Good, Meeting Standard we Want to Maintain in Fluss?<a href="#3-is-the-overall-code-quality-good-meeting-standard-we-want-to-maintain-in-fluss" class="hash-link" aria-label="Direct link to 3. Is the Overall Code Quality Good, Meeting Standard we Want to Maintain in Fluss?" title="Direct link to 3. Is the Overall Code Quality G [...]
+<ul>
+<li>Does the code follow the right software engineering practices? Is the code correct, robust, maintainable, testable?</li>
+<li>Are the changes performance aware, when changing a performance sensitive part?</li>
+<li>Are the changes sufficiently covered by tests? Are the tests executing fast?</li>
+<li>If dependencies have been changed, were the NOTICE files updated?</li>
+</ul>
+<p>Code guidelines can be found in the <a href="https://flink.apache.org/how-to-contribute/code-style-and-quality-java/" target="_blank" rel="noopener noreferrer">Flink Java Code Style and Quality Guide</a>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-are-the-documentation-updated">4. Are the documentation updated?<a href="#4-are-the-documentation-updated" class="hash-link" aria-label="Direct link to 4. Are the documentation updated?" title="Direct link to 4. Are the documentation updated?">​</a></h3>
+<p>If the pull request introduces a new feature, the feature should be documented.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/how-to-contribute/review-pull-requests.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9S [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/how-to-release/index.html b/community/how-to-release/index.html
new file mode 100644
index 0000000..9c25876
--- /dev/null
+++ b/community/how-to-release/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-how-to-release" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">How to Release | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/how-to-release.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0 [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/welcome/index.html b/community/welcome/index.html
new file mode 100644
index 0000000..e7a723c
--- /dev/null
+++ b/community/welcome/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-welcome" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Welcome | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/commun [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="issues">Issues<a href="#issues" class="hash-link" aria-label="Direct link to Issues" title="Direct link to Issues">​</a></h2>
+<p>Issues are <a href="https://github.com/alibaba/fluss/issues" target="_blank" rel="noopener noreferrer">tracked in GitHub</a>.</p>
+<p>If you are not sure on what to work on, look at issue tagged with <a href="https://github.com/alibaba/fluss/labels/good%20first%20issue" target="_blank" rel="noopener noreferrer">good first issue</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="discussions">Discussions<a href="#discussions" class="hash-link" aria-label="Direct link to Discussions" title="Direct link to Discussions">​</a></h2>
+<p>The development discussions and user questions happen primarily on <a href="https://github.com/alibaba/fluss/discussions" target="_blank" rel="noopener noreferrer">GitHub Discussions</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="slack">Slack<a href="#slack" class="hash-link" aria-label="Direct link to Slack" title="Direct link to Slack">​</a></h2>
+<p>We use the <a href="https://fluss-hq.slack.com/" target="_blank" rel="noopener noreferrer">Fluss workspace</a> on Slack for real-time communication and collaboration. You can join the community using <a href="https://join.slack.com/t/fluss-hq/shared_invite/zt-33wlna581-QAooAiCmnYboJS8D_JUcYw" target="_blank" rel="noopener noreferrer">this invite link</a>.</p>
+<p>Please note that this link may occasionally break when Slack does an upgrade. If you encounter problems using it, please let us know by creating an issue on GitHub.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="community-events">Community Events<a href="#community-events" class="hash-link" aria-label="Direct link to Community Events" title="Direct link to Community Events">​</a></h2>
+<p>Join our monthly community gatherings to get involved:</p>
+<p><strong>Fluss Contributors Call</strong></p>
+<p>Agenda for upcoming meeting: <a href="https://docs.google.com/document/d/18b7G_dvYx-1FogV7LWEFMHXze5D5T9XZ3h9zSU75dDA/edit?tab=t.0#heading=h.w6zqoksn877i" target="_blank" rel="noopener noreferrer">Community Sync Docs</a></p>
+<p>Invitation link: <a href="https://calendar.google.com/calendar/u/0?cid=MjUzMjY2OTFkY2FmNmRiYjk5MzllZmUxNDliYjg1ZjI4ODhhNjU0YzY5Mzc2M2IyZDQ1NzIwNTAyZGU1MjZmOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t" target="_blank" rel="noopener noreferrer">Community Events</a></p>
+<p>Community calls are a great opportunity to discuss the project roadmap, implementation details, and connect with other contributors.</p>
+<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>The <strong>Google Calendar</stro [...]
+<iframe src="https://calendar.google.com/calendar/embed?src=25326691dcaf6dbb9939efe149bb85f2888a654c693763b2d45720502de526f8%40group.calendar.google.com&amp;ctz=Greenwich" width="800" height="600" frameborder="0" scrolling="no"></iframe></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/community/welcome.md" target="_blank" rel="noopener noreferr [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/concepts/architecture/index.html b/docs/0.5/concepts/architecture/index.html
new file mode 100644
index 0000000..b563060
--- /dev/null
+++ b/docs/0.5/concepts/architecture/index.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-concepts/architecture" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Architecture | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>A Fluss cluster consists of two main processes: the <strong>CoordinatorServer</strong> and the <strong>TabletServer</strong>.</p>
+<p><img decoding="async" loading="lazy" alt="Fluss Architecture" src="/assets/images/architecture-b318beb94d717f94d6fe64b6303e79ab.png" width="6714" height="4904" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="coordinatorserver">CoordinatorServer<a href="#coordinatorserver" class="hash-link" aria-label="Direct link to CoordinatorServer" title="Direct link to CoordinatorServer">​</a></h2>
+<p>The <strong>CoordinatorServer</strong> serves as the central control and management component of the cluster. It is responsible for maintaining metadata, managing tablet allocation, listing nodes, and handling permissions.</p>
+<p>Additionally, it coordinates critical operations such as:</p>
+<ul>
+<li>Rebalancing data during node scaling (upscaling or downscaling).</li>
+<li>Managing data migration and service node switching in the event of node failures.</li>
+<li>Overseeing table management tasks, including creating or deleting tables and updating bucket counts.</li>
+</ul>
+<p>As the <strong>brain</strong> of the cluster, the <strong>Coordinator Server</strong> ensures efficient cluster operation and seamless management of resources.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="tabletserver">TabletServer<a href="#tabletserver" class="hash-link" aria-label="Direct link to TabletServer" title="Direct link to TabletServer">​</a></h2>
+<p>The <strong>TabletServer</strong> is responsible for data storage, persistence, and providing I/O services directly to users. It comprises two key components: <strong>LogStore</strong> and <strong>KvStore</strong>.</p>
+<ul>
+<li>For <strong>PrimaryKey Tables</strong> which support updates, both <strong>LogStore</strong> and <strong>KvStore</strong> are activated. The KvStore is used to support updates and point lookup efficiently. LogStore is used to store the changelogs of the table.</li>
+<li>For <strong>Log Tables</strong> which only supports appends, only the <strong>LogStore</strong> is activated, optimizing performance for write-heavy workloads.</li>
+</ul>
+<p>This architecture ensures the <strong>TabletServer</strong> delivers tailored data handling capabilities based on table types.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="logstore">LogStore<a href="#logstore" class="hash-link" aria-label="Direct link to LogStore" title="Direct link to LogStore">​</a></h3>
+<p>The <strong>LogStore</strong> is designed to store log data, functioning similarly to a database binlog.
+Messages can only be appended, not modified, ensuring data integrity.
+Its primary purpose is to enable low-latency streaming reads and to serve as the write-ahead log (WAL) for restoring the <strong>KvStore</strong>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="kvstore">KvStore<a href="#kvstore" class="hash-link" aria-label="Direct link to KvStore" title="Direct link to KvStore">​</a></h3>
+<p>The <strong>KvStore</strong> is used to store table data, functioning similarly to database tables. It supports data updates and deletions, enabling efficient querying and table management. Additionally, it generates comprehensive changelogs to track data modifications.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tablet--bucket">Tablet / Bucket<a href="#tablet--bucket" class="hash-link" aria-label="Direct link to Tablet / Bucket" title="Direct link to Tablet / Bucket">​</a></h3>
+<p>Table data is divided into multiple buckets based on the defined bucketing policy.</p>
+<p>Data for the <strong>LogStore</strong> and <strong>KvStore</strong> is stored within tablets. Each tablet consists of a <strong>LogTablet</strong> and, optionally, a <strong>KvTablet</strong>, depending on whether the table supports updates.
+Both <strong>LogStore</strong> and <strong>KvStore</strong> adhere to the same bucket-splitting and tablet allocation policies. As a result, <strong>LogTablets</strong> and <strong>KvTablets</strong> with the same <code>tablet_id</code> are always allocated to the same <strong>TabletServer</strong> for efficient data management.</p>
+<p>The <strong>LogTablet</strong> supports multiple replicas based on the table&#x27;s configured replication factor, ensuring high availability and fault tolerance. <strong>Currently, replication is not supported for KvTablets</strong>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">Zookeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to Zookeeper" title="Direct link to Zookeeper">​</a></h2>
+<p>Fluss currently utilizes <strong>ZooKeeper</strong> for cluster coordination, metadata storage, and cluster configuration management.
+In upcoming releases, <strong>ZooKeeper will be replaced</strong> by <strong>KvStore</strong> for metadata storage and <strong>Raft</strong> for cluster coordination and ensuring consistency. This transition aims to streamline operations and enhance system reliability. See the <a href="/roadmap/">Roadmap</a> for more details.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="remote-storage">Remote Storage<a href="#remote-storage" class="hash-link" aria-label="Direct link to Remote Storage" title="Direct link to Remote Storage">​</a></h2>
+<p><strong>Remote Storage</strong> serves two primary purposes:</p>
+<ul>
+<li><strong>Hierarchical Storage for LogStores:</strong> By offloading LogStore data, it reduces storage costs and accelerates scaling operations.</li>
+<li><strong>Persistent Storage for KvStores:</strong> It ensures durable storage for KvStore data and collaborates with LogStore to enable fault recovery.</li>
+</ul>
+<p>Additionally, <strong>Remote Storage</strong> allows clients to perform bulk read operations on Log and Kv data, enhancing data analysis efficiency and reduce the overhead on Fluss servers. In the future, it will also support bulk write operations, optimizing data import workflows for greater scalability and performance.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="client">Client<a href="#client" class="hash-link" aria-label="Direct link to Client" title="Direct link to Client">​</a></h2>
+<p>Fluss clients/sdks support streaming reads/writes, batch read/writes, DDL and point queries. Currently, the main implementation of client is Flink Connector. Users can use Flink SQL to easily operate Fluss tables and data.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/concepts/architecture.md" target="_blank" rel="noopener norefer [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/dev/building/index.html b/docs/0.5/dev/building/index.html
new file mode 100644
index 0000000..93f06db
--- /dev/null
+++ b/docs/0.5/dev/building/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-dev/building" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Building Fluss from Source | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://flus [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This page covers how to build Fluss 0.6.0-SNAPSHOT from sources.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="build-fluss">Build Fluss<a href="#build-fluss" class="hash-link" aria-label="Direct link to Build Fluss" title="Direct link to Build Fluss">​</a></h2>
+<p>In order to build Fluss you need to get the source code by <a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">clone the git repository</a>.</p>
+<p>In addition, you need <strong>Maven 3.8.6</strong> and a <strong>JDK</strong> (Java Development Kit). Fluss requires <strong>Java 8 or Java 11</strong> to build.</p>
+<p>To clone from git, enter:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> clone git@github.c [...]
+<p>The simplest way of building Fluss is by running:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">mvn clean </span><span class="token function" style="color:rgb(220, 220, 170)">install</spa [...]
+<p>This instructs <a href="http://maven.apache.org" target="_blank" rel="noopener noreferrer">Maven</a> (<code>mvn</code>) to first remove all existing builds (<code>clean</code>) and then create a new Fluss binary (<code>install</code>).</p>
+<p>To speed up the build you can:</p>
+<ul>
+<li>skip tests by using <code> -DskipTests</code></li>
+<li>use Maven&#x27;s parallel build feature, e.g., <code>mvn package -T 1C</code> will attempt to build 1 module for each CPU core in parallel.</li>
+</ul>
+<p>The build script will be:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">mvn clean </span><span class="token function" style="color:rgb(220, 220, 170)">install</spa [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/dev/ide-setup/index.html b/docs/0.5/dev/ide-setup/index.html
new file mode 100644
index 0000000..1f7b250
--- /dev/null
+++ b/docs/0.5/dev/ide-setup/index.html
@@ -0,0 +1,151 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-dev/ide-setup" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Import Fluss into an IDE | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>The sections below describe how to import the Fluss project into an IDE
+for the development of Fluss itself.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+command line first (<code>mvn clean package -DskipTests</code>) as it might be your IDE
+that has a bug or is not properly set up.</p></div></div>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="preparation">Preparation<a href="#preparation" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h2>
+<p>To get started, please first checkout the Fluss sources from our
+<a href="https://github.com/alibaba/fluss" target="_blank" rel="noopener noreferrer">repository</a>,
+e.g.</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">git</span><span class="token plain"> clone git@github.c [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="intellij-idea">IntelliJ IDEA<a href="#intellij-idea" class="hash-link" aria-label="Direct link to IntelliJ IDEA" title="Direct link to IntelliJ IDEA">​</a></h2>
+<p>The following guide has been written for <a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener noreferrer">IntelliJ IDEA</a>
+2024.3. Some details might differ in other versions. Please make sure to follow all steps</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="importing-fluss">Importing Fluss<a href="#importing-fluss" class="hash-link" aria-label="Direct link to Importing Fluss" title="Direct link to Importing Fluss">​</a></h3>
+<ol>
+<li>Choose &quot;New&quot; → &quot;Project from Existing Sources&quot;.</li>
+<li>Select the root folder of the cloned Fluss repository.</li>
+<li>Choose &quot;Import project from external model&quot; and select &quot;Maven&quot;.</li>
+<li>Leave the default options and successively click &quot;Next&quot; until you reach the SDK section.</li>
+<li>If there is no SDK listed, create one using the &quot;+&quot; sign on the top left.
+Select &quot;JDK&quot;, choose the JDK home directory and click &quot;OK&quot;.
+Select the most suitable JDK version. NOTE: A good rule of thumb is to select
+the JDK version matching the active Maven profile.</li>
+<li>Continue by clicking &quot;Next&quot; until the import is finished.</li>
+<li>Open the &quot;Maven&quot; tab (or right-click on the imported project and find &quot;Maven&quot;) and run
+&quot;Generate Sources and Update Folders&quot;. Alternatively, you can run
+<code>mvn clean package -DskipTests</code>.</li>
+<li>Build the Project (&quot;Build&quot; → &quot;Build Project&quot;).</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="copyright-profile">Copyright Profile<a href="#copyright-profile" class="hash-link" aria-label="Direct link to Copyright Profile" title="Direct link to Copyright Profile">​</a></h3>
+<p>Every file needs to include the Alibaba license as a header. This can be automated in IntelliJ by
+adding a Copyright profile:</p>
+<ol>
+<li>
+<p>Go to &quot;Settings&quot; → &quot;Editor&quot; → &quot;Copyright&quot; → &quot;Copyright Profiles&quot;.</p>
+</li>
+<li>
+<p>Add a new profile and name it &quot;Alibaba&quot;.</p>
+</li>
+<li>
+<p>Add the following text as the license text:</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain"> Copyright (c) 2024 Alibaba Group Holding Ltd.</span><br></span><span class="token-line" st [...]
+</li>
+<li>
+<p>Go to &quot;Editor&quot; → &quot;Copyright&quot; and choose the &quot;Alibaba&quot; profile as the default profile for this
+project.</p>
+</li>
+<li>
+<p>Click &quot;Apply&quot;.</p>
+</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="required-plugins">Required Plugins<a href="#required-plugins" class="hash-link" aria-label="Direct link to Required Plugins" title="Direct link to Required Plugins">​</a></h3>
+<p>Go to &quot;Settings&quot; → &quot;Plugins&quot; and select the &quot;Marketplace&quot; tab. Search for the following plugins,
+install them, and restart the IDE if prompted:</p>
+<ul>
+<li><a href="https://plugins.jetbrains.com/plugin/22113-save-actions-x" target="_blank" rel="noopener noreferrer">Save Actions X</a></li>
+<li><a href="https://plugins.jetbrains.com/plugin/1065-checkstyle-idea" target="_blank" rel="noopener noreferrer">Checkstyle-IDEA</a></li>
+</ul>
+<p>You will also need to install the <a href="https://github.com/google/google-java-format" target="_blank" rel="noopener noreferrer">google-java-format</a>
+plugin. However, a specific version of this plugin is required. Download
+<a href="https://plugins.jetbrains.com/plugin/8527-google-java-format/versions/stable/115957" target="_blank" rel="noopener noreferrer">google-java-format v1.7.0.6</a>
+and install it as follows. <strong>Make sure to never update this plugin</strong>.</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Plugins&quot;.</li>
+<li>Click the gear icon and select &quot;Install Plugin from Disk&quot;.</li>
+<li>Navigate to the downloaded ZIP file and select it.</li>
+</ol>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="code-formatting">Code Formatting<a href="#code-formatting" class="hash-link" aria-label="Direct link to Code Formatting" title="Direct link to Code Formatting">​</a></h4>
+<p>Fluss uses <a href="https://github.com/diffplug/spotless/tree/main/plugin-maven" target="_blank" rel="noopener noreferrer">Spotless</a> together with
+<a href="https://github.com/google/google-java-format" target="_blank" rel="noopener noreferrer">google-java-format</a> to format the Java code.</p>
+<p>It is recommended to automatically format your code by applying the following settings:</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Other Settings&quot; → &quot;google-java-format Settings&quot;.</li>
+<li>Tick the checkbox to enable the plugin.</li>
+<li>Change the code style to &quot;Android Open Source Project (AOSP) style&quot;.</li>
+<li>Go to &quot;Settings&quot; → &quot;Tools&quot; → &quot;Actions on Save&quot;.</li>
+<li>Under &quot;Formatting Actions&quot;, select &quot;Optimize imports&quot; and &quot;Reformat code&quot;.</li>
+<li>From the &quot;All file types list&quot; next to &quot;Reformat code&quot;, select Java and Scala.</li>
+</ol>
+<p>For earlier IntelliJ IDEA versions:</p>
+<ol start="4">
+<li>Go to &quot;Settings&quot; → &quot;Other Settings&quot; → &quot;Save Actions&quot;.</li>
+<li>Under &quot;General&quot;, enable your preferred settings for when to format the code, e.g. &quot;Activate save actions on save&quot;.</li>
+<li>Under &quot;Formatting Actions&quot;, select &quot;Optimize imports&quot; and &quot;Reformat file&quot;.</li>
+<li>Under &quot;File Path Inclusions&quot;, add an entry for <code>.*\.java</code> to avoid formatting other file types.</li>
+</ol>
+<p>You can also format the whole project via Maven by using <code>mvn spotless:apply</code>.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="checkstyle-for-java">Checkstyle For Java<a href="#checkstyle-for-java" class="hash-link" aria-label="Direct link to Checkstyle For Java" title="Direct link to Checkstyle For Java">​</a></h4>
+<p><a href="https://checkstyle.sourceforge.io/" target="_blank" rel="noopener noreferrer">Checkstyle</a> is used to enforce static coding guidelines.</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Tools&quot; → &quot;Checkstyle&quot;.</li>
+<li>Set &quot;Scan Scope&quot; to &quot;Only Java sources (including tests)&quot;.</li>
+<li>For &quot;Checkstyle Version&quot; select &quot;9.3&quot;.</li>
+<li>Under &quot;Configuration File&quot; click the &quot;+&quot; icon to add a new configuration.</li>
+<li>Set &quot;Description&quot; to &quot;Fluss&quot;.</li>
+<li>Select &quot;Use a local Checkstyle file&quot; and point it to <code>tools/maven/checkstyle.xml</code> located within
+your cloned repository.</li>
+<li>Select &quot;Store relative to project location&quot; and click &quot;Next&quot;.</li>
+<li>Configure the property <code>checkstyle.suppressions.file</code> with the value <code>suppressions.xml</code> and click
+&quot;Next&quot;.</li>
+<li>Click &quot;Finish&quot;.</li>
+<li>Select &quot;Fluss&quot; as the only active configuration file and click &quot;Apply&quot;.</li>
+</ol>
+<p>You can now import the Checkstyle configuration for the Java code formatter.</p>
+<ol>
+<li>Go to &quot;Settings&quot; → &quot;Editor&quot; → &quot;Code Style&quot; → &quot;Java&quot;.</li>
+<li>Click the gear icon next to &quot;Scheme&quot; and select &quot;Import Scheme&quot; → &quot;Checkstyle Configuration&quot;.</li>
+<li>Navigate to and select <code>tools/maven/checkstyle.xml</code> located within your cloned repository.</li>
+</ol>
+<p>To verify the setup, click &quot;View&quot; → &quot;Tool Windows&quot; → &quot;Checkstyle&quot; and find the &quot;Check Module&quot;
+button in the opened tool window. It should report no violations.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="common-problems">Common Problems<a href="#common-problems" class="hash-link" aria-label="Direct link to Common Problems" title="Direct link to Common Problems">​</a></h3>
+<p>This section lists issues that developers have run into in the past when working with IntelliJ.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compilation-fails-with-invalid-flag---add-exportsjavabasesunnetutilall-unnamed">Compilation fails with <code>invalid flag: --add-exports=java.base/sun.net.util=ALL-UNNAMED</code><a href="#compilation-fails-with-invalid-flag---add-exportsjavabasesunnetutilall-unnamed" class="hash-link" aria-label="Direct link to compilation-fails-with-invalid-flag---add-exportsjavabasesunnetutilall-unnamed" title="Direct link to compilation-fails-with-inv [...]
+<p>This happens if the &quot;java11&quot; Maven profile is active, but an older JDK version is used. Go to
+&quot;View&quot; → &quot;Tool Windows&quot; → &quot;Maven&quot; and uncheck the &quot;java11&quot; profile. Afterwards, reimport the
+project.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compilation-fails-with-package-sunmisc-does-not-exist">Compilation fails with <code>package sun.misc does not exist</code><a href="#compilation-fails-with-package-sunmisc-does-not-exist" class="hash-link" aria-label="Direct link to compilation-fails-with-package-sunmisc-does-not-exist" title="Direct link to compilation-fails-with-package-sunmisc-does-not-exist">​</a></h4>
+<p>This happens if you are using JDK 11 and compile to Java 8 with the <code>--release</code> option. This option is currently incompatible with our build setup.
+Go to &quot;Settings&quot; → &quot;Build, Execution, Deployment&quot; → &quot;Compiler&quot; → &quot;Java Compiler&quot; and uncheck the &quot;Use &#x27;--release&#x27; option for cross-compilation (Java 9 and later)&quot;.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="examples-fail-with-a-noclassdeffounderror-for-fluss-classes">Examples fail with a <code>NoClassDefFoundError</code> for Fluss classes.<a href="#examples-fail-with-a-noclassdeffounderror-for-fluss-classes" class="hash-link" aria-label="Direct link to examples-fail-with-a-noclassdeffounderror-for-fluss-classes" title="Direct link to examples-fail-with-a-noclassdeffounderror-for-fluss-classes">​</a></h4>
+<p>This happens if Fluss dependencies are set to &quot;provided&quot;, resulting in them not being available
+on the classpath. You can either check &quot;Include dependencies with &#x27;Provided&#x27; scope&quot; in your
+run configuration, or create a test that calls the <code>main()</code> method of the example.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/dev/ide-setup.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="tru [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/engine-flink/ddl/index.html b/docs/0.5/engine-flink/ddl/index.html
new file mode 100644
index 0000000..a4c277d
--- /dev/null
+++ b/docs/0.5/engine-flink/ddl/index.html
@@ -0,0 +1,63 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-engine-flink/ddl" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink DDL | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-catalog">Create Catalog<a href="#create-catalog" class="hash-link" aria-label="Direct link to Create Catalog" title="Direct link to Create Catalog">​</a></h2>
+<p>Fluss supports creating and managing tables through the Fluss Catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> CATALOG fluss_catal [...]
+<p>The following properties can be set if using the Fluss catalog:</p>
+<table><thead><tr><th>Option</th><th>Required</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>type</td><td>required</td><td>(none)</td><td>Catalog type, must to be &#x27;fluss&#x27; here.</td></tr><tr><td>bootstrap.servers</td><td>required</td><td>(none)</td><td>Comma separated list of Fluss servers.</td></tr><tr><td>default-database</td><td>optional</td><td>fluss</td><td>The default database to use when switching to this catalog.</td></tr></tbody></table>
+<p>The following introduced statements assuming the current catalog is switched to the Fluss catalog using <code>USE CATALOG &lt;catalog_name&gt;</code> statement.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-database">Create Database<a href="#create-database" class="hash-link" aria-label="Direct link to Create Database" title="Direct link to Create Database">​</a></h2>
+<p>By default, FlussCatalog will use the <code>fluss</code> database in Flink. Using the following example to create a separate database in order to avoid creating tables under the default <code>fluss</code> database:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="drop-database">Drop Database<a href="#drop-database" class="hash-link" aria-label="Direct link to Drop Database" title="Direct link to Drop Database">​</a></h2>
+<p>To delete a database, this will drop all the tables in the database as well:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Flink doesn&#x27;t allow drop current database, switch t [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-table">Create Table<a href="#create-table" class="hash-link" aria-label="Direct link to Create Table" title="Direct link to Create Table">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="primarykey-table">PrimaryKey Table<a href="#primarykey-table" class="hash-link" aria-label="Direct link to PrimaryKey Table" title="Direct link to PrimaryKey Table">​</a></h3>
+<p>The following SQL statement will create a <a href="/docs/0.5/table-design/table-types/pk-table/">PrimaryKey Table</a> with a primary key consisting of shop_id and user_id.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="log-table">Log Table<a href="#log-table" class="hash-link" aria-label="Direct link to Log Table" title="Direct link to Log Table">​</a></h3>
+<p>The following SQL statement creates a <a href="/docs/0.5/table-design/table-types/log-table/">Log Table</a> by not specifying primary key clause.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partitioned-primarykeylog-table">Partitioned (PrimaryKey/Log) Table<a href="#partitioned-primarykeylog-table" class="hash-link" aria-label="Direct link to Partitioned (PrimaryKey/Log) Table" title="Direct link to Partitioned (PrimaryKey/Log) Table">​</a></h3>
+<p>The following SQL statement creates a Partitioned PrimaryKey Table in Fluss. Note that the partitioned field (<code>dt</code> in this case) must be a subset of the primary key (<code>dt, shop_id, user_id</code> in this case).
+Currently, Fluss only supports one partitioned field with <code>STRING</code> type.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<p>The following SQL statement creates a Partitioned Log Table in Fluss.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<p>The supported option in &quot;with&quot; parameters when creating a table are as follows:</p>
+<table><thead><tr><th>Option</th><th>Type</th><th>Required</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>bucket.num</td><td>int</td><td>optional</td><td>The bucket number of Fluss cluster.</td><td>The number of buckets of a Fluss table.</td></tr><tr><td>bucket.key</td><td>String</td><td>optional</td><td>(none)</td><td>Specific the distribution policy of the Fluss table. Data will be distributed to each bucket according to the hash value of bucket-key.  If you specif [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-table-like">Create Table Like<a href="#create-table-like" class="hash-link" aria-label="Direct link to Create Table Like" title="Direct link to Create Table Like">​</a></h2>
+<p>To create a table with the same schema, partitioning, and table properties as another table, use <code>CREATE TABLE LIKE</code>.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- there is a temporary datagen table</span><span class="to [...]
+<p>For more details, refer to the <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/create/#like" target="_blank" rel="noopener noreferrer">Flink CREATE TABLE</a> documentation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="drop-table">Drop Table<a href="#drop-table" class="hash-link" aria-label="Direct link to Drop Table" title="Direct link to Drop Table">​</a></h2>
+<p>To delete a table, run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">DROP</span><span class="token plain"> </span><span class="t [...]
+<p>This will entirely remove all the data of the table in the Fluss cluster.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/engine-flink/ddl.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d= [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/engine-flink/getting-started/index.html b/docs/0.5/engine-flink/getting-started/index.html
new file mode 100644
index 0000000..2735f95
--- /dev/null
+++ b/docs/0.5/engine-flink/getting-started/index.html
@@ -0,0 +1,92 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-engine-flink/getting-started" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Getting Started with Flink Engine | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="quick-start">Quick Start<a href="#quick-start" class="hash-link" aria-label="Direct link to Quick Start" title="Direct link to Quick Start">​</a></h2>
+<p>For a quick introduction to running Flink, refer to the <a href="/docs/0.5/quickstart/flink/">Quick Start</a> guide.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="support-flink-versions">Support Flink Versions<a href="#support-flink-versions" class="hash-link" aria-label="Direct link to Support Flink Versions" title="Direct link to Support Flink Versions">​</a></h2>
+<table><thead><tr><th>Fluss Connector Versions</th><th>Supported Flink Versions</th></tr></thead><tbody><tr><td>0.5</td><td>1.18, 1.19, 1.20</td></tr></tbody></table>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="feature-support">Feature Support<a href="#feature-support" class="hash-link" aria-label="Direct link to Feature Support" title="Direct link to Feature Support">​</a></h2>
+<p>Fluss only supports Apache Flink&#x27;s Table API.</p>
+<table><thead><tr><th>Feature support</th><th>Flink</th><th>Notes</th></tr></thead><tbody><tr><td><a href="/docs/0.5/engine-flink/ddl/#create-catalog">SQL create catalog</a></td><td>✔️</td><td></td></tr><tr><td><a href="/docs/0.5/engine-flink/ddl/#create-database">SQl create database</a></td><td>✔️</td><td></td></tr><tr><td><a href="/docs/0.5/engine-flink/ddl/#drop-database">SQL drop database</a></td><td>✔️</td><td></td></tr><tr><td><a href="/docs/0.5/engine-flink/ddl/#create-table">SQL  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="preparation-when-using-flink-sql-client">Preparation when using Flink SQL Client<a href="#preparation-when-using-flink-sql-client" class="hash-link" aria-label="Direct link to Preparation when using Flink SQL Client" title="Direct link to Preparation when using Flink SQL Client">​</a></h2>
+<ul>
+<li><strong>Download Flink</strong></li>
+</ul>
+<p>Flink runs on all UNIX-like environments, i.e. Linux, Mac OS X, and Cygwin (for Windows).
+If you haven’t downloaded Flink, you can download <a href="https://flink.apache.org/downloads.html" target="_blank" rel="noopener noreferrer">the binary release</a> of Flink, then extract the archive with the following command.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span cla [...]
+<ul>
+<li><strong>Copy Fluss Connector Jar</strong></li>
+</ul>
+<p>Download <a href="/downloads/#fluss-connector">Fluss connector jar</a> and copy to the lib directory of your Flink home.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">cp</span><span class="token plain"> fluss-connector-f [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+you should download the corresponding <a href="/downloads/#filesystem-jars">Fluss filesystem jar</a> and also copy it to the lib directory of your Flink home.</p></div></div>
+<ul>
+<li><strong>Start a local cluster</strong></li>
+</ul>
+<p>To start a local cluster, run the bash script that comes with Flink:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)">&lt;</span><span class="token plain">FLINK_HOME</span [...]
+<p>You should be able to navigate to the web UI at <a href="http://localhost:8081/" target="_blank" rel="noopener noreferrer">localhost:8081</a> to view the Flink dashboard and see that the cluster is up and running. You can also check its status with the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">ps</span><span class="token plain"> aux </span><span  [...]
+<ul>
+<li><strong>Start a sql client</strong></li>
+</ul>
+<p>To quickly stop the cluster and all running components, you can use the provided script:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)">&lt;</span><span class="token plain">FLINK_HOME</span [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="creating-a-catalog">Creating a Catalog<a href="#creating-a-catalog" class="hash-link" aria-label="Direct link to Creating a Catalog" title="Direct link to Creating a Catalog">​</a></h2>
+<p>You can use the following SQL statement to create a catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<li>The <code>bootstrap.servers</code> means the Fluss server address. Before you config the <code>bootstrap.servers</code>,
+you should start the Fluss server first. See <a href="/docs/0.5/install-deploy/overview/#how-to-deploy-fluss">Deploying Fluss</a>
+for how to build a Fluss cluster.
+Here, it is assumed that there is a Fluss cluster running on your local machine and the CoordinatorServer port is 9123.</li>
+<li>The<code> bootstrap.servers</code> configuration is used to discover all nodes within the Fluss cluster. It can be set with one or more (up to three) Fluss server addresses (either CoordinatorServer or TabletServer) separated by commas.</li>
+</ol></div></div>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="creating-a-table">Creating a Table<a href="#creating-a-table" class="hash-link" aria-label="Direct link to Creating a Table" title="Direct link to Creating a Table">​</a></h2>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE< [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-writing">Data Writing<a href="#data-writing" class="hash-link" aria-label="Direct link to Data Writing" title="Direct link to Data Writing">​</a></h2>
+<p>To append new data to a table, you can use <code>INSERT INTO</code> in batch mode or streaming mode:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- E [...]
+<p>To update data record with the primary key (1234, 1234) in a Flink streaming job, use the UPDATE statement as follows:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<p>To delete the data record with primary key <code>(12345, 12345)</code>, use <code>DELETE FROM</code>:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-reading">Data Reading<a href="#data-reading" class="hash-link" aria-label="Direct link to Data Reading" title="Direct link to Data Reading">​</a></h2>
+<p>To retrieve data with the primary key <code>(1234, 1234)</code>, you can perform a point query by applying a filter on the primary key:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<p>To preview a subset of the data in a table, you can use a <code>LIMIT</code> clause.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<p>Fluss supports processing incremental data reading in flink streaming jobs:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- S [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="type-conversion">Type Conversion<a href="#type-conversion" class="hash-link" aria-label="Direct link to Type Conversion" title="Direct link to Type Conversion">​</a></h2>
+<p>Fluss&#x27;s integration for Flink automatically converts between Flink and Fluss types.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss---apache-flink">Fluss -&gt; Apache Flink<a href="#fluss---apache-flink" class="hash-link" aria-label="Direct link to Fluss -&gt; Apache Flink" title="Direct link to Fluss -&gt; Apache Flink">​</a></h3>
+<table><thead><tr><th>Fluss</th><th>Flink</th></tr></thead><tbody><tr><td>BOOLEAN</td><td>BOOLEAN</td></tr><tr><td>TINYINT</td><td>TINYINT</td></tr><tr><td>SMALLINT</td><td>SMALLINT</td></tr><tr><td>INT</td><td>INT</td></tr><tr><td>BIGINT</td><td>BIGINT</td></tr><tr><td>FLOAT</td><td>FLOAT</td></tr><tr><td>DOUBLE</td><td>DOUBLE</td></tr><tr><td>CHAR</td><td>CHAR</td></tr><tr><td>STRING</td><td>STRING</td></tr><tr><td>DECIMAL</td><td>DECIMAL</td></tr><tr><td>DATE</td><td>DATE</td></tr><tr [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-flink---fluss">Apache Flink -&gt; Fluss<a href="#apache-flink---fluss" class="hash-link" aria-label="Direct link to Apache Flink -&gt; Fluss" title="Direct link to Apache Flink -&gt; Fluss">​</a></h3>
+<table><thead><tr><th>Flink</th><th>Fluss</th></tr></thead><tbody><tr><td>BOOLEAN</td><td>BOOLEAN</td></tr><tr><td>SMALLINT</td><td>SMALLINT</td></tr><tr><td>INT</td><td>INT</td></tr><tr><td>BIGINT</td><td>BIGINT</td></tr><tr><td>FLOAT</td><td>FLOAT</td></tr><tr><td>DOUBLE</td><td>DOUBLE</td></tr><tr><td>CHAR</td><td>CHAR</td></tr><tr><td>STRING</td><td>STRING</td></tr><tr><td>DECIMAL</td><td>DECIMAL</td></tr><tr><td>DATE</td><td>DATE</td></tr><tr><td>TIME</td><td>TIME</td></tr><tr><td>T [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/engine-flink/lookups/index.html b/docs/0.5/engine-flink/lookups/index.html
new file mode 100644
index 0000000..6d9d2c1
--- /dev/null
+++ b/docs/0.5/engine-flink/lookups/index.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-engine-flink/lookups" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink Lookup Joins | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Flink lookup joins are important because they enable efficient, real-time enrichment of streaming data with reference data, a common requirement in many real-time analytics and processing scenarios.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="instructions">Instructions<a href="#instructions" class="hash-link" aria-label="Direct link to Instructions" title="Direct link to Instructions">​</a></h2>
+<ul>
+<li>Use a primary key table as a dimension table,  and the join condition must include all primary keys of the dimension table.</li>
+<li>Fluss lookup join is in asynchronous mode by default for higher throughput. You can change the mode of lookup join as synchronous mode by setting the SQL Hint <code>&#x27;lookup.async&#x27; = &#x27;false&#x27;</code>.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
+<ol>
+<li>Create two tables.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<ol start="2">
+<li>Perform lookup join.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span><span class="token plain"> CATALOG </span><span c [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookup-options">Lookup Options<a href="#lookup-options" class="hash-link" aria-label="Direct link to Lookup Options" title="Direct link to Lookup Options">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Required</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>lookup.cache</td><td>Enum</td><td>optional</td><td>NONE</td><td>The caching strategy for this lookup table, including NONE, PARTIAL.</td></tr><tr><td>lookup.max-retries</td><td>Integer</td><td>optional</td><td>3</td><td>The maximum allowed retries if a lookup operation fails.</td></tr><tr><td>lookup.partial-cache.expire-after-access</td><td>Duration</td><td>optio [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/engine-flink/reads/index.html b/docs/0.5/engine-flink/reads/index.html
new file mode 100644
index 0000000..5890ec6
--- /dev/null
+++ b/docs/0.5/engine-flink/reads/index.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-engine-flink/reads" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink Reads | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/do [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss supports streaming and batch read with <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer">Apache Flink</a>&#x27;s SQL &amp; Table API. Execute the following SQL command to switch execution mode from streaming to batch, and vice versa:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute the flink job in streaming mode for current sess [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-read">Streaming Read<a href="#streaming-read" class="hash-link" aria-label="Direct link to Streaming Read" title="Direct link to Streaming Read">​</a></h2>
+<p>By default, Streaming read produces the latest snapshot on the table upon first startup, and continue to read the latest changes.</p>
+<p>Fluss by default ensures that your startup is properly processed with all data included.</p>
+<p>Fluss Source in streaming mode is unbounded, like a queue that never ends.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SET</span><span class="token plain"> </span><span class="to [...]
+<p>You can also do streaming read without reading the snapshot data, you can use <code>latest</code> scan mode, which only reads the changelogs (or logs) from the latest offset:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="batch-read">Batch Read<a href="#batch-read" class="hash-link" aria-label="Direct link to Batch Read" title="Direct link to Batch Read">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="limit-read">Limit Read<a href="#limit-read" class="hash-link" aria-label="Direct link to Limit Read" title="Direct link to Limit Read">​</a></h3>
+<p>The Fluss source supports limiting reads for both primary-key tables and log tables, making it convenient to preview the latest <code>N</code> records in a table.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h4>
+<ol>
+<li>Create a table and prepare data</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<ol start="2">
+<li>Query from table.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute the flink job in batch mode for current session  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="point-query">Point Query<a href="#point-query" class="hash-link" aria-label="Direct link to Point Query" title="Direct link to Point Query">​</a></h3>
+<p>The Fluss source supports point queries for primary-key tables, allowing you to inspect specific records efficiently. Currently, this functionality is exclusive to primary-key tables.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="example-1">Example<a href="#example-1" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h4>
+<ol>
+<li>Create a table and prepare data</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<ol start="2">
+<li>Query from table.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute the flink job in batch mode for current session  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="aggregations">Aggregations<a href="#aggregations" class="hash-link" aria-label="Direct link to Aggregations" title="Direct link to Aggregations">​</a></h3>
+<p>The Fluss source supports pushdown count aggregation for the log table in batch mode. It is useful to preview the total number of the log table;</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute the flink job in batch mode for current session  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="read-options">Read Options<a href="#read-options" class="hash-link" aria-label="Direct link to Read Options" title="Direct link to Read Options">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="scanstartupmode">scan.startup.mode<a href="#scanstartupmode" class="hash-link" aria-label="Direct link to scan.startup.mode" title="Direct link to scan.startup.mode">​</a></h3>
+<p>The scan startup mode enables you to specify the starting point for data consumption. Fluss currently supports the following <code>scan.startup.mode</code> options:</p>
+<ul>
+<li><code>initial</code> (default): For primary key tables, it first consumes the full data set and then consumes incremental data. For log tables, it starts consuming from the earliest offset.</li>
+<li><code>earliest</code>: For primary key tables, it starts consuming from the earliest changelog offset; for log tables, it starts consuming from the earliest log offset.</li>
+<li><code>latest</code>: For primary key tables, it starts consuming from the latest changelog offset; for log tables, it starts consuming from the latest log offset.</li>
+<li><code>timestamp</code>: For primary key tables, it starts consuming the changelog from a specified time (defined by the configuration item <code>scan.startup.timestamp</code>); for log tables, it starts consuming from the offset corresponding to the specified time.</li>
+</ul>
+<p>You can dynamically apply the scan parameters via SQL hints. For instance, the following SQL statement temporarily sets the <code>scan.startup.mode</code> to latest when consuming the <code>log_table</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</span><span class="token plain"> </span><span class= [...]
+<p>Also, the following SQL statement temporarily sets the <code>scan.startup.mode</code> to timestamp when consuming the <code>log_table</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- timestamp mode with microseconds.</span><span class="tok [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="scanpartitiondiscoveryinterval">scan.partition.discovery.interval<a href="#scanpartitiondiscoveryinterval" class="hash-link" aria-label="Direct link to scan.partition.discovery.interval" title="Direct link to scan.partition.discovery.interval">​</a></h3>
+<p>The interval in milliseconds for the Fluss source to discover the new partitions for partitioned table while scanning.  The default value is 10s. A non-positive value disables the partition discovery.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/engine-flink/reads.md" target="_blank" rel="noopener noreferrer" class="theme-edit-th [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/engine-flink/writes/index.html b/docs/0.5/engine-flink/writes/index.html
new file mode 100644
index 0000000..e40ad23
--- /dev/null
+++ b/docs/0.5/engine-flink/writes/index.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-engine-flink/writes" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink Writes | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>You can directly insert or update data into a Fluss table using the <code>INSERT INTO</code> statement.
+Fluss primary key tables can accept all types of messages (<code>INSERT</code>, <code>UPDATE_BEFORE</code>, <code>UPDATE_AFTER</code>, <code>DELETE</code>), while Fluss log table can only accept <code>INSERT</code> type messages.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="insert-into">INSERT INTO<a href="#insert-into" class="hash-link" aria-label="Direct link to INSERT INTO" title="Direct link to INSERT INTO">​</a></h2>
+<p><code>INSERT INTO</code> statements are used to write data to Fluss tables.
+They support both streaming and batch modes and are compatible with primary-key tables (for upserting data) as well as log tables (for appending data).</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="appending-data-to-the-log-table">Appending Data to the Log Table<a href="#appending-data-to-the-log-table" class="hash-link" aria-label="Direct link to Appending Data to the Log Table" title="Direct link to Appending Data to the Log Table">​</a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-log-table">Create a Log table.<a href="#create-a-log-table" class="hash-link" aria-label="Direct link to Create a Log table." title="Direct link to Create a Log table.">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="insert-data-into-the-log-table">Insert data into the Log table.<a href="#insert-data-into-the-log-table" class="hash-link" aria-label="Direct link to Insert data into the Log table." title="Direct link to Insert data into the Log table.">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="perform-data-upserts-to-the-primarykey-table">Perform Data Upserts to the PrimaryKey Table.<a href="#perform-data-upserts-to-the-primarykey-table" class="hash-link" aria-label="Direct link to Perform Data Upserts to the PrimaryKey Table." title="Direct link to Perform Data Upserts to the PrimaryKey Table.">​</a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-primary-key-table">Create a primary key table.<a href="#create-a-primary-key-table" class="hash-link" aria-label="Direct link to Create a primary key table." title="Direct link to Create a primary key table.">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="updates-all-columns">Updates All Columns<a href="#updates-all-columns" class="hash-link" aria-label="Direct link to Updates All Columns" title="Direct link to Updates All Columns">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="partial-updates">Partial Updates<a href="#partial-updates" class="hash-link" aria-label="Direct link to Partial Updates" title="Direct link to Partial Updates">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="delete-from">DELETE FROM<a href="#delete-from" class="hash-link" aria-label="Direct link to DELETE FROM" title="Direct link to DELETE FROM">​</a></h2>
+<p>Fluss supports deleting data for primary-key tables in batch mode via <code>DELETE FROM</code> statement. Currently, only single data deletions based on the primary key are supported.</p>
+<ul>
+<li>the primary key table</li>
+</ul>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- DELETE statement requires batch mode</span><span class=" [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="update">UPDATE<a href="#update" class="hash-link" aria-label="Direct link to UPDATE" title="Direct link to UPDATE">​</a></h2>
+<p>Fluss enables data updates for primary-key tables in batch mode using the <code>UPDATE</code> statement. Currently, only single-row updates based on the primary key are supported.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute the flink job in batch mode for current session  [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/install-deploy/deploying-distributed-cluster/index.html b/docs/0.5/install-deploy/deploying-distributed-cluster/index.html
new file mode 100644
index 0000000..6645b11
--- /dev/null
+++ b/docs/0.5/install-deploy/deploying-distributed-cluster/index.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-install-deploy/deploying-distributed-cluster" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Deploying Distributed Cluster | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://f [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This page provides instructions on how to deploy a <em>distributed cluster</em> for Fluss on bare machines.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="requirements">Requirements<a href="#requirements" class="hash-link" aria-label="Direct link to Requirements" title="Direct link to Requirements">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="hardware-requirements">Hardware Requirements<a href="#hardware-requirements" class="hash-link" aria-label="Direct link to Hardware Requirements" title="Direct link to Hardware Requirements">​</a></h3>
+<p>Fluss runs on all <em>UNIX-like environments</em>, e.g. <strong>Linux</strong>, <strong>Mac OS X</strong>.
+To build a distributed cluster, you need to have at least two nodes.
+This doc provides a simple example of how to deploy a distributed cluster on three nodes.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="software-requirements">Software Requirements<a href="#software-requirements" class="hash-link" aria-label="Direct link to Software Requirements" title="Direct link to Software Requirements">​</a></h3>
+<p>Before you start to set up the system, make sure you have the following software installed <strong>on each node</strong>:</p>
+<ul>
+<li><strong>Java 17</strong> or higher (Java 8 and Java 11 are not recommended)</li>
+<li><strong>Zookeeper 3.6.0</strong> or higher (It is not recommended to use zookeeper versions below 3.6.0)</li>
+</ul>
+<p>If your cluster does not fulfill these software requirements you will need to install/upgrade it.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="java_home-configuration"><code>JAVA_HOME</code> Configuration<a href="#java_home-configuration" class="hash-link" aria-label="Direct link to java_home-configuration" title="Direct link to java_home-configuration">​</a></h3>
+<p>Flink requires the <code>JAVA_HOME</code> environment variable to be set on all nodes and point to the directory of your Java installation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-setup">Fluss Setup<a href="#fluss-setup" class="hash-link" aria-label="Direct link to Fluss Setup" title="Direct link to Fluss Setup">​</a></h2>
+<p>This part will describe how to set up Fluss cluster consisting of one coordinator server and multiple tablet servers
+across three machines. Suppose you have three nodes have ip address:</p>
+<ul>
+<li>Node1: <code>192.168.10.1</code></li>
+<li>Node2: <code>192.168.10.2</code></li>
+<li>Node3: <code>192.168.10.3</code></li>
+</ul>
+<p>Node1 will deploy the CoordinatorServer and one TabletServer, Node2 and Node3 will deploy one TabletServer.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="preparation">Preparation<a href="#preparation" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h3>
+<ol>
+<li>
+<p>Make sure ZooKeeper has been deployed, and assuming the ZooKeeper address is <code>192.168.10.99:2181</code>. see <a href="https://zookeeper.apache.org/doc/r3.6.0/zookeeperStarted.html#sc_RunningReplicatedZooKeeper" target="_blank" rel="noopener noreferrer">Running zookeeper cluster</a> to deploy a distributed ZooKeeper.</p>
+</li>
+<li>
+<p>Download Fluss</p>
+</li>
+</ol>
+<p>Go to the <a href="/downloads/">downloads page</a> and download the latest Fluss release. After downloading the latest release, copy the archive to all the nodes and extract it:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span cla [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-fluss">Configuring Fluss<a href="#configuring-fluss" class="hash-link" aria-label="Direct link to Configuring Fluss" title="Direct link to Configuring Fluss">​</a></h3>
+<p>After having extracted the archived files, you need to configure Fluss for the cluster by editing <code>conf/server.yaml</code></p>
+<p>For <strong>Node1</strong>, the config is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">coordinator.host</span><span class="token punctuation" style="color:rgb(212, 212, 212) [...]
+<p>For <strong>Node2</strong>, the config is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">zookeeper.address</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<p>For <strong>Node3</strong>, the config is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">zookeeper.address</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<li><code>tablet-server.id</code> is the unique id of the TabletServer, if you have multiple TabletServers, you should set different id for each TabletServer.</li>
+<li>In this example, we only set the properties that must be configured, and for some other properties, you can refer to <a href="/docs/0.5/maintenance/configuration/">Configuration</a> for more details.</li>
+</ul></div></div>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="starting-fluss">Starting Fluss<a href="#starting-fluss" class="hash-link" aria-label="Direct link to Starting Fluss" title="Direct link to Starting Fluss">​</a></h3>
+<p>To start Fluss, you should first to start a CoordinatorServer in <strong>node1</strong> and
+then start each TabletServer in <strong>node1</strong>, <strong>node2</strong>, <strong>node3</strong>. The command is as follows:</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="starting-coordinatorserver">Starting CoordinatorServer<a href="#starting-coordinatorserver" class="hash-link" aria-label="Direct link to Starting CoordinatorServer" title="Direct link to Starting CoordinatorServer">​</a></h4>
+<p>In <strong>node1</strong>, starting a CoordinatorServer:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/coordinator-server.sh start</span><br></span></code></pre></div></div>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="starting-tabletserver">Starting TabletServer<a href="#starting-tabletserver" class="hash-link" aria-label="Direct link to Starting TabletServer" title="Direct link to Starting TabletServer">​</a></h4>
+<p>In <strong>node1</strong>, <strong>node2</strong>, <strong>node3</strong>, starting a TabletServer is as follows:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/tablet-server.sh start</span><br></span></code></pre></div></div>
+<p>After that, the Fluss distributed cluster is started.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss">Interacting with Fluss<a href="#interacting-with-fluss" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h2>
+<p>After the Fluss cluster is started, you can use <strong>Fluss Client</strong> (e.g., Flink SQL Client) to interact with Fluss.
+The following subsections will show you how to use Flink SQL Client to interact with Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="flink-sql-client">Flink SQL Client<a href="#flink-sql-client" class="hash-link" aria-label="Direct link to Flink SQL Client" title="Direct link to Flink SQL Client">​</a></h3>
+<p>Using Flink SQL Client to interact with Fluss.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="preparation-1">Preparation<a href="#preparation-1" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h4>
+<p>You can start a Flink standalone cluster refer to <a href="/docs/0.5/engine-flink/getting-started/#preparation-when-using-flink-sql-client">Flink Environment Preparation</a></p>
+<p><strong>Note</strong>: Make sure the <a href="/downloads/">Fluss connector jar</a> already has copied to the <code>lib</code> directory of your Flink home.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="add-catalog">Add catalog<a href="#add-catalog" class="hash-link" aria-label="Direct link to Add catalog" title="Direct link to Add catalog">​</a></h4>
+<p>In Flink SQL client, a catalog is created and named by executing the following query:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss">Do more with Fluss<a href="#do-more-with-fluss" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.5/engine-flink/getting-started/">Flink Getting Started</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/deploying-distributed-cluster.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/install-deploy/deploying-local-cluster/index.html b/docs/0.5/install-deploy/deploying-local-cluster/index.html
new file mode 100644
index 0000000..89d1a67
--- /dev/null
+++ b/docs/0.5/install-deploy/deploying-local-cluster/index.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-install-deploy/deploying-local-cluster" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Deploying Local Cluster | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This page provides instructions on how to deploy a <em>local cluster</em> (on one machine, but in separate processes) for Fluss.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="requirements">Requirements<a href="#requirements" class="hash-link" aria-label="Direct link to Requirements" title="Direct link to Requirements">​</a></h2>
+<p>Fluss runs on all <em>UNIX-like environments</em>, e.g. <strong>Linux</strong>, <strong>Mac OS X</strong>.
+Before you start to setup the system, make sure you have the following software installed on your test machine:</p>
+<ul>
+<li><strong>Java 17</strong> or higher (Java 8 and Java 11 are not recommended)</li>
+</ul>
+<p>If your cluster does not fulfill these software requirements you will need to install/upgrade it.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="java_home-configuration"><code>JAVA_HOME</code> Configuration<a href="#java_home-configuration" class="hash-link" aria-label="Direct link to java_home-configuration" title="Direct link to java_home-configuration">​</a></h3>
+<p>Flink requires the <code>JAVA_HOME</code> environment variable to be set on your
+test machine and point to the directory of your Java installation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-setup">Fluss Setup<a href="#fluss-setup" class="hash-link" aria-label="Direct link to Fluss Setup" title="Direct link to Fluss Setup">​</a></h2>
+<p>Go to the <a href="/downloads/">downloads page</a> and download the latest Fluss release. Make sure to pick ths Fluss
+package <strong>matching your Java version</strong>. After downloading the latest release, extract it:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span cla [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="starting-fluss-local-cluster">Starting Fluss Local Cluster<a href="#starting-fluss-local-cluster" class="hash-link" aria-label="Direct link to Starting Fluss Local Cluster" title="Direct link to Starting Fluss Local Cluster">​</a></h2>
+<p>You can start Fluss local cluster by running the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/local-cluster.sh start</span><br></span></code></pre></div></div>
+<p>After that, the Fluss local cluster is started.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss">Interacting with Fluss<a href="#interacting-with-fluss" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h2>
+<p>After Fluss local cluster is started, you can use <strong>Fluss Client</strong> (Currently, only support Flink Sql Client) to interact with Fluss.
+The following subsections will show you how to use Flink Sql Client to interact with Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="flink-sql-client">Flink SQL Client<a href="#flink-sql-client" class="hash-link" aria-label="Direct link to Flink SQL Client" title="Direct link to Flink SQL Client">​</a></h3>
+<p>Using Flink SQL Client to interact with Fluss.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="preparation">Preparation<a href="#preparation" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h4>
+<p>You can start a Flink standalone cluster refer to <a href="/docs/0.5/engine-flink/getting-started/#preparation-when-using-flink-sql-client">Flink Environment Preparation</a></p>
+<p><strong>Note</strong>: Make sure the <a href="/downloads/">Fluss connector jar</a> already has copied to the <code>lib</code> directory of your Flink home.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="add-catalog">Add catalog<a href="#add-catalog" class="hash-link" aria-label="Direct link to Add catalog" title="Direct link to Add catalog">​</a></h4>
+<p>In Flink SQL client, a catalog is created and named by executing the following query:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss">Do more with Fluss<a href="#do-more-with-fluss" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.5/engine-flink/getting-started/">Flink Getting started</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/deploying-local-cluster.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" cl [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/install-deploy/deploying-with-docker/index.html b/docs/0.5/install-deploy/deploying-with-docker/index.html
new file mode 100644
index 0000000..375c6ed
--- /dev/null
+++ b/docs/0.5/install-deploy/deploying-with-docker/index.html
@@ -0,0 +1,135 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-install-deploy/deploying-with-docker" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Deploying with Docker | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apa [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This guide will show you how to run a Fluss cluster using Docker. In this guide, we will introduce the prerequisites of
+the Docker environment and how to quickly create a Fluss cluster using the <code>docker run</code> commands
+or <code>docker compose</code> file.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites">​</a></h2>
+<p><strong>Overview</strong></p>
+<p>Prepare the build machine before creating the Docker image.</p>
+<p><strong>Hardware</strong></p>
+<p>Recommended configuration: 4 cores, 16GB memory.</p>
+<p><strong>Software</strong></p>
+<ul>
+<li>Docker version: 20.10 or later.</li>
+<li>docker-compose version: 20.1 or later.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="deploy-with-docker">Deploy with Docker<a href="#deploy-with-docker" class="hash-link" aria-label="Direct link to Deploy with Docker" title="Direct link to Deploy with Docker">​</a></h2>
+<p>The following is a brief overview of how to quickly create a complete Fluss testing cluster
+using the <code>docker run</code> commands.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-shared-tmpfs-volume">Create a shared tmpfs volume<a href="#create-a-shared-tmpfs-volume" class="hash-link" aria-label="Direct link to Create a shared tmpfs volume" title="Direct link to Create a shared tmpfs volume">​</a></h3>
+<p>Create a shared tmpfs volume:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> volume create s [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-network">Create a Network<a href="#create-a-network" class="hash-link" aria-label="Direct link to Create a Network" title="Direct link to Create a Network">​</a></h3>
+<p>Create an isolated bridge network in docker</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> network create  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-zookeeper">Start Zookeeper<a href="#start-zookeeper" class="hash-link" aria-label="Direct link to Start Zookeeper" title="Direct link to Start Zookeeper">​</a></h3>
+<p>Start Zookeeper in daemon mode. This is a single node zookeeper setup. Zookeeper is the central metadata store
+for Fluss and should be set up with replication for production use. For more information,
+see <a href="https://zookeeper.apache.org/doc/r3.6.0/zookeeperStarted.html#sc_RunningReplicatedZooKeeper" target="_blank" rel="noopener noreferrer">Running zookeeper cluster</a>.</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-fluss-coordinatorserver">Start Fluss CoordinatorServer<a href="#start-fluss-coordinatorserver" class="hash-link" aria-label="Direct link to Start Fluss CoordinatorServer" title="Direct link to Start Fluss CoordinatorServer">​</a></h3>
+<p>Start Fluss CoordinatorServer in daemon and connect to Zookeeper.</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-fluss-tabletserver">Start Fluss TabletServer<a href="#start-fluss-tabletserver" class="hash-link" aria-label="Direct link to Start Fluss TabletServer" title="Direct link to Start Fluss TabletServer">​</a></h3>
+<p>You can start one or more tablet servers based on your needs. For a production environment,
+ensure that you have multiple tablet servers.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="start-with-one-tabletserver">Start with One TabletServer<a href="#start-with-one-tabletserver" class="hash-link" aria-label="Direct link to Start with One TabletServer" title="Direct link to Start with One TabletServer">​</a></h4>
+<p>If you just want to start a sample test, you can start only one TabletServer in daemon and connect to Zookeeper.
+The command is as follows:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="start-with-multiple-tabletserver">Start with Multiple TabletServer<a href="#start-with-multiple-tabletserver" class="hash-link" aria-label="Direct link to Start with Multiple TabletServer" title="Direct link to Start with Multiple TabletServer">​</a></h4>
+<p>In a production environment, you need to start multiple Fluss TabletServer nodes.
+Here we start 3 Fluss TabletServer nodes in daemon and connect to Zookeeper. The command is as follows:</p>
+<ol>
+<li>start tablet-server-0</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<ol start="2">
+<li>start tablet-server-1</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<ol start="3">
+<li>start tablet-server-2</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<p>Now all the Fluss related components are running.</p>
+<p>Run the below command to check the Fluss cluster status:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> container </spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss">Interacting with Fluss<a href="#interacting-with-fluss" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h3>
+<p>After the Fluss cluster is started, you can use <strong>Fluss Client</strong> (e.g., Flink SQL Client) to interact with Fluss.
+The following subsections will show you how to use &#x27;Docker&#x27; to build a Flink cluster and use <strong>Flink SQL Client</strong>
+to interact with Fluss.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="start-flink-cluster">Start Flink Cluster<a href="#start-flink-cluster" class="hash-link" aria-label="Direct link to Start Flink Cluster" title="Direct link to Start Flink Cluster">​</a></h4>
+<ol>
+<li>start jobManager</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<ol start="2">
+<li>start taskManager</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="enter-into-sql-client">Enter into SQL-Client<a href="#enter-into-sql-client" class="hash-link" aria-label="Direct link to Enter into SQL-Client" title="Direct link to Enter into SQL-Client">​</a></h4>
+<p>First, use the following command to enter pod:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> </span><span  [...]
+<p>Then, use the following command to enter the Flink SQL CLI Container:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./sql-client</span><br></span></code></pre></div></div>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-fluss-catalog">Create Fluss Catalog<a href="#create-fluss-catalog" class="hash-link" aria-label="Direct link to Create Fluss Catalog" title="Direct link to Create Fluss Catalog">​</a></h4>
+<p>Use the following SQL to create a Fluss catalog:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss">Do more with Fluss<a href="#do-more-with-fluss" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.5/engine-flink/getting-started/">Flink Getting started</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="deploy-with-docker-compose">Deploy with Docker Compose<a href="#deploy-with-docker-compose" class="hash-link" aria-label="Direct link to Deploy with Docker Compose" title="Direct link to Deploy with Docker Compose">​</a></h2>
+<p>The following is a brief overview of how to quickly create a complete Fluss testing cluster
+using the <code>docker-compose up -d</code> commands in a detached mode.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-docker-composeyml-file">Create docker-compose.yml file<a href="#create-docker-composeyml-file" class="hash-link" aria-label="Direct link to Create docker-compose.yml file" title="Direct link to Create docker-compose.yml file">​</a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compose-file-to-start-fluss-cluster-with-one-tabletserver">Compose file to start Fluss cluster with one TabletServer<a href="#compose-file-to-start-fluss-cluster-with-one-tabletserver" class="hash-link" aria-label="Direct link to Compose file to start Fluss cluster with one TabletServer" title="Direct link to Compose file to start Fluss cluster with one TabletServer">​</a></h4>
+<p>You can use the following <code>docker-compose.yml</code> file to start a Fluss cluster with one <code>CoordinatorServer</code> and one <code>TabletServer</code>.</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compose-file-to-start-fluss-cluster-with-multi-tabletserver">Compose file to start Fluss cluster with multi TabletServer<a href="#compose-file-to-start-fluss-cluster-with-multi-tabletserver" class="hash-link" aria-label="Direct link to Compose file to start Fluss cluster with multi TabletServer" title="Direct link to Compose file to start Fluss cluster with multi TabletServer">​</a></h4>
+<p>You can use the following <code>docker-compose.yml</code> file to start a Fluss cluster with one <code>CoordinatorServer</code> and three <code>TabletServers</code>.</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="launch-the-components">Launch the components<a href="#launch-the-components" class="hash-link" aria-label="Direct link to Launch the components" title="Direct link to Launch the components">​</a></h3>
+<p>Save the <code>docker-compose.yaml</code> script and execute the <code>docker-compose up -d</code> command in the same directory
+to create the cluster.</p>
+<p>Run the below command to check the container status:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> container </spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss-1">Interacting with Fluss<a href="#interacting-with-fluss-1" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h3>
+<p>If you want to interact with this Fluss cluster, you can change the <code>docker-compose.yml</code> file to add a Flink cluster.
+The changed <code>docker-compose.yml</code> file is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<p>Save the <code>docker-compose.yaml</code> script and execute the <code>docker-compose up -d</code> command in the same directory to create the cluster.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="enter-into-sql-client-1">Enter into SQL-Client<a href="#enter-into-sql-client-1" class="hash-link" aria-label="Direct link to Enter into SQL-Client" title="Direct link to Enter into SQL-Client">​</a></h4>
+<p>First, use the following command to enter the Flink SQL CLI Container:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker-compose</span><span class="token plain"> </spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-fluss-catalog-1">Create Fluss Catalog<a href="#create-fluss-catalog-1" class="hash-link" aria-label="Direct link to Create Fluss Catalog" title="Direct link to Create Fluss Catalog">​</a></h4>
+<p>Use the following SQL to create a Fluss catalog:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss-1">Do more with Fluss<a href="#do-more-with-fluss-1" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.5/engine-flink/getting-started/">Flink Getting started</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/deploying-with-docker.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" clas [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/install-deploy/overview/index.html b/docs/0.5/install-deploy/overview/index.html
new file mode 100644
index 0000000..602c20f
--- /dev/null
+++ b/docs/0.5/install-deploy/overview/index.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-install-deploy/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Overview | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Below, we provide an overview of the key components of a Fluss cluster, detailing their functionalities and implementations. Additionally, we will introduce the various deployment methods available for Fluss.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overview-and-reference-architecture">Overview and Reference Architecture<a href="#overview-and-reference-architecture" class="hash-link" aria-label="Direct link to Overview and Reference Architecture" title="Direct link to Overview and Reference Architecture">​</a></h2>
+<p>The figure below shows the building blocks of Fluss clusters:</p>
+<img width="1200px" src="/assets/images/deployment_overview-9108e1465903f9424cddd023a8301fb2.png">
+<p>When deploying Fluss, there are often multiple options available for each building block.
+We have listed them in the table below the figure.</p>
+<table class="table table-bordered"><thead><tr><th class="text-left" width="250">Component</th><th class="text-left" width="600">Purpose</th><th class="text-left" width="300">Implementations</th></tr></thead><tbody><tr><td>Fluss Client</td><td><p></p><p>The Fluss Client is the entry point for users to interact with Fluss Cluster. It is responsible for
+managing Fluss Cluster like:</p><p></p><ul><li> Admin operation: like create or delete database/table etc</li><li>Table operation: like write, read, delete data</li></ul></td><td><ul><li><a href="/docs/0.5/engine-flink/getting-started/">Flink Connector</a></li></ul></td></tr><tr><td>CoordinatorServer</td><td><p></p><p>CoordinatorServer is the name of the central work coordination component of Fluss.
+The coordinator server is responsible to:</p><p></p><ul><li>Manage the TabletServer</li><li>Manage the metadata</li><li>Coordinate the whole cluster, e.g. data re-balance, recover data when tablet servers down</li></ul></td><td rowspan="2"><ul><li><a href="/docs/0.5/install-deploy/deploying-local-cluster/">Local Cluster</a></li><li><a href="/docs/0.5/install-deploy/deploying-distributed-cluster/">Distributed Cluster</a></li><li><a href="/docs/0.5/install-deploy/deploying-with-docker/">Do [...]
+The data in Lakehouse storage can be read both by Fluss&#x27;s client in a Union Read manner and accessed directly
+by query engines such as Flink, Spark, StarRocks, Trino.</p></td><td><li><a href="/docs/0.5/maintenance/tiered-storage/lakehouse-storage/">Paimon</a></li><li><a href="/roadmap/">Iceberg (Roadmap)</a></li></td></tr><tr><td>Metrics Storage (optional)</td><td><p>CoordinatorServer/TabletServer report internal metrics and Fluss client (e.g., connector in Flink jobs) can report additional, client specific metrics as well.</p></td><td><li><a href="/docs/0.5/maintenance/metric-reporters/#jmx">JM [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-deploy-fluss">How to deploy Fluss<a href="#how-to-deploy-fluss" class="hash-link" aria-label="Direct link to How to deploy Fluss" title="Direct link to How to deploy Fluss">​</a></h2>
+<p>Fluss can be deployed in three different ways:</p>
+<ul>
+<li><a href="/docs/0.5/install-deploy/deploying-local-cluster/">Local Cluster</a></li>
+<li><a href="/docs/0.5/install-deploy/deploying-distributed-cluster/">Distributed Cluster</a></li>
+<li><a href="/docs/0.5/install-deploy/deploying-with-docker/">Docker run/ Docker compose</a></li>
+</ul>
+<p><strong>NOTE</strong>:</p>
+<ul>
+<li>Local Cluster is for testing purpose only.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/intro/index.html b/docs/0.5/intro/index.html
new file mode 100644
index 0000000..658e245
--- /dev/null
+++ b/docs/0.5/intro/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-intro" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">What is Fluss? | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss is a streaming storage built for real-time analytics which can serve as the real-time data layer for Lakehouse architectures.</p>
+<p><img decoding="async" loading="lazy" alt="arch" src="/assets/images/fluss-9455a8d9e5ebfcf475a714923665b1c7.png" width="2160" height="937" class="img_ev3q"></p>
+<p>It bridges the gap between <strong>streaming data</strong> and the data <strong>Lakehouse</strong> by enabling low-latency, high-throughput data ingestion and processing while seamlessly integrating with popular compute engines like <strong>Apache Flink</strong>, while <strong>Apache Spark</strong>, and <strong>StarRocks</strong> are coming soon.</p>
+<p>Fluss supports <code>streaming reads</code> and <code>writes</code> with sub-second latency and stores data in a columnar format, enhancing query performance and reducing storage costs.
+It offers flexible table types, including append-only <strong>Log Tables</strong> and updatable <strong>PrimaryKey Tables</strong>, to accommodate diverse real-time analytics and processing needs.</p>
+<p>With built-in replication for fault tolerance, horizontal scalability, and advanced features like high-QPS lookup joins and bulk read/write operations, Fluss is ideal for powering <strong>real-time analytics</strong>, <strong>AI/ML pipelines</strong>, and <strong>streaming data warehouses</strong>.</p>
+<p><strong>Fluss (German: river, pronounced <code>/flus/</code>)</strong> enables streaming data continuously converging, distributing and flowing into lakes, like a river 🌊</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="where-to-go-next">Where to go Next?<a href="#where-to-go-next" class="hash-link" aria-label="Direct link to Where to go Next?" title="Direct link to Where to go Next?">​</a></h2>
+<ul>
+<li><a href="/docs/0.5/quickstart/flink/">QuickStart</a>: Get started with Fluss in minutes.</li>
+<li><a href="/docs/0.5/concepts/architecture/">Architecture</a>: Learn about Fluss&#x27;s architecture.</li>
+<li><a href="/docs/0.5/table-design/overview/">Table Design</a>: Explore Fluss&#x27;s table types, partitions and buckets.</li>
+<li><a href="/docs/0.5/streaming-lakehouse/overview/">Lakehouse</a>: Integrate Fluss with your Lakehouse to bring low-latency data to your Lakehouse analytics.</li>
+<li><a href="/docs/0.5/dev/ide-setup/">Development</a>: Set up your development environment and contribute to the community.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/intro.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5  [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/configuration/index.html b/docs/0.5/maintenance/configuration/index.html
new file mode 100644
index 0000000..3f87958
--- /dev/null
+++ b/docs/0.5/maintenance/configuration/index.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/configuration" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Configuration | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>All configurations can be set in Fluss configuration file <code>conf/server.yaml</code></p>
+<p>The configuration is parsed and evaluated when the Fluss processes are started.
+Changes to the configuration file require restarting the relevant processes.</p>
+<p>Users can organize config in format <code>key: value</code>, such as:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">conf/server.yaml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">default.bucket.number</span><sp [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="server-configuration">Server Configuration<a href="#server-configuration" class="hash-link" aria-label="Direct link to Server Configuration" title="Direct link to Server Configuration">​</a></h2>
+<p>Server configuration refers to a set of configurations used to specify the running parameters of a server.
+These settings can only be configured at the time of cluster startup and do not support dynamic modification
+during the Fluss cluster working.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-cluster">Fluss Cluster<a href="#fluss-cluster" class="hash-link" aria-label="Direct link to Fluss Cluster" title="Direct link to Fluss Cluster">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>default.bucket.number</td><td>Integer</td><td>1</td><td>The default number of buckets for a table in Fluss cluster. It&#x27;s a cluster-level parameter and all the tables without specifying bucket number in the cluster will use the value as the bucket number.</td></tr><tr><td>default.replication.factor</td><td>Integer</td><td>1</td><td>The default replication factor for the log o [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinatorserver">CoordinatorServer<a href="#coordinatorserver" class="hash-link" aria-label="Direct link to CoordinatorServer" title="Direct link to CoordinatorServer">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>coordinator.host</td><td>String</td><td>(None)</td><td>The config parameter defining the network address to connect to for communication with the coordinator server. If the coordinator server is used as a bootstrap server (discover all the servers in the cluster), the value of this config option should be a static hostname or address.</td></tr><tr><td>coordinator.port</td><td>Str [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tabletserver">TabletServer<a href="#tabletserver" class="hash-link" aria-label="Direct link to TabletServer" title="Direct link to TabletServer">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>tablet-server.host</td><td>String</td><td>(None)</td><td>The external address of the network interface where the TabletServer is exposed. Because different TabletServer need different values for this option, usually it is specified in an additional non-shared TabletServer-specific config file.</td></tr><tr><td>tablet-server.port</td><td>String</td><td>0</td><td>The external RPC p [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">Zookeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to Zookeeper" title="Direct link to Zookeeper">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>zookeeper.address</td><td>String</td><td>(None)</td><td>The ZooKeeper address to use, when running Fluss with ZooKeeper.</td></tr><tr><td>zookeeper.path.root</td><td>String</td><td>/fluss</td><td>The root path under which Fluss stores its entries in ZooKeeper.</td></tr><tr><td>zookeeper.client.session-timeout</td><td>Integer</td><td>60000</td><td>Defines the session timeout for t [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="netty">Netty<a href="#netty" class="hash-link" aria-label="Direct link to Netty" title="Direct link to Netty">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>netty.server.num-network-threads</td><td>Integer</td><td>3</td><td>The number of threads that the server uses for receiving requests from the network and sending responses to the network.</td></tr><tr><td>netty.server.num-worker-threads</td><td>Integer</td><td>8</td><td>The number of threads that the server uses for processing requests, which may include disk and remote I/O.</td> [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="log">Log<a href="#log" class="hash-link" aria-label="Direct link to Log" title="Direct link to Log">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>log.segment.file-size</td><td>MemorySize</td><td>1024m</td><td>This configuration controls the segment file size for the log. Retention and cleaning is always done a file at a time so a larger segment size means fewer files but less granular control over retention.</td></tr><tr><td>log.index.file-size</td><td>MemorySize</td><td>10m</td><td>This configuration controls the size of  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="log-tiered-storage">Log Tiered Storage<a href="#log-tiered-storage" class="hash-link" aria-label="Direct link to Log Tiered Storage" title="Direct link to Log Tiered Storage">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>remote.log.task-interval-duration</td><td>Duration</td><td>1min</td><td>Interval at which remote log manager runs the scheduled tasks like copy segments, clean up remote log segments, delete local log segments etc. If the value is set to 0s, it means that the remote log storage is disabled.</td></tr><tr><td>remote.log.index-file-cache-size</td><td>MemorySize</td><td>1gb</td><td>T [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="kv">Kv<a href="#kv" class="hash-link" aria-label="Direct link to Kv" title="Direct link to Kv">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>kv.snapshot.interval</td><td>Duration</td><td>10min</td><td>The interval to perform periodic snapshot for kv data. The default setting is 10 minutes.</td></tr><tr><td>kv.snapshot.scheduler-thread-num</td><td>Integer</td><td>1</td><td>The number of threads that the server uses to schedule snapshot kv data for all the replicas in the server.</td></tr><tr><td>kv.snapshot.transfer-th [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="metrics">Metrics<a href="#metrics" class="hash-link" aria-label="Direct link to Metrics" title="Direct link to Metrics">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>metrics.reporters</td><td>List</td><td>(None)</td><td>An optional list of reporter names. If configured, only reporters whose name matches in the list will be started</td></tr><tr><td>metrics.reporter.prometheus.port</td><td>String</td><td>9249</td><td>The port the Prometheus reporter listens on, defaults to 9249. In order to be able to run several instances of the reporter on on [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="lakehouse">Lakehouse<a href="#lakehouse" class="hash-link" aria-label="Direct link to Lakehouse" title="Direct link to Lakehouse">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>lakehouse.storage</td><td>String</td><td>(None)</td><td>The kind of lakehouse storage used by of Fluss such as Paimon, Iceberg, Hudi. Now, only support Paimon.</td></tr></tbody></table>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="table-configuration">Table Configuration<a href="#table-configuration" class="hash-link" aria-label="Direct link to Table Configuration" title="Direct link to Table Configuration">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>bucket.num</td><td>int</td><td>The bucket number of Fluss cluster.</td><td>The number of buckets of a Fluss table.</td></tr><tr><td>bucket.key</td><td>String</td><td>(none)</td><td>Specific the distribution policy of the Fluss table. Data will be distributed to each bucket according to the hash value of bucket-key. If you specify multiple fields, delimiter is &#x27;,&#x27;. If th [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="config-by-flink-sql">Config by Flink SQL<a href="#config-by-flink-sql" class="hash-link" aria-label="Direct link to Config by Flink SQL" title="Direct link to Config by Flink SQL">​</a></h3>
+<p>When you create a table in Fluss by Flink, you can specify the table configuration by Flink in with options, like:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="client-configuration">Client Configuration<a href="#client-configuration" class="hash-link" aria-label="Direct link to Client Configuration" title="Direct link to Client Configuration">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>client.id</td><td>String</td><td>&quot;&quot;</td><td>An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip/port by allowing a logical application name to be included in server-side request logging.</td></tr><tr><td>client.connect-timeout</td><td>Duration</td><td>120s</td><td>The Netty client conn [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="config-by-flink-sql-1">Config by Flink SQL<a href="#config-by-flink-sql-1" class="hash-link" aria-label="Direct link to Config by Flink SQL" title="Direct link to Config by Flink SQL">​</a></h3>
+<ol>
+<li>When you create a table in Fluss by Flink, you can specify the client configuration by Flink in with options, like:</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<ol start="2">
+<li>Also, you can change the client configuration use <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/queries/hints/#dynamic-table-options" target="_blank" rel="noopener noreferrer">Flink SQL Hints</a> like:</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</span><span class="token plain"> </span><span class= [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/filesystems/hdfs/index.html b/docs/0.5/maintenance/filesystems/hdfs/index.html
new file mode 100644
index 0000000..3476df1
--- /dev/null
+++ b/docs/0.5/maintenance/filesystems/hdfs/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/filesystems/hdfs" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">HDFS | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/0.5/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p><a href="https://hadoop.apache.org/docs/stable/" target="_blank" rel="noopener noreferrer">HDFS (Hadoop Distributed File System)</a> is the primary storage system used by Hadoop applications. Fluss
+supports HDFS as a remote storage.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configurations-setup">Configurations setup<a href="#configurations-setup" class="hash-link" aria-label="Direct link to Configurations setup" title="Direct link to Configurations setup">​</a></h2>
+<p>To enabled HDFS as remote storage, you need to define the hdfs path as remote storage in Fluss&#x27; <code>server.yaml</code>:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># The dir that used to be as the remote storage of Fluss< [...]
+<p>To allow for easy adoption, you can use the same configuration keys in Fluss&#x27; server.yaml as in Hadoop&#x27;s <code>core-site.xml</code>.
+You can see the configuration keys in Hadoop&#x27;s <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml" target="_blank" rel="noopener noreferrer"><code>core-site.xml</code></a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/filesystems/hdfs.md" target="_blank" rel="noopener n [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/filesystems/oss/index.html b/docs/0.5/maintenance/filesystems/oss/index.html
new file mode 100644
index 0000000..11cb25d
--- /dev/null
+++ b/docs/0.5/maintenance/filesystems/oss/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/filesystems/oss" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Aliyun OSS | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/doc [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="oss-object-storage-service">OSS: Object Storage Service<a href="#oss-object-storage-service" class="hash-link" aria-label="Direct link to OSS: Object Storage Service" title="Direct link to OSS: Object Storage Service">​</a></h2>
+<p><a href="https://www.aliyun.com/product/oss" target="_blank" rel="noopener noreferrer">Aliyun Object Storage Service</a> (Aliyun OSS) is widely used, particularly popular among China’s cloud users, and it provides cloud object storage for a variety of use cases.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configurations-setup">Configurations setup<a href="#configurations-setup" class="hash-link" aria-label="Direct link to Configurations setup" title="Direct link to Configurations setup">​</a></h2>
+<p>To enabled OSS as remote storage, there are some required configurations that must be add to Fluss&#x27; <code>server.yaml</code>:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># The dir that used to be as the remote storage of Fluss< [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="token-based-authentication">Token-based Authentication<a href="#token-based-authentication" class="hash-link" aria-label="Direct link to Token-based Authentication" title="Direct link to Token-based Authentication">​</a></h2>
+<p>For client to access the remote storage such as reading snapshot or tiered log, client must obtain a STS token from Fluss cluster. So you must
+configure <code>fs.oss.sts.endpoint</code> and <code>fs.oss.roleArn</code>.
+<code>fs.oss.sts.endpoint</code> is the STS endpoint to obtain a STS token, such as <code>sts.cn-hangzhou.aliyuncs.com</code> for hangzhou region, you can
+find different endpoints for different regions in <a href="https://help.aliyun.com/zh/ram/developer-reference/api-sts-2015-04-01-endpoint" target="_blank" rel="noopener noreferrer">Aliyun STS Endpoint</a>.
+<code>fs.oss.roleArn</code> is for the role of the STS token obtained from the STS endpoint, it should be in the format of <code>acs:ram::&lt;aliyun-account-id&gt;:role/&lt;role-name&gt;</code>,
+such as <code>acs:ram::123456789012:role/testrole</code>. Since client will use the STS token to read the remote storage, the role must be granted with the read permission of the remote storage.
+See more detail in <a href="https://help.aliyun.com/zh/ram/developer-reference/api-sts-2015-04-01-assumerole" target="_blank" rel="noopener noreferrer">AssumeRole</a>.</p>
+<p>Apart from the above configurations, you can also define the configuration keys mentioned in the <a href="http://hadoop.apache.org/docs/current/hadoop-aliyun/tools/hadoop-aliyun/index.html" target="_blank" rel="noopener noreferrer">Hadoop OSS documentation</a>
+in the Fluss&#x27; <code>server.yaml</code>. These configurations defines in Hadoop OSS documentation are advanced configurations which are usually used by performance tuning.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/filesystems/oss.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill= [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/filesystems/overview/index.html b/docs/0.5/maintenance/filesystems/overview/index.html
new file mode 100644
index 0000000..ec40719
--- /dev/null
+++ b/docs/0.5/maintenance/filesystems/overview/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/filesystems/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">File Systems | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss uses file systems as remote storage to store snapshots for Primary-Key Table and store tiered log segments for Log Table. These
+are some of the file systems that Fluss supports currently, including <em>local</em>, <em>hadoop</em>, <em>Aliyun OSS</em>.</p>
+<p>The file system used for a particular file is determined by its URI scheme. For example, <code>file:///home/user/text.txt</code> refers to a file in the local file system,
+while <code>hdfs://namenode:50010/data/user/text.txt</code> is a file in a specific HDFS cluster.</p>
+<p>File system instances are instantiated once per process and then cached/pooled, to avoid configuration overhead per stream creation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="local-file-system">Local File System<a href="#local-file-system" class="hash-link" aria-label="Direct link to Local File System" title="Direct link to Local File System">​</a></h2>
+<p>Fluss has built-in support for the file system of the local machine, including any NFS or SAN drives mounted into that local file system. Local files are referenced with the <code>file://</code> URI scheme. You
+can use local file system as remote storage for testing purposes with the following configuration in Fluss&#x27; <code>server.yaml</code>:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">remote.data.dir</span><span class="token punctuation" style="color:rgb(212, 212, 212)" [...]
+<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>warning</ [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="pluggable-file-systems">Pluggable File Systems<a href="#pluggable-file-systems" class="hash-link" aria-label="Direct link to Pluggable File Systems" title="Direct link to Pluggable File Systems">​</a></h2>
+<p>The Fluss project supports the following file system:</p>
+<ul>
+<li>
+<p><strong><a href="/docs/0.5/maintenance/filesystems/hdfs/">HDFS</a></strong> is supported by <code>fluss-fs-hadoop</code> and registered under the <code>hdfs://</code> URI scheme.</p>
+</li>
+<li>
+<p><strong><a href="/docs/0.5/maintenance/filesystems/oss/">Aliyun OSS</a></strong> is supported by <code>fluss-fs-oss</code> and registered under the <code>oss://</code> URI scheme.</p>
+</li>
+<li>
+<p><strong><a href="/docs/0.5/maintenance/filesystems/s3/">AWS S3</a></strong> is supported by <code>fluss-fs-s3</code> and registered under the <code>s3://</code> URI scheme.</p>
+</li>
+</ul>
+<p>The implementation is based on <a href="https://hadoop.apache.org/" target="_blank" rel="noopener noreferrer">Hadoop Project</a> but is self-contained with no dependency footprint.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/filesystems/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-pag [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/filesystems/s3/index.html b/docs/0.5/maintenance/filesystems/s3/index.html
new file mode 100644
index 0000000..e8c851b
--- /dev/null
+++ b/docs/0.5/maintenance/filesystems/s3/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/filesystems/s3" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Amazon S3 | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p><a href="http://aws.amazon.com/s3/" target="_blank" rel="noopener noreferrer">Amazon Simple Storage Service</a> (Amazon S3) is cloud object storage with industry-leading scalability, data availability, security, and performance.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configurations-setup">Configurations setup<a href="#configurations-setup" class="hash-link" aria-label="Direct link to Configurations setup" title="Direct link to Configurations setup">​</a></h2>
+<p>To enabled S3 as remote storage, there are some required configurations that must be added to Fluss&#x27; <code>server.yaml</code>:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># The dir that used to be as the remote storage of Fluss< [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/logging/index.html b/docs/0.5/maintenance/logging/index.html
new file mode 100644
index 0000000..97c6a2c
--- /dev/null
+++ b/docs/0.5/maintenance/logging/index.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/logging" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Logging | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/0 [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>All Fluss processes(CoordinatorServer/TabletServer) create a log text file that contains messages for various events happening in that process. These logs provide deep insights into the inner workings of Fluss, and can be used to detect problems (in the form of WARN/ERROR messages) and can help in debugging them.</p>
+<p>The logging in Fluss uses the <a href="http://www.slf4j.org/" target="_blank" rel="noopener noreferrer">SLF4J</a> logging interface. This allows you to use any logging framework that supports SLF4J, without having to modify the Fluss source code.</p>
+<p>By default, <a href="https://logging.apache.org/log4j/2.x/index.html" target="_blank" rel="noopener noreferrer">Log4j 2</a> is used as the underlying logging framework.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-log4j-2">Configuring Log4j 2<a href="#configuring-log4j-2" class="hash-link" aria-label="Direct link to Configuring Log4j 2" title="Direct link to Configuring Log4j 2">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="log4j-2-property-files">Log4j 2 property files<a href="#log4j-2-property-files" class="hash-link" aria-label="Direct link to Log4j 2 property files" title="Direct link to Log4j 2 property files">​</a></h3>
+<p>The Fluss distribution ships with the following log4j properties files in the conf directory, which are used automatically if Log4j 2 is enabled:</p>
+<ul>
+<li><code>log4j-console.properties</code>: used for CoordinatorServer/TabletServer if they are run in the foreground (e.g., Kubernetes).</li>
+<li><code>log4j.properties</code>: used for CoordinatorServer/TabletServer by default.</li>
+</ul>
+<p>Log4j periodically scans this file for changes and adjusts the logging behavior if necessary. By default, this check happens every 30 seconds and is controlled by the monitorInterval setting in the Log4j properties files.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="log4j-2-configuration">Log4j 2 configuration<a href="#log4j-2-configuration" class="hash-link" aria-label="Direct link to Log4j 2 configuration" title="Direct link to Log4j 2 configuration">​</a></h3>
+<p>The following <a href="/docs/0.5/maintenance/configuration/">logging-related configuration options</a> are available:</p>
+<table><thead><tr><th>Configuration</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>env.log.dir</td><td>The directory where the Fluss logs are saved. Must be an absolute path.</td><td>log folder under Fluss’s home.</td></tr><tr><td>env.log.level</td><td>Root logger level.</td><td>INFO</td></tr><tr><td>env.log.max</td><td>The maximum number of old log files to keep.</td><td>10</td></tr><tr><td>env.stdout-err.redirect-to-file</td><td>Whether to redirect the ERROR level  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="compatibility-with-log4j-1">Compatibility with Log4j 1<a href="#compatibility-with-log4j-1" class="hash-link" aria-label="Direct link to Compatibility with Log4j 1" title="Direct link to Compatibility with Log4j 1">​</a></h3>
+<p>Fluss ships with the <a href="https://logging.apache.org/log4j/log4j-2.2/log4j-1.2-api/index.html" target="_blank" rel="noopener noreferrer">Log4j API bridge</a>, allowing existing applications that work against Log4j1 classes to continue working.</p>
+<p>If you have custom Log4j 1 properties files or code that relies on Log4j 1, please check out the official Log4j <a href="https://logging.apache.org/log4j/2.x/manual/compatibility.html" target="_blank" rel="noopener noreferrer">compatibility</a> and <a href="https://logging.apache.org/log4j/2.x/manual/migration.html" target="_blank" rel="noopener noreferrer">migration</a> guides.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-log4j1">Configuring Log4j1<a href="#configuring-log4j1" class="hash-link" aria-label="Direct link to Configuring Log4j1" title="Direct link to Configuring Log4j1">​</a></h2>
+<p>To use Fluss with <a href="https://logging.apache.org/log4j/1.2/" target="_blank" rel="noopener noreferrer">Log4j 1</a> you must ensure that:</p>
+<ul>
+<li><code>org.apache.logging.log4j:log4j-core</code>, <code>org.apache.logging.log4j:log4j-slf4j-impl</code> and <code>org.apache.logging.log4j:log4j-1.2-api</code> are not on the classpath.</li>
+<li><code>log4j:log4j</code>, <code>org.slf4j:slf4j-log4j12</code>, <code>org.apache.logging.log4j:log4j-to-slf4j</code> and <code>org.apache.logging.log4j:log4j-api</code> are on the classpath.</li>
+</ul>
+<p>For Fluss distributions this means you have to:</p>
+<ul>
+<li>remove the <code>log4j-core</code>, <code>log4j-slf4j-impl</code> and <code>log4j-1.2-api</code> jars from the lib directory,</li>
+<li>add the <code>log4j</code>, <code>slf4j-log4j12</code> and <code>log4j-to-slf4j</code> jars to the lib directory,</li>
+<li>replace all log4j properties files in the conf directory with Log4j1-compliant versions.</li>
+</ul>
+<p>In the IDE this means you have to replace such dependencies defined in your pom, and possibly add exclusions on dependencies that transitively depend on them.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-logback">Configuring logback<a href="#configuring-logback" class="hash-link" aria-label="Direct link to Configuring logback" title="Direct link to Configuring logback">​</a></h2>
+<p>To use Fluss with <a href="https://logback.qos.ch/" target="_blank" rel="noopener noreferrer">logback</a> you must ensure that:</p>
+<ul>
+<li><code>org.apache.logging.log4j:log4j-slf4j-impl</code> is not on the classpath,</li>
+<li><code>ch.qos.logback:logback-core</code> and <code>ch.qos.logback:logback-classic</code> are on the classpath.</li>
+</ul>
+<p>For Fluss distributions this means you have to:</p>
+<ul>
+<li>remove the <code>log4j-slf4j-impl</code> jar from the lib directory.</li>
+<li>add the <code>logback-core</code>, and <code>logback-classic</code> jars to the lib directory.</li>
+</ul>
+<p>The Fluss distribution ships with the following logback configuration files in the conf directory, which are used automatically if logback is enabled:</p>
+<ul>
+<li><code>logback-console.xml</code>: used for CoordinatorServer/TabletServer if they are run in the foreground (e.g., Kubernetes).</li>
+<li><code>logback.xml</code>: used for CoordinatorServer/TabletServer by default.</li>
+</ul>
+<p>In the IDE this means you have to replace such dependencies defined in your pom, and possibly add exclusions on dependencies that transitively depend on them.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/logging.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height= [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/metric-reporters/index.html b/docs/0.5/maintenance/metric-reporters/index.html
new file mode 100644
index 0000000..9d38071
--- /dev/null
+++ b/docs/0.5/maintenance/metric-reporters/index.html
@@ -0,0 +1,67 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/metric-reporters" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Metric Reporters | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.o [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss allows reporting <a href="/docs/0.5/maintenance/monitor-metrics/">metrics</a> to external system.
+Metrics can be exposed to an external system by configuring one or several reporters in <code>conf/server.yaml</code>. These
+reporters will be instantiated on each CoordinatorServer and TabletServers when they started.</p>
+<p>Example reporter configuration that specifies multiple reporters:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">metrics.reporters</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="push-vs-pull">Push vs. Pull<a href="#push-vs-pull" class="hash-link" aria-label="Direct link to Push vs. Pull" title="Direct link to Push vs. Pull">​</a></h2>
+<p>Metrics are exported either via pushes or pulls.</p>
+<p>Push-based reporters usually implement the <code>Scheduled</code> interface and periodically send a summary of current metrics to an external system.</p>
+<p>Pull-based reporters are queried from an external system instead.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="reporters">Reporters<a href="#reporters" class="hash-link" aria-label="Direct link to Reporters" title="Direct link to Reporters">​</a></h2>
+<p>The following sections list the supported reporters currently.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="jmx">JMX<a href="#jmx" class="hash-link" aria-label="Direct link to JMX" title="Direct link to JMX">​</a></h3>
+<p>Type: pull</p>
+<p>Parameters:</p>
+<ul>
+<li><code>port</code> - (optional) the port on which JMX listens for connections.
+In order to be able to run several instances of the reporter on one host (e.g. when one TabletServer is co-located with the CoordinatorServer) it is advisable to use a port range like <code>9250-9260</code>.
+When a range is specified the actual port is shown in the relevant server log.
+If this setting is set, Fluss will start an extra JMX connector for the given port/range.
+Metrics are always available on the default local JMX interface.</li>
+</ul>
+<p>Example configuration:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">metrics.reporters</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<p>Metrics exposed through JMX are identified by a domain and a list of key-properties, which together form the object name.</p>
+<p>The domain always begins with <code>com.alibaba.fluss</code> followed by a generalized metric identifier.
+An example for such a domain would be <code>com.alibaba.fluss.tabletserver.replicaCount</code>.</p>
+<p>The key-property list contains the values for all variables, that are associated
+with a given metric.
+An example for such a list would be <code>cluster_id=fluss1,host=localhost,server_id=1</code>.</p>
+<p>The domain thus identifies a metric class, while the key-property list identifies one (or multiple) instances of that metric.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="prometheus">Prometheus<a href="#prometheus" class="hash-link" aria-label="Direct link to Prometheus" title="Direct link to Prometheus">​</a></h3>
+<p>Type: pull</p>
+<p>Parameters:</p>
+<ul>
+<li><code>metrics.reporter.prometheus.port</code> - (optional) the port the Prometheus exporter listens on, defaults to <a href="https://github.com/prometheus/prometheus/wiki/Default-port-allocations" target="_blank" rel="noopener noreferrer">9249</a>. In order to be able to run several instances of the reporter on one host (e.g. when one TabletServer is co-located with the CoordinatorServer) it is advisable to use a port range like <code>9250-9260</code>.</li>
+</ul>
+<p>Example configuration:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">metrics.reporters</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<p>Fluss metric types are mapped to Prometheus metric types as follows:</p>
+<table><thead><tr><th>Fluss</th><th>Prometheus</th><th>Note</th></tr></thead><tbody><tr><td>Counter</td><td>Gauge</td><td>Prometheus counters cannot be decremented.</td></tr><tr><td>Gauge</td><td>Gauge</td><td>Only numbers and booleans are supported.</td></tr><tr><td>Histogram</td><td>Summary</td><td>Quantiles .5, .75, .95, .98, .99 and .999</td></tr><tr><td>Meter</td><td>Gauge</td><td>The gauge exports the meter&#x27;s rate.</td></tr></tbody></table></div><footer class="theme-doc-footer [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/monitor-metrics/index.html b/docs/0.5/maintenance/monitor-metrics/index.html
new file mode 100644
index 0000000..2e99b81
--- /dev/null
+++ b/docs/0.5/maintenance/monitor-metrics/index.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/monitor-metrics" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Monitor Metrics | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.or [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss has built a metrics system to measure the behaviours of cluster and table, like the active CoordinatorServer,
+the number of table, the bytes written, the number of records written, etc.</p>
+<p>Fluss supports different metric types: <strong>Counters</strong>, <strong>Gauges</strong>, <strong>Histograms</strong>, and <strong>Meters</strong>.</p>
+<ul>
+<li><code>Gauge</code>: Provides a value of any type at a point in time.</li>
+<li><code>Counter</code>: Used to count values by incrementing and decrementing.</li>
+<li><code>Histogram</code>: Measure the statistical distribution of a set of values including the min, max, mean, standard deviation and percentile.</li>
+<li><code>Meter</code>: The gauge exports the meter&#x27;s rate.</li>
+</ul>
+<p>Fluss client also has supported built-in metrics to measure operations of <strong>write to</strong>, <strong>read from</strong> fluss cluster,
+which can be bridged to Flink use Flink connector standard metrics.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="scope">Scope<a href="#scope" class="hash-link" aria-label="Direct link to Scope" title="Direct link to Scope">​</a></h2>
+<p>Every metric is assigned an identifier and a set of key-value pairs under which the metric will be reported.</p>
+<p>The identifier is delimited by <code>metrics.scope.delimiter</code>. Currently, the <code>metrics.scope.delimiter</code> is not configurable,
+it determined by the metric reporter. Take prometheus as example, the scope will delimited by <code>_</code>, so the scope like <code>A_B_C</code>,
+while Fluss metrics will always begin with <code>fluss</code>, as <code>fluss_A_B_C</code>.</p>
+<p>The key-value pairs are called <strong>variables</strong> and are used to filter metrics. There are no restrictions on the
+number of order of variables. Variables are case-sensitive.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="reporter">Reporter<a href="#reporter" class="hash-link" aria-label="Direct link to Reporter" title="Direct link to Reporter">​</a></h2>
+<p>For information on how to set up Fluss&#x27;s metric reporters please take a look at the <a href="/docs/0.5/maintenance/metric-reporters/">Metric Reporters</a> page.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-list">Metrics List<a href="#metrics-list" class="hash-link" aria-label="Direct link to Metrics List" title="Direct link to Metrics List">​</a></h2>
+<p>By default, Fluss provides <strong>cluster state</strong> metrics, <strong>table state</strong> metrics, and bridging to
+<strong>Flink connector</strong> standard metrics. This section is a reference of all these metrics.</p>
+<p>The tables below generally feature 5 columns:</p>
+<ul>
+<li>
+<p>The &quot;Scope&quot; column describes which scope format is used to generate the system scope.
+For example, if the cell contains <code>tabletserver</code> then the scope format for <code>fluss_tabletserver</code> is used.
+If the cell contains multiple values, separated by a slash, then the metrics are reported multiple
+times for different entities, like for both <code>tabletserver</code> and <code>coordinator</code>.</p>
+</li>
+<li>
+<p>The (optional)&quot;Infix&quot; column describes which infix is appended to the scope.</p>
+</li>
+<li>
+<p>The &quot;Metrics&quot; column lists the names of all metrics that are registered for the given scope and infix.</p>
+</li>
+<li>
+<p>The &quot;Description&quot; column provides information as to what a given metric is measuring.</p>
+</li>
+<li>
+<p>The &quot;Type&quot; column describes which metric type is used for the measurement.</p>
+</li>
+</ul>
+<p>Thus, in order to infer the metric identifier:</p>
+<ol>
+<li>Take the &quot;fluss_&quot; first.</li>
+<li>Take the scope-format based on the &quot;Scope&quot; column</li>
+<li>Append the value in the &quot;Infix&quot; column if present, and account for the <code>metrics.scope.delimiter</code> setting</li>
+<li>Append metric name.</li>
+<li>One metric for prometheus will be like <code>fluss_tabletserver_status_JVM_CPU_load</code></li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cpu">CPU<a href="#cpu" class="hash-link" aria-label="Direct link to CPU" title="Direct link to CPU">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="2"><strong>coordinator/tabletserver</strong></th><td rowspan="2">status_JVM_CPU</td><td>load</td><td>The recent CPU usage of the JVM.</td><td>Ga [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="memory">Memory<a href="#memory" class="hash-link" aria-label="Direct link to Memory" title="Direct link to Memory">​</a></h3>
+<p>The memory-related metrics require Oracle&#x27;s memory management (also included in OpenJDK&#x27;s Hotspot implementation) to be in place.
+Some metrics might not be exposed when using other JVM implementations (e.g. IBM&#x27;s J9).</p>
+<table class="table table-bordered"><thead><tr><th class="text-left">Scope</th><th class="text-left">Infix</th><th class="text-left">Metrics</th><th class="text-left">Description</th><th class="text-left">Type</th></tr></thead><tbody><tr><th rowspan="17"><strong>coordinator/tabletserver</strong></th><td rowspan="15">status_JVM_memory</td><td>heap_used</td><td>The amount of heap memory currently used (in bytes).</td><td>Gauge</td></tr><tr><td>heap_committed</td><td>The amount of heap memo [...]
+This value might not be necessarily equal to the maximum value specified through -Xmx or
+the equivalent Fluss configuration parameter. Some GC algorithms allocate heap memory that won&#x27;t
+be available to the user code and, therefore, not being exposed through the heap metrics.</td><td>Gauge</td></tr><tr><td>nonHeap_used</td><td>The amount of non-heap memory currently used (in bytes).</td><td>Gauge</td></tr><tr><td>nonHeap_committed</td><td>The amount of non-heap memory guaranteed to be available to the JVM (in bytes).</td><td>Gauge</td></tr><tr><td>nonHeap_max</td><td>The maximum amount of non-heap memory that can be used for memory management (in bytes).</td><td>Gauge</t [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="threads">Threads<a href="#threads" class="hash-link" aria-label="Direct link to Threads" title="Direct link to Threads">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="1"><strong>coordinator/tabletserver</strong></th><td rowspan="1">status_JVM_threads</td><td>count</td><td>The total number of live threads.</td> [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="garbagecollection">GarbageCollection<a href="#garbagecollection" class="hash-link" aria-label="Direct link to GarbageCollection" title="Direct link to GarbageCollection">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="3"><strong>coordinator/tabletserver</strong></th><td rowspan="3">status_JVM_GC</td><td>&lt;Collector/all&gt;_count</td><td>The total number of c [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-server">Coordinator Server<a href="#coordinator-server" class="hash-link" aria-label="Direct link to Coordinator Server" title="Direct link to Coordinator Server">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="5"><strong>coordinator</strong></th><td style="text-align:center;vertical-align:middle" rowspan="5">-</td><td>activeCoordinatorCount</td><td>The [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tablet-server">Tablet Server<a href="#tablet-server" class="hash-link" aria-label="Direct link to Tablet Server" title="Direct link to Tablet Server">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="6"><strong>tabletServer</strong></th><td style="text-align:center;vertical-align:middle" rowspan="6">-</td><td>replicationBytesInPerSecond</td>< [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="request">Request<a href="#request" class="hash-link" aria-label="Direct link to Request" title="Direct link to Request">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="1"><strong>coordinator</strong></th><td rowspan="1">request</td><td>requestQueueSize</td><td>The CoordinatorServer node network waiting queue si [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tablebucket">Table/Bucket<a href="#tablebucket" class="hash-link" aria-label="Direct link to Table/Bucket" title="Direct link to Table/Bucket">​</a></h3>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:30pt">Scope</th><th class="text-left" style="width:150pt">Infix</th><th class="text-left" style="width:80pt">Metrics</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:40pt">Type</th></tr></thead><tbody><tr><th rowspan="31"><strong>tabletServer</strong></th><td rowspan="16">table</td><td>messagesInPerSecond</td><td>The number of messages written per second to th [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="flink-connector-standard-metrics">Flink connector standard metrics<a href="#flink-connector-standard-metrics" class="hash-link" aria-label="Direct link to Flink connector standard metrics" title="Direct link to Flink connector standard metrics">​</a></h3>
+<p>When using Flink to read and write, Fluss has implemented some key standard Flink connector metrics
+to measure the source latency and output of sink, see <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-33%3A+Standardize+Connector+Metrics" target="_blank" rel="noopener noreferrer">FLIP-33: Standardize Connector Metrics</a>.
+Flink source / sink metrics implemented are listed here.</p>
+<p>How to use flink metrics, you can see <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/ops/metrics/#system-metrics" target="_blank" rel="noopener noreferrer">flink metrics</a> for more details.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="source-metrics">Source Metrics<a href="#source-metrics" class="hash-link" aria-label="Direct link to Source Metrics" title="Direct link to Source Metrics">​</a></h4>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:225pt">Metrics Name</th><th class="text-left" style="width:165pt">Level</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:70pt">Type</th></tr></thead><tbody><tr><td>currentEmitEventTimeLag</td><td>Flink Source Operator</td><td>Time difference between sending the record out of source and file creation.</td><td>Gauge</td></tr><tr><td>currentFetchEventTimeLag</td> [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="sink-metrics">Sink Metrics<a href="#sink-metrics" class="hash-link" aria-label="Direct link to Sink Metrics" title="Direct link to Sink Metrics">​</a></h4>
+<table class="table table-bordered"><thead><tr><th class="text-left" style="width:225pt">Metrics Name</th><th class="text-left" style="width:165pt">Level</th><th class="text-left" style="width:300pt">Description</th><th class="text-left" style="width:70pt">Type</th></tr></thead><tbody><tr><td>numBytesOut</td><td>Table</td><td>The total number of output bytes.</td><td>Counter</td></tr><tr><td>numBytesOutPerSecond</td><td>Table</td><td>The output bytes per second.</td><td>Meter</td></tr><t [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="grafana-template">Grafana template<a href="#grafana-template" class="hash-link" aria-label="Direct link to Grafana template" title="Direct link to Grafana template">​</a></h2>
+<p>We will provide a grafana template for you to monitor fluss soon.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/monitor-metrics.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html
new file mode 100644
index 0000000..6b8046d
--- /dev/null
+++ b/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/tiered-storage/lakehouse-storage" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Lakehouse Storage | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Lakehouse represents a new, open architecture that combines the best elements of data lakes and data warehouses.
+Lakehouse combines data lake scalability and cost-effectiveness with data warehouse reliability and performance.</p>
+<p>Fluss leverages the well-known Lakehouse storage solutions like Apache Paimon, Apache Iceberg, Apache Hudi, Delta Lake as
+the tiered storage layer. Currently, only Apache Paimon is supported, but more kinds of Lakehouse storage support are on the way.</p>
+<p>Fluss&#x27;s datalake tiering service will compact Fluss&#x27;s data to the Lakehouse storage continuously. The data in Lakehouse storage can be read both by Fluss&#x27;s client in a streaming manner and accessed directly
+by external systems such as Flink, Spark, StarRocks and others. With data tiered in Lakehouse storage, Fluss
+can gain much storage cost reduction and analytics performance improvement.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="enable-lakehouse-storage">Enable Lakehouse Storage<a href="#enable-lakehouse-storage" class="hash-link" aria-label="Direct link to Enable Lakehouse Storage" title="Direct link to Enable Lakehouse Storage">​</a></h2>
+<p>Lakehouse Storage disabled by default, you must enable it manually.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="lakehouse-storage-cluster-configurations">Lakehouse Storage Cluster Configurations<a href="#lakehouse-storage-cluster-configurations" class="hash-link" aria-label="Direct link to Lakehouse Storage Cluster Configurations" title="Direct link to Lakehouse Storage Cluster Configurations">​</a></h3>
+<p>First, you must configure the lakehouse storage in <code>server.yaml</code>. Take Paimon
+as an example, you must configure the following configurations:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">lakehouse.storage</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-the-datalake-tiering-service">Start The Datalake Tiering Service<a href="#start-the-datalake-tiering-service" class="hash-link" aria-label="Direct link to Start The Datalake Tiering Service" title="Direct link to Start The Datalake Tiering Service">​</a></h3>
+<p>Then, you must start the datalake tiering service to compact Fluss&#x27;s data to the lakehouse storage.
+To start the datalake tiering service, you must have a Flink cluster running since Fluss currently only supports Flink as a tiering service backend.</p>
+<p>You can use the following commands to start the datalake tiering service:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># change directory to Fluss </span><span class="token p [...]
+<p><strong>Note:</strong></p>
+<ul>
+<li><code>flink.rest.address</code> and <code>flink.rest.port</code> are the Flink cluster&#x27;s rest endpoint, you may need to change it according to your Flink cluster&#x27;s configuration.</li>
+<li>The datalake tiering service is actual a flink job, you can set the Flink configuration in <code>-D</code> arguments while starting the datalake tiering service, There are some example commands for reference below.</li>
+</ul>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)"># If want to set the checkpoint interval to 10s, you ca [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="enable-lakehouse-storage-per-table">Enable Lakehouse Storage Per Table<a href="#enable-lakehouse-storage-per-table" class="hash-link" aria-label="Direct link to Enable Lakehouse Storage Per Table" title="Direct link to Enable Lakehouse Storage Per Table">​</a></h3>
+<p>To enable lakehouse storage for a table, the table must be created with the option <code>&#x27;table.datalake.enabled&#x27; = &#x27;true&#x27;</code>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/tiered-storage/lakehouse-storage.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="curr [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/tiered-storage/overview/index.html b/docs/0.5/maintenance/tiered-storage/overview/index.html
new file mode 100644
index 0000000..2fe9a24
--- /dev/null
+++ b/docs/0.5/maintenance/tiered-storage/overview/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/tiered-storage/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Overview | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>With tiered storage, Fluss allows you to scale compute and storage resources independently, provides better client isolation, and
+allows faster maintenance.</p>
+<p>Fluss organizes data into different storage layers based on its access patterns, performance requirements, and cost considerations.</p>
+<p>Fluss ensures the recent data is stored in local for higher write/read performance and the historical data is stored in <a href="/docs/0.5/maintenance/tiered-storage/remote-storage/">remote storage</a> for lower cost.</p>
+<p>What&#x27;s more, since the native format of Fluss&#x27;s data is optimized for real-time write/read which is inevitable unfriendly to batch analytics, Fluss also introduces a <a href="/docs/0.5/maintenance/tiered-storage/lakehouse-storage/">lakehouse storage</a> which stores the data
+in the well-known open data lake format for better analytics performance. Currently, only Paimon is supported, but more kinds of data lake support are on the way. Keep eyes on us!</p>
+<p>The overall tiered storage architecture is shown in the following diagram:</p>
+<img width="600px" src="/assets/images/tiered-storage-7a1d1d0d91fa9b682bc80cb2713831a3.png"></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/maintenance/tiered-storage/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/maintenance/tiered-storage/remote-storage/index.html b/docs/0.5/maintenance/tiered-storage/remote-storage/index.html
new file mode 100644
index 0000000..61099be
--- /dev/null
+++ b/docs/0.5/maintenance/tiered-storage/remote-storage/index.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-maintenance/tiered-storage/remote-storage" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Remote Storage | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Remote storage usually means a cost-efficient and fault-tolerant storage comparing to local disk, such as S3, HDFS, OSS.
+See more detail about how to configure remote storage in documentation of <a href="/docs/0.5/maintenance/filesystems/overview/">filesystems</a>.</p>
+<p>For log table, Fluss will use remote storage to store the tiered log segments of data. For primary key table, Fluss will use remote storage to store the snapshot as well as the tiered log segments for change log.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="remote-log">Remote Log<a href="#remote-log" class="hash-link" aria-label="Direct link to Remote Log" title="Direct link to Remote Log">​</a></h2>
+<p>As a streaming storage, Fluss data is mostly consumed in a streaming fashion using tail reads. To achieve low
+latency for tail reads, Fluss will store recent data in local disk. But for older data, to reduce local disk cost,
+Fluss will move data from local to remote storage, such as S3, HDFS or OSS asynchronously.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cluster-configurations-about-remote-log">Cluster configurations about remote log<a href="#cluster-configurations-about-remote-log" class="hash-link" aria-label="Direct link to Cluster configurations about remote log" title="Direct link to Cluster configurations about remote log">​</a></h3>
+<p>By default, Fluss will copy local log segments to remote storage in every 1 minute. The interval is controlled by configuration <code>remote.log.task-interval-duration</code>.
+If you don&#x27;t want to copy log segments to remote storage, you can set <code>remote.log.task-interval-duration</code> to 0.</p>
+<p>Below is the list for all configurations to control the log segments tiered behavior in cluster level:</p>
+<table><thead><tr><th>Configuration</th><th>type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>remote.log.task-interval-duration</td><td>Duration</td><td>1min</td><td>Interval at which remote log manager runs the scheduled tasks like copy segments, clean up remote log segments, delete local log segments etc. If the value is set to 0s, it means that the remote log storage is disabled.</td></tr><tr><td>remote.log.index-file-cache-size</td><td>MemorySize</td><td>1gb</t [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="table-configurations-about-remote-log">Table configurations about remote log<a href="#table-configurations-about-remote-log" class="hash-link" aria-label="Direct link to Table configurations about remote log" title="Direct link to Table configurations about remote log">​</a></h3>
+<p>When local log segments are copied to remote storage, the local log segments will be deleted to reduce local disk cost.
+But sometimes, we want to keep the several latest log segments retain in local, although they have been coped to remote storage for better read performance.
+You can control how many log segments to retain in local by setting the configuration <code>table.log.tiered.local-segments</code>(default is 2) per table.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="remote-snapshot-of-primary-key-table">Remote snapshot of primary key table<a href="#remote-snapshot-of-primary-key-table" class="hash-link" aria-label="Direct link to Remote snapshot of primary key table" title="Direct link to Remote snapshot of primary key table">​</a></h2>
+<p>In Fluss, one primary key table is distributed to multiple buckets. For each bucket of primary key table, Fluss will only always keep one replica in local disk without any follower replicas.</p>
+<p>So, for fault tolerance of local disk fail forever, Fluss will do snapshots to the replicas of primary key table periodically and upload the snapshots to remote storage.
+The snapshot will keep a log offset representing the next unread change log while doing the snapshot. Then, when the machine holding the replica fails, Fluss can recover the replica in other live machines by downloading the snapshot from remote storage and apply the change log
+since last snapshot.</p>
+<p>What&#x27;s more, with the snapshot and the consistent log offset, Fluss client can seamlessly switch from full reading phase(reading snapshot) to the incremental
+phase (subscribe change log from the consistent log offset) without any data duplication or loss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cluster-configurations-about-remote-snapshot">Cluster configurations about remote snapshot<a href="#cluster-configurations-about-remote-snapshot" class="hash-link" aria-label="Direct link to Cluster configurations about remote snapshot" title="Direct link to Cluster configurations about remote snapshot">​</a></h3>
+<p>Below is the list for all configurations to control the snapshot behavior in cluster level:</p>
+<table><thead><tr><th>Configuration</th><th>type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>kv.snapshot.interval</td><td>Duration</td><td>10min</td><td>The interval to perform periodic snapshot for kv data.</td></tr><tr><td>kv.snapshot.scheduler-thread-num</td><td>Integer</td><td>1</td><td>The number of threads that the server uses to schedule snapshot kv data for all the replicas in the server.</td></tr><tr><td>kv.snapshot.transfer-thread-num</td><td>Integer</td [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/quickstart/flink/index.html b/docs/0.5/quickstart/flink/index.html
new file mode 100644
index 0000000..5d28d76
--- /dev/null
+++ b/docs/0.5/quickstart/flink/index.html
@@ -0,0 +1,165 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-quickstart/flink" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Real-Time Analytics With Flink | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https:// [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This guide will get you up and running with Apache Flink to do real-time analytics, covering some powerful features of Fluss,
+including integrating with Paimon.
+The guide is derived from <a href="https://www.tpc.org/tpch/" target="_blank" rel="noopener noreferrer">TPC-H</a> <strong>Q5</strong>.</p>
+<p>For more information on working with Flink, refer to the <a href="/docs/0.5/engine-flink/getting-started/">Apache Flink Engine</a> section.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="environment-setup">Environment Setup<a href="#environment-setup" class="hash-link" aria-label="Direct link to Environment Setup" title="Direct link to Environment Setup">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites">​</a></h3>
+<p>Before proceeding with this guide, ensure that <a href="https://docs.docker.com/engine/install/" target="_blank" rel="noopener noreferrer">Docker</a> and the <a href="https://docs.docker.com/compose/install/linux/" target="_blank" rel="noopener noreferrer">Docker Compose plugin</a> are installed on your machine.
+All commands were tested with Docker version 27.4.0 and Docker Compose version v2.30.3.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="starting-required-components">Starting required components<a href="#starting-required-components" class="hash-link" aria-label="Direct link to Starting required components" title="Direct link to Starting required components">​</a></h3>
+<p>We will use <code>docker compose</code> to spin up the required components for this tutorial.</p>
+<ol>
+<li>Create a working directory for this guide.</li>
+</ol>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">mkdir</span><span class="token plain"> fluss-quicksta [...]
+<ol start="2">
+<li>Create a <code>docker-compose.yml</code> file with the following content:</li>
+</ol>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<p>The Docker Compose environment consists of the following containers:</p>
+<ul>
+<li><strong>Fluss Cluster:</strong> a Fluss <code>CoordinatorServer</code>, a Fluss <code>TabletServer</code> and a <code>ZooKeeper</code> server.</li>
+<li><strong>Flink Cluster</strong>: a Flink <code>JobManager</code> and a Flink <code>TaskManager</code> container to execute queries.</li>
+</ul>
+<p><strong>Note:</strong> The <code>fluss/quickstart-flink</code> image is based on <a href="https://hub.docker.com/layers/library/flink/1.20-java17/images/sha256-381ed7399c95b6b03a7b5ee8baca91fd84e24def9965ce9d436fb22773d66717" target="_blank" rel="noopener noreferrer">flink:1.20.0-java17</a> and
+includes the <a href="/docs/0.5/engine-flink/getting-started/">fluss-connector-flink</a>, <a href="https://paimon.apache.org/docs/0.8/flink/quick-start/" target="_blank" rel="noopener noreferrer">paimon-flink</a> and
+<a href="https://flink-packages.org/packages/flink-faker" target="_blank" rel="noopener noreferrer">flink-connector-faker</a> to simplify this guide.</p>
+<ol start="3">
+<li>To start all containers, run:</li>
+</ol>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> compose up </ [...]
+<p>This command automatically starts all the containers defined in the Docker Compose configuration in detached mode.</p>
+<p>Run</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> </span><span  [...]
+<p>to check whether all containers are running properly.</p>
+<p>You can also visit <a href="http://localhost:8083/" target="_blank" rel="noopener noreferrer">http://localhost:8083/</a> to see if Flink is running normally.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<li>If you want to run with your own Flink environment, remember to download the <a href="/downloads/">fluss-connector-flink</a>, <a href="https://github.com/knaufk/flink-faker/releases" target="_blank" rel="noopener noreferrer">flink-connector-faker</a>, <a href="https://paimon.apache.org/docs/0.8/flink/quick-start/" target="_blank" rel="noopener noreferrer">paimon-flink</a> connector jars and then put them to <code>FLINK_HOME/lib/</code>.</li>
+<li>All the following commands involving <code>docker compose</code> should be executed in the created working directory that contains the <code>docker-compose.yml</code> file.</li>
+</ul></div></div>
+<p>Congratulations, you are all set!</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="enter-into-sql-client">Enter into SQL-Client<a href="#enter-into-sql-client" class="hash-link" aria-label="Direct link to Enter into SQL-Client" title="Direct link to Enter into SQL-Client">​</a></h2>
+<p>First, use the following command to enter the Flink SQL CLI Container:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> compose </spa [...]
+<p><strong>Note</strong>:
+To simplify this guide, three temporary tables have been pre-created with <code>faker</code> connector to generate data.
+You can view their schemas by running the following commands:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SHOW [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SHOW [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SHOW [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-fluss-tables">Create Fluss Tables<a href="#create-fluss-tables" class="hash-link" aria-label="Direct link to Create Fluss Tables" title="Direct link to Create Fluss Tables">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-fluss-catalog">Create Fluss Catalog<a href="#create-fluss-catalog" class="hash-link" aria-label="Direct link to Create Fluss Catalog" title="Direct link to Create Fluss Catalog">​</a></h3>
+<p>Use the following SQL to create a Fluss catalog:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE< [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-tables">Create Tables<a href="#create-tables" class="hash-link" aria-label="Direct link to Create Tables" title="Direct link to Create Tables">​</a></h3>
+<p>Running the following SQL to create Fluss tables to be used in this guide:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-into-fluss">Streaming into Fluss<a href="#streaming-into-fluss" class="hash-link" aria-label="Direct link to Streaming into Fluss" title="Direct link to Streaming into Fluss">​</a></h2>
+<p>First, run the following SQL to sync data from source tables to Fluss tables:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">EXEC [...]
+<p>Fluss primary-key tables support high QPS point lookup queries on primary keys. Performing a <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/queries/joins/#lookup-join" target="_blank" rel="noopener noreferrer">lookup join</a> is really efficient and you can use it to enrich
+the <code>fluss_orders</code> table with information from the <code>fluss_customer</code> and <code>fluss_nation</code> primary-key tables.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSE [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="run-ad-hoc-queries-on-fluss-tables">Run Ad-hoc Queries on Fluss Tables<a href="#run-ad-hoc-queries-on-fluss-tables" class="hash-link" aria-label="Direct link to Run Ad-hoc Queries on Fluss Tables" title="Direct link to Run Ad-hoc Queries on Fluss Tables">​</a></h2>
+<p>You can now perform real-time analytics directly on Fluss tables.
+For instance, to calculate the number of orders placed by a specific customer, you can execute the following SQL query to obtain instant, real-time results.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- u [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- u [...]
+<p><strong>Sample Output</strong></p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+-----------+----------+-------------+------------+----------------+--------+------------+- [...]
+<p>If you are interested in a specific customer, you can retrieve their details by performing a lookup on the <code>cust_key</code>.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- l [...]
+<p><strong>Sample Output</strong></p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+----------+---------------+--------------+------------+---------+------------+</span><br [...]
+<p><strong>Note:</strong> Overall the query results are returned really fast, as Fluss enables efficient primary key lookups for tables with defined primary keys.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="updatedelete-rows-on-fluss-tables">Update/Delete rows on Fluss Tables<a href="#updatedelete-rows-on-fluss-tables" class="hash-link" aria-label="Direct link to Update/Delete rows on Fluss Tables" title="Direct link to Update/Delete rows on Fluss Tables">​</a></h2>
+<p>You can use <code>UPDATE</code> and <code>DELETE</code> statements to update/delete rows on Fluss tables.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="update">Update<a href="#update" class="hash-link" aria-label="Direct link to Update" title="Direct link to Update">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- u [...]
+<p>Then you can <code>lookup</code> the specific row:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELE [...]
+<p><strong>Sample Output</strong></p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+----------+---------------+--------------+------------+---------+------------+</span><br [...]
+<p>Notice that the <code>name</code> column has been updated to <code>fluss_updated</code>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="delete">Delete<a href="#delete" class="hash-link" aria-label="Direct link to Delete" title="Direct link to Delete">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">DELETE</span><span class="token plain"> </span><span class= [...]
+<p>The following SQL query should return an empty result.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELE [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="integrate-with-paimon">Integrate with Paimon<a href="#integrate-with-paimon" class="hash-link" aria-label="Direct link to Integrate with Paimon" title="Direct link to Integrate with Paimon">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-the-lakehouse-tiering-service">Start the Lakehouse Tiering Service<a href="#start-the-lakehouse-tiering-service" class="hash-link" aria-label="Direct link to Start the Lakehouse Tiering Service" title="Direct link to Start the Lakehouse Tiering Service">​</a></h3>
+<p>To integrate with <a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">Apache Paimon</a>, you need to start the <code>Lakehouse Tiering Service</code>.
+Open a new terminal, navigate to the <code>fluss-quickstart-flink</code> directory, and execute the following command within this directory to start the service:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> compose </spa [...]
+<p>You should see a Flink Job named <code>fluss-paimon-tiering-service</code> running in the <a href="http://localhost:8083/" target="_blank" rel="noopener noreferrer">Flink Web UI</a>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-into-fluss-datalake-enabled-tables">Streaming into Fluss datalake-enabled tables<a href="#streaming-into-fluss-datalake-enabled-tables" class="hash-link" aria-label="Direct link to Streaming into Fluss datalake-enabled tables" title="Direct link to Streaming into Fluss datalake-enabled tables">​</a></h3>
+<p>By default, tables are created with data lake integration disabled, meaning the Lakehouse Tiering Service will not tier the table&#x27;s data to the data lake.</p>
+<p>To enable lakehouse functionality as a tiered storage solution for a table, you must create the table with the configuration option <code>table.datalake.enabled = true</code>.
+Return to the <code>SQL client</code> and execute the following SQL statement to create a table with data lake integration enabled:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREA [...]
+<p>Next, perform streaming data writing into the <strong>datalake-enabled</strong> table, <code>datalake_enriched_orders</code>:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- i [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-analytics-on-fluss-datalake-enabled-tables">Real-Time Analytics on Fluss datalake-enabled Tables<a href="#real-time-analytics-on-fluss-datalake-enabled-tables" class="hash-link" aria-label="Direct link to Real-Time Analytics on Fluss datalake-enabled Tables" title="Direct link to Real-Time Analytics on Fluss datalake-enabled Tables">​</a></h3>
+<p>The data for the <code>datalake_enriched_orders</code> table is stored in Fluss (for real-time data) and Paimon (for historical data).</p>
+<p>When querying the <code>datalake_enriched_orders</code> table, Fluss uses a union operation that combines data from both Fluss and Paimon to provide a complete result set -- combines <strong>real-time</strong> and <strong>historical</strong> data.</p>
+<p>If you wish to query only the data stored in Paimon—offering high-performance access without the overhead of unioning data—you can use the <code>datalake_enriched_orders$lake</code> table by appending the <code>$lake</code> suffix.
+This approach also enables all the optimizations and features of a Flink Paimon table source, including <a href="https://paimon.apache.org/docs/master/concepts/system-tables/" target="_blank" rel="noopener noreferrer">system table</a> such as <code>datalake_enriched_orders$lake$snapshots</code>.</p>
+<p>To query the snapshots directly from Paimon, use the following SQL:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- s [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- q [...]
+<p><strong>Sample Output:</strong></p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+-------------+--------------------+</span><br></span><span class="token-line" style="col [...]
+<p><strong>Note:</strong> Make sure to wait for the checkpoints (~30s) to complete before querying the snapshots, otherwise the result will be empty.</p>
+<p>Run the following SQL to do analytics on Paimon data:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- t [...]
+<p><strong>Sample Output:</strong></p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+------------+</span><br></span><span class="token-line" style="color:#9CDCFE"><span clas [...]
+<p>To achieve results with sub-second data freshness, you can query the table directly, which seamlessly unifies data from both Fluss and Paimon:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL Client</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- t [...]
+<p>The result looks like:</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+------------+</span><br></span><span class="token-line" style="color:#9CDCFE"><span class= [...]
+<p>You can execute the real-time analytics query multiple times, and the results will vary with each run as new data is continuously written to Fluss in real-time.</p>
+<p>Finally, you can use the following command to view the files stored in Paimon:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> compose </spa [...]
+<p><strong>Sample Output:</strong></p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">/tmp/paimon/fluss.db</span><br></span><span class="token-line" style="color:#9CDCFE"><spa [...]
+<p>The files adhere to Paimon&#x27;s standard format, enabling seamless querying with other engines such as <a href="https://docs.starrocks.io/docs/data_source/catalog/paimon_catalog/" target="_blank" rel="noopener noreferrer">StarRocks</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clean-up">Clean up<a href="#clean-up" class="hash-link" aria-label="Direct link to Clean up" title="Direct link to Clean up">​</a></h2>
+<p>After finishing the tutorial, run <code>exit</code> to exit Flink SQL CLI Container and then run</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> compose down  [...]
+<p>to stop all containers.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more">​</a></h2>
+<p>Now that you&#x27;re up an running with Fluss and Flink, check out the <a href="/docs/0.5/engine-flink/getting-started/">Apache Flink Engine</a> docs to learn more features with Flink!</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/quickstart/flink.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html
new file mode 100644
index 0000000..e441951
--- /dev/null
+++ b/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-streaming-lakehouse/integrate-data-lakes/paimon" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Paimon | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/0. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p><a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">Apache Paimon</a> innovatively combines lake format and LSM structure, bringing efficient updates into the lake architecture.
+To integrate Fluss with Paimon, you must enable lakehouse storage and configure Paimon as lakehouse storage. See more detail about <a href="/docs/0.5/maintenance/tiered-storage/lakehouse-storage/#enable-lakehouse-storage">Enable Lakehouse Storage</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction">​</a></h2>
+<p>When a table with option <code>&#x27;table.datalake.enabled&#x27; = &#x27;true&#x27;</code> is created or altered in Fluss, Fluss will create a corresponding Paimon table with same table path as well.
+The schema of the Paimon table is as same as the schema of the Fluss table, except for there are two extra columns <code>__offset</code> and <code>__timestamp</code> appended to the last.
+These two columns are used to help Fluss client to consume the data in Paimon in streaming way like seek by offset/timestamp, etc.</p>
+<p>Then datalake tiering service compacts the data from Fluss to Paimon continuously. For primary key table, it will also generate change log in Paimon format which
+enables you streaming consume it in Paimon way.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="read-tables">Read tables<a href="#read-tables" class="hash-link" aria-label="Direct link to Read tables" title="Direct link to Read tables">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="read-by-flink">Read by Flink<a href="#read-by-flink" class="hash-link" aria-label="Direct link to Read by Flink" title="Direct link to Read by Flink">​</a></h3>
+<p>For the table with option <code>&#x27;table.datalake.enabled&#x27; = &#x27;true&#x27;</code>, there are two part of data: the data remains in Fluss and the data already in Paimon.
+Now, you have two view of the table: one view is the Paimon data which has minute-level latency, one view is the full data union Fluss and Paimon data
+which is the latest within second-level latency.</p>
+<p>Flink empowers you to decide to choose which view:</p>
+<ul>
+<li>Only Paimon means a better analytics performance but with worse data freshness</li>
+<li>Combing Fluss and Paimon means a better data freshness but with analytics performance degrading</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="read-data-only-in-paimon">Read data only in Paimon<a href="#read-data-only-in-paimon" class="hash-link" aria-label="Direct link to Read data only in Paimon" title="Direct link to Read data only in Paimon">​</a></h4>
+<p>To point to read data in Paimon, you must specify the table with <code>$lake</code> suffix, the following
+SQL shows how to do that:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- assume w [...]
+<p>When specify the table with <code>$lake</code> suffix in query, it just acts like a normal Paimon table, so it inherits all ability of Paimon table.
+You can enjoy all the features that Flink&#x27;s query supports/optimization on Paimon, like query system tables, time travel, etc. See more
+about Paimon&#x27;s <a href="https://paimon.apache.org/docs/0.9/flink/sql-query/#sql-query" target="_blank" rel="noopener noreferrer">sql-query</a>.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="union-read-data-in-fluss-and-paimon">Union read data in Fluss and Paimon<a href="#union-read-data-in-fluss-and-paimon" class="hash-link" aria-label="Direct link to Union read data in Fluss and Paimon" title="Direct link to Union read data in Fluss and Paimon">​</a></h4>
+<p>To point to read the full data that union Fluss and Paimon, you just query it as a normal table without any suffix or others, the following
+SQL shows how to do that:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- query wi [...]
+<p>The query may look slower than only querying data in Paimon, but it queries the full data which means better data freshness. You can
+run the query multi-times, you should get different results in every one run as the data is written to the table continuously.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="read-by-other-engines">Read by other engines<a href="#read-by-other-engines" class="hash-link" aria-label="Direct link to Read by other engines" title="Direct link to Read by other engines">​</a></h3>
+<p>As the tiered data in Paimon compacted from Fluss is also a standard Paimon table, you can use
+<a href="https://paimon.apache.org/docs/0.9/engines/overview/" target="_blank" rel="noopener noreferrer">any engines</a> that support Paimon to read the data. Here, we take <a href="https://paimon.apache.org/docs/master/engines/starrocks/" target="_blank" rel="noopener noreferrer">StarRocks</a> as the engine to read the data:</p>
+<p>First, create a Paimon catalog for StarRocks:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">StarRocks SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE< [...]
+<p><strong>NOTE</strong>: The configuration value <code>paimon.catalog.type</code> and <code>paimon.catalog.warehouse</code> should be same as how you configure the Paimon as lakehouse storage for Fluss in <code>server.yaml</code>.</p>
+<p>Then, you can query the <code>orders</code> table by StarRocks:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">StarRocks SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- the  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-type-mapping">Data Type Mapping<a href="#data-type-mapping" class="hash-link" aria-label="Direct link to Data Type Mapping" title="Direct link to Data Type Mapping">​</a></h2>
+<p>When integrate with Paimon, Fluss automatically converts between Fluss data type and Paimon data type.
+The following content shows the mapping between <a href="/docs/0.5/table-design/data-types/">Fluss data type</a> and Paimon data type:</p>
+<table><thead><tr><th>Fluss Data Type</th><th>Paimon Data Type</th></tr></thead><tbody><tr><td>BOOLEAN</td><td>BOOLEAN</td></tr><tr><td>TINYINT</td><td>TINYINT</td></tr><tr><td>SMALLINT</td><td>SMALLINT</td></tr><tr><td>INT</td><td>INT</td></tr><tr><td>BIGINT</td><td>BIGINT</td></tr><tr><td>FLOAT</td><td>FLOAT</td></tr><tr><td>DOUBLE</td><td>DOUBLE</td></tr><tr><td>DECIMAL</td><td>DECIMAL</td></tr><tr><td>STRING</td><td>STRING</td></tr><tr><td>CHAR</td><td>CHAR</td></tr><tr><td>DATE</td> [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/streaming-lakehouse/overview/index.html b/docs/0.5/streaming-lakehouse/overview/index.html
new file mode 100644
index 0000000..5899618
--- /dev/null
+++ b/docs/0.5/streaming-lakehouse/overview/index.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-streaming-lakehouse/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Lakehouse Overview | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-lakehouse">Introducing Lakehouse<a href="#introducing-lakehouse" class="hash-link" aria-label="Direct link to Introducing Lakehouse" title="Direct link to Introducing Lakehouse">​</a></h2>
+<p>Lakehouse represents a new, open architecture that combines the best elements of data lakes and data warehouses.
+It combines data lake scalability and cost-effectiveness with data warehouse reliability and performance.
+The well-known data lake format such like <a href="https://iceberg.apache.org/" target="_blank" rel="noopener noreferrer">Apache Iceberg</a>, <a href="https://paimon.apache.org/" target="_blank" rel="noopener noreferrer">Apache Paimon</a>, <a href="https://hudi.apache.org/" target="_blank" rel="noopener noreferrer">Apache Hudi</a> and <a href="https://delta.io/" target="_blank" rel="noopener noreferrer">Delta Lake</a> play key roles in the Lakehouse architecture,
+facilitating a harmonious balance between data storage, reliability, and analytical capabilities within a single, unified platform.</p>
+<p>Lakehouse, as a modern architecture, is effective in addressing the complex needs of data management and analytics.
+But they can hardly meet the scenario of real-time analytics requiring sub-second-level data freshness limited by their implementation.
+With these data lake formats, you will get into a contradictory situation:</p>
+<ol>
+<li>If you require low latency, then you write and commit frequently, which means many small Parquet files. This becomes inefficient for
+reads which must now deal with masses of small files.</li>
+<li>If you require reading efficiency, then you accumulate data until you can write to large Parquet files, but this introduces
+much higher latency.</li>
+</ol>
+<p>Overall, these data lake formats typically achieve data freshness at best within minute-level granularity, even under optimal usage conditions.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-lakehouse-streaming--lakehouse-unification">Streaming Lakehouse: Streaming &amp; Lakehouse Unification<a href="#streaming-lakehouse-streaming--lakehouse-unification" class="hash-link" aria-label="Direct link to Streaming Lakehouse: Streaming &amp; Lakehouse Unification" title="Direct link to Streaming Lakehouse: Streaming &amp; Lakehouse Unification">​</a></h2>
+<p>Fluss is a streaming storage supporting streaming reads and writes with sub-second low latency.
+With <a href="/docs/0.5/maintenance/tiered-storage/lakehouse-storage/">Lakehouse Storage</a>, Fluss unifies data streaming and data Lakehouse by serving real-time streaming data on top of Lakehouse.
+This not only brings low latency to data Lakehouse, but also adds powerful analytics to data streams.</p>
+<p>In order to build Streaming Lakehouse, Fluss maintains a compaction service to compact the real-time data in Fluss cluster into Lakehouse storage.
+The data in Fluss cluster (streaming Arrow format) is write-optimized for low-latency read and write, and the compacted data in Lakehouse (Parquet format with compressions) is read-optimized for powerful analytics and space-optimized for storing long-term data.
+So the data in Fluss cluster serves real-time data layer which retains days with sub-second-level freshness, and the data in Lakehouse serves historical data layer which retains months with minute-level freshness.</p>
+<p><img decoding="async" loading="lazy" alt="streamhouse" src="/assets/images/streamhouse-8069e2c65c0cf01ec3db98818555089a.png" width="2901" height="1237" class="img_ev3q"></p>
+<p>The core idea of Streaming Lakehouse is shared data and shared metadata between stream and Lakehouse, avoiding data duplication and metadata inconsistency.
+Some powerful features it provided are:</p>
+<ul>
+<li><strong>Unified Metadata</strong>: Fluss provides a unified table metadata for both data in Stream and Lakehouse. So users only need to handle one table, but can access either the real-time streaming data, or the historical data, or the union of them.</li>
+<li><strong>Union Reads</strong>: Compute engines perform queries on the table will read the union of the real-time streaming data and Lakehouse data. Currently, only Flink supports union reads, but more engines are on the roadmap.</li>
+<li><strong>Real-Time Lakehouse</strong>: The union reads help Lakehouse evolving from near-real-time analytics to truly real-time analytics. This empowers businesses to gain more valuable insights from real-time data.</li>
+<li><strong>Analytical Streams</strong>: The union reads help data streams to have the powerful analytics capabilities. This reduces complexity when developing streaming applications, simplifies debugging, and allows for immediate access to live data insights.</li>
+<li><strong>Connect to Lakehouse Ecosystem</strong>: Fluss keeps the table metadata in sync with data lake catalogs while compacting data into Lakehouse. This allows external engines like Spark, StarRocks, Flink, Trino to read the data directly by connecting to the data lake catalog.</li>
+</ul>
+<p>Currently, Fluss supports <a href="/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/">Paimon as Lakehouse Storage</a>, more kinds of data lake formats are on the roadmap.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/streaming-lakehouse/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><s [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/data-distribution/bucketing/index.html b/docs/0.5/table-design/data-distribution/bucketing/index.html
new file mode 100644
index 0000000..697fe3e
--- /dev/null
+++ b/docs/0.5/table-design/data-distribution/bucketing/index.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/data-distribution/bucketing" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Bucketing | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>A bucketing strategy is a data distribution technique that divides table data into small pieces
+and distributes the data to multiple hosts and services.</p>
+<p>When creating a Fluss table, you can specify the number of buckets by setting <code>&#x27;bucket.num&#x27; = &#x27;&lt;num&gt;&#x27;</code> property for the table, see more details in <a href="/docs/0.5/engine-flink/ddl/">DDL</a>.
+Currently, Fluss supports 3 bucketing strategies: <strong>Hash Bucketing</strong>, <strong>Sticky Bucketing</strong> and <strong>Round-Robin Bucketing</strong>.
+Primary-Key Tables only allow to use <strong>Hash Bucketing</strong>. Log Tables use <strong>Sticky Bucketing</strong> by default but can use other two bucketing strategies.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="hash-bucketing">Hash Bucketing<a href="#hash-bucketing" class="hash-link" aria-label="Direct link to Hash Bucketing" title="Direct link to Hash Bucketing">​</a></h2>
+<p><strong>Hash Bucketing</strong> is common in OLAP scenarios.
+The advantage is that it can be very evenly distributed to multiple nodes, making full use of the capabilities of distributed computing, and has excellent
+scalability (rescale buckets or clusters) to cope with massive data.</p>
+<p><strong>Usage</strong>: setting <code>&#x27;bucket.key&#x27; = &#x27;col1, col2&#x27;</code> property for the table to specify the bucket key for hash bucketing.
+Primary-Key Tables use primary key (excluding partition key) as the bucket key by default.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="sticky-bucketing">Sticky Bucketing<a href="#sticky-bucketing" class="hash-link" aria-label="Direct link to Sticky Bucketing" title="Direct link to Sticky Bucketing">​</a></h2>
+<p><strong>Sticky Bucketing</strong> enables larger batches and reduces latency when writing records into Log Tables. After sending a batch, the sticky bucket changes. Over time, the records are spread out evenly among all the buckets.
+Sticky Bucketing is the default bucketing strategy for Log Tables. This is quite important because Log Tables uses Apache Arrow as the underling data format which is efficient for large batches.</p>
+<p><strong>Usage</strong>: setting <code>&#x27;client.writer.bucket.no-key-assigner&#x27;=&#x27;sticky&#x27;</code> property for the table to enable this strategy. PrimaryKey Tables do not support this strategy.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="round-robin-bucketing">Round-Robin Bucketing<a href="#round-robin-bucketing" class="hash-link" aria-label="Direct link to Round-Robin Bucketing" title="Direct link to Round-Robin Bucketing">​</a></h2>
+<p><strong>Round-Robin Bucketing</strong> is a simple strategy that randomly selects a bucket for each record before writing it in. This strategy is suitable for scenarios where the data distribution is relatively uniform and the data is not skewed.</p>
+<p><strong>Usage</strong>: setting <code>&#x27;client.writer.bucket.no-key-assigner&#x27;=&#x27;round_robin&#x27;</code> property for the table to enable this strategy. PrimaryKey Tables do not support this strategy.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/table-design/data-distribution/bucketing.md" target="_blank" rel="noopen [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/data-distribution/partitioning/index.html b/docs/0.5/table-design/data-distribution/partitioning/index.html
new file mode 100644
index 0000000..630d96d
--- /dev/null
+++ b/docs/0.5/table-design/data-distribution/partitioning/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/data-distribution/partitioning" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Partitioning | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="partitioned-tables">Partitioned Tables<a href="#partitioned-tables" class="hash-link" aria-label="Direct link to Partitioned Tables" title="Direct link to Partitioned Tables">​</a></h2>
+<p>In Fluss, a <strong>Partitioned Table</strong> organizes data based on one or more partition keys, providing a way to improve query performance and manageability for large datasets. Partitions allow the system to divide data into distinct segments, each corresponding to specific values of the partition keys.</p>
+<p>For partitioned tables, Fluss supports auto partitioning creation. Partitions can be automatically created based on the auto partitioning rules configured at the time of table creation, and expired partitions are automatically removed, ensuring data not expanding unlimited.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="key-benefits-of-partitioned-tables">Key Benefits of Partitioned Tables<a href="#key-benefits-of-partitioned-tables" class="hash-link" aria-label="Direct link to Key Benefits of Partitioned Tables" title="Direct link to Key Benefits of Partitioned Tables">​</a></h3>
+<ul>
+<li><strong>Improved Query Performance:</strong> By narrowing down the query scope to specific partitions, the system reads fewer data, reducing query execution time.</li>
+<li><strong>Data Organization:</strong> Partitions help in logically organizing data, making it easier to manage and query.</li>
+<li><strong>Scalability:</strong> Partitioning large datasets distributes the data across smaller, manageable chunks, improving scalability.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="restrictions">Restrictions<a href="#restrictions" class="hash-link" aria-label="Direct link to Restrictions" title="Direct link to Restrictions">​</a></h2>
+<ul>
+<li>Only one partition key is supported, and the type of the partition key must be STRING.</li>
+<li>If the table is a primary key table, the partition key must be a subset of the primary key.</li>
+<li>Auto-partitioning rules can only be configured at the time of creating the partitioned table; modifying the auto-partitioning rules after table creation is not supported.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="auto-partitioning-options">Auto Partitioning Options<a href="#auto-partitioning-options" class="hash-link" aria-label="Direct link to Auto Partitioning Options" title="Direct link to Auto Partitioning Options">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h3>
+<p>The auto-partitioning rules are configured through table options. The following example demonstrates creating a table named <code>site_access</code> that supports automatic partitioning using Flink SQL.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<p>In this case, when automatic partitioning occurs (Fluss will periodically operate on all tables in the background), four partitions are pre-created with a partition granularity of YEAR, retaining two historical partitions. The time zone is set to Asia/Shanghai.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="options">Options<a href="#options" class="hash-link" aria-label="Direct link to Options" title="Direct link to Options">​</a></h3>
+<table><thead><tr><th>Option</th><th>Type</th><th>Required</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>table.auto-partition.enabled</td><td>Boolean</td><td>no</td><td>false</td><td>Whether enable auto partition for the table. Disable by default. When auto partition is enabled, the partitions of the table will be created automatically.</td></tr><tr><td>table.auto-partition.time-unit</td><td>ENUM</td><td>no</td><td>(none)</td><td>The time granularity for auto create [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partition-generation-rules">Partition Generation Rules<a href="#partition-generation-rules" class="hash-link" aria-label="Direct link to Partition Generation Rules" title="Direct link to Partition Generation Rules">​</a></h3>
+<p>The time unit for the automatic partition table <code>auto-partition.time-unit</code> can take values of HOUR, DAY, MONTH, QUARTER, or YEAR. Automatic partitioning will use the following format to create partitions.</p>
+<table><thead><tr><th>Time Unit</th><th>Partition Format</th><th>Example</th></tr></thead><tbody><tr><td>HOUR</td><td>yyyyMMddHH</td><td>2024091922</td></tr><tr><td>DAY</td><td>yyyyMMdd</td><td>20240919</td></tr><tr><td>MONTH</td><td>yyyyMM</td><td>202409</td></tr><tr><td>QUARTER</td><td>yyyyQ</td><td>20241</td></tr><tr><td>YEAR</td><td>yyyy</td><td>2024</td></tr></tbody></table>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-cluster-configuration">Fluss Cluster Configuration<a href="#fluss-cluster-configuration" class="hash-link" aria-label="Direct link to Fluss Cluster Configuration" title="Direct link to Fluss Cluster Configuration">​</a></h3>
+<p>Below are the configuration items related to Fluss cluster and automatic partitioning.</p>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>auto-partition.check.interval</td><td>Duration</td><td>10 minutes</td><td>The interval of auto partition check. The time interval for automatic partition checking is set to 10 minutes by default, meaning that it checks the table partition status every 10 minutes to see if it meets the automatic partitioning criteria. If it does not meet the criteria, partitions will be automatica [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/data-distribution/ttl/index.html b/docs/0.5/table-design/data-distribution/ttl/index.html
new file mode 100644
index 0000000..d335b68
--- /dev/null
+++ b/docs/0.5/table-design/data-distribution/ttl/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/data-distribution/ttl" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">TTL | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/0.5/t [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss supports TTL for data by setting the TTL attribute for tables with <code>&#x27;table.log.ttl&#x27; = &#x27;&lt;duration&gt;&#x27;</code> (default is 7 days). Fluss can periodically and automatically check for and clean up expired data in the table.</p>
+<p>For log tables, this attribute indicates the expiration time of the log table data.
+For primary key tables, this attribute indicates the expiration time of their binlog and does not represent the expiration time of the primary key table data. If you also want the data in the primary key table to expire automatically, please use <a href="/docs/0.5/table-design/data-distribution/partitioning/">auto partitioning</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://gi [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/data-types/index.html b/docs/0.5/table-design/data-types/index.html
new file mode 100644
index 0000000..5b63daf
--- /dev/null
+++ b/docs/0.5/table-design/data-types/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/data-types" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Data Types | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/doc [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss has a rich set of native data types available to users. All the data types of Fluss are as follows:</p>
+<table><thead><tr><th>DataType</th><th>Description</th></tr></thead><tbody><tr><td>BOOLEAN</td><td>A boolean with a (possibly) three-valued logic of TRUE, FALSE, UNKNOWN.</td></tr><tr><td>TINYINT</td><td>A 1-byte signed integer with values from -128 to 127.</td></tr><tr><td>SMALLINT</td><td>A 2-byte signed integer with values from -32,768 to 32,767.</td></tr><tr><td>INT</td><td>A 4-byte signed integer with values from -2,147,483,648 to 2,147,483,647.</td></tr><tr><td>BIGINT</td><td>An 8- [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/overview/index.html b/docs/0.5/table-design/overview/index.html
new file mode 100644
index 0000000..19f616a
--- /dev/null
+++ b/docs/0.5/table-design/overview/index.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Table Overview | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="database">Database<a href="#database" class="hash-link" aria-label="Direct link to Database" title="Direct link to Database">​</a></h2>
+<p>A Database is a collection of Table objects. You can create/delete databases or create/modify/delete tables under a database.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="table">Table<a href="#table" class="hash-link" aria-label="Direct link to Table" title="Direct link to Table">​</a></h2>
+<p>In Fluss, a Table is the fundamental unit of user data storage, organized into rows and columns. Tables are stored within specific databases, adhering to a hierarchical structure (database -&gt; table).</p>
+<p>Tables are classified into two types based on the presence of a primary key:</p>
+<ul>
+<li><strong>Log Tables:</strong>
+<ul>
+<li>Designed for append-only scenarios.</li>
+<li>Support only INSERT operations.</li>
+</ul>
+</li>
+<li><strong>PrimaryKey Tables:</strong>
+<ul>
+<li>Used for updating and managing data in business databases.</li>
+<li>Support INSERT, UPDATE, and DELETE operations based on the defined primary key.</li>
+</ul>
+</li>
+</ul>
+<p>A Table becomes a <a href="/docs/0.5/table-design/data-distribution/partitioning/">Partitioned Table</a> when a partition column is defined. Data with the same partition value is stored in the same partition. Partition columns can be applied to both Log Tables and PrimaryKey Tables, but with specific considerations:</p>
+<ul>
+<li><strong>For Log Tables</strong>, partitioning is commonly used for log data, typically based on date columns, to facilitate data separation and cleaning.</li>
+<li><strong>For PrimaryKey Tables</strong>, the partition column must be a subset of the primary key to ensure uniqueness.</li>
+</ul>
+<p>This design ensures efficient data organization, flexibility in handling different use cases, and adherence to data integrity constraints.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="table-data-organization">Table Data Organization<a href="#table-data-organization" class="hash-link" aria-label="Direct link to Table Data Organization" title="Direct link to Table Data Organization">​</a></h2>
+<p><img decoding="async" loading="lazy" alt="Table Data Organization" src="/assets/images/data_organization-c63fd910ab4f86359e60234f855bbb74.png" width="2104" height="1381" class="img_ev3q"></p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partition">Partition<a href="#partition" class="hash-link" aria-label="Direct link to Partition" title="Direct link to Partition">​</a></h3>
+<p>A <strong>partition</strong> is a logical division of a table&#x27;s data into smaller, more manageable subsets based on the values of one or more specified columns, known as partition columns.
+Each unique value (or combination of values) in the partition column(s) defines a distinct partition.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="bucket">Bucket<a href="#bucket" class="hash-link" aria-label="Direct link to Bucket" title="Direct link to Bucket">​</a></h3>
+<p>A <strong>bucket</strong> horizontally divides the data of a table/partition into <code>N</code> buckets according to the bucketing policy.
+The number of buckets <code>N</code> can be configured per table. A bucket is the smallest unit of data migration and backup.
+The data of a bucket consists of a LogTablet and a (optional) KvTablet.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="logtablet">LogTablet<a href="#logtablet" class="hash-link" aria-label="Direct link to LogTablet" title="Direct link to LogTablet">​</a></h3>
+<p>A <strong>LogTablet</strong> needs to be generated for each bucket of Log and PrimaryKey tables.
+For Log Tables, the LogTablet is both the primary table data and the log data. For PrimaryKey tables, the LogTablet acts
+as the log data for the primary table data.</p>
+<ul>
+<li><strong>Segment:</strong> The smallest unit of log storage in the <strong>LogTablet</strong>. A segment consists of an <strong>.index</strong> file and a <strong>.log</strong> data file.</li>
+<li><strong>.index:</strong> An <code>offset sparse index</code> that stores the mappings between the physical byte address in the message relative offset -&gt; .log file.</li>
+<li><strong>.log:</strong> Compact arrangement of log data.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="kvtablet">KvTablet<a href="#kvtablet" class="hash-link" aria-label="Direct link to KvTablet" title="Direct link to KvTablet">​</a></h3>
+<p>Each bucket of the PrimaryKey table needs to generate a KvTablet. Underlying, each KvTablet corresponds to an embedded RocksDB instance. RocksDB is an LSM (log structured merge) engine which helps KvTablet supports high-performance updates and lookup query.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/table-design/overview.md" ta [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/table-types/log-table/index.html b/docs/0.5/table-design/table-types/log-table/index.html
new file mode 100644
index 0000000..c73a894
--- /dev/null
+++ b/docs/0.5/table-design/table-types/log-table/index.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/table-types/log-table" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Log Table | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="basic-concept">Basic Concept<a href="#basic-concept" class="hash-link" aria-label="Direct link to Basic Concept" title="Direct link to Basic Concept">​</a></h2>
+<p>Log Table is a type of table in Fluss that is used to store data in the order in which it was written. Log Table only supports append records, and doesn&#x27;t support Update/Delete operations.
+Usually, Log Table is used to store logs in very high-throughput, like the typical use cases of Apache Kafka.</p>
+<p>Log Table is created by not specifying the <code>PRIMARY KEY</code> clause in the <code>CREATE TABLE</code> statement. For example, the following Flink SQL statement will create a log table with 3 buckets.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="bucket-assigning">Bucket Assigning<a href="#bucket-assigning" class="hash-link" aria-label="Direct link to Bucket Assigning" title="Direct link to Bucket Assigning">​</a></h2>
+<p>Bucketing is the fundamental unit of parallelism and scalability in Fluss.  A single table in Fluss is divided into multiple buckets. A bucket is the smallest storage unit for reads and writes. See more details about <a href="/docs/0.5/table-design/data-distribution/bucketing/">Bucketing</a>.</p>
+<p>When writing records into log table, Fluss will assign each record to a specific bucket based on the bucket assigning strategy. There are 3 strategies for bucket assigning in Fluss:</p>
+<ol>
+<li><strong>Sticky Bucket Strategy</strong>: As the default strategy, randomly select a bucket and consistently write into that bucket until a record batch is full. Sets <code>client.writer.bucket.no-key-assigner=sticky</code> to the table property to enable this strategy.</li>
+<li><strong>Round-Robin Strategy</strong>: Select a bucket in round-robin for each record before writing it in. Sets <code>client.writer.bucket.no-key-assigner=round_robin</code> to the table property to enable this strategy.</li>
+<li><strong>Hash-based Bucketing</strong>: If <code>bucket.key</code> property is set in the table property, Fluss will determine to assign records to bucket based on the hash value of the specified bucket keys, and the property <code>client.writer.bucket.no-key-assigner</code> will be ignored. For example, setting <code>&#x27;bucket.key&#x27; = &#x27;c1,c2&#x27;</code> will assign buckets based on the values of columns <code>c1</code> and <code>c2</code>. Different column names should b [...]
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-consumption">Data Consumption<a href="#data-consumption" class="hash-link" aria-label="Direct link to Data Consumption" title="Direct link to Data Consumption">​</a></h2>
+<p>Log Tables in Fluss allow real-time data consumption, preserving the order of data within each bucket as it was written to the Fluss table. Specifically:</p>
+<ul>
+<li>For two data records from the same table and the same bucket, the data that was written to the Fluss table first will be consumed first.</li>
+<li>For two data records from the same partition but different buckets, the consumption order is not guaranteed because different buckets may be processed concurrently by different data consumption jobs.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="log-tiering">Log Tiering<a href="#log-tiering" class="hash-link" aria-label="Direct link to Log Tiering" title="Direct link to Log Tiering">​</a></h2>
+<p>Log Table supports tiering data to different storage tiers. See more details about <a href="/docs/0.5/maintenance/tiered-storage/remote-storage/">Remote Log</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/table-design/table-types/log-table.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="cur [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.5/table-design/table-types/pk-table/index.html b/docs/0.5/table-design/table-types/pk-table/index.html
new file mode 100644
index 0000000..670e5c2
--- /dev/null
+++ b/docs/0.5/table-design/table-types/pk-table/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.5 docs-doc-page docs-doc-id-table-design/table-types/pk-table" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">PrimaryKey Table | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.o [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="basic-concept">Basic Concept<a href="#basic-concept" class="hash-link" aria-label="Direct link to Basic Concept" title="Direct link to Basic Concept">​</a></h2>
+<p>PrimaryKey Table in Fluss ensure the uniqueness of the specified primary key and supports <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> operations.</p>
+<p>A PrimaryKey Table is created by specifying a <code>PRIMARY KEY</code> clause in the <code>CREATE TABLE</code> statement. For example, the following Flink SQL statement creates a PrimaryKey Table with <code>shop_id</code> and <code>user_id</code> as the primary key and distributes the data into 4 buckets:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>In Fluss primary key table, each row of data has a unique primary key.
+If multiple entries with the same primary key are written to the Fluss primary key table, only the last entry will be retained.</p>
+<p>For <a href="/docs/0.5/table-design/data-distribution/partitioning/">Partitioned PrimaryKey Table</a>, the primary key must contain the partition key.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="bucket-assigning">Bucket Assigning<a href="#bucket-assigning" class="hash-link" aria-label="Direct link to Bucket Assigning" title="Direct link to Bucket Assigning">​</a></h2>
+<p>For primary key tables, Fluss always determines which bucket the data belongs to based on the hash value of the primary key for each record.
+Data with the same hash value will be distributed to the same bucket.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="partial-update">Partial Update<a href="#partial-update" class="hash-link" aria-label="Direct link to Partial Update" title="Direct link to Partial Update">​</a></h2>
+<p>For primary key tables, Fluss supports partial column updates, allowing you to write only a subset of columns to incrementally update the data and ultimately achieve complete data. Note that the columns being written must include the primary key column.</p>
+<p>For example, consider the following Fluss primary key table:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>Assuming that at the beginning, only the <code>k</code> and <code>v1</code> columns are written with the data <code>+I(1, 2.0)</code>, <code>+I(2, 3.0)</code>, the data in T is as follows:</p>
+<table><thead><tr><th>k</th><th>v1</th><th>v2</th></tr></thead><tbody><tr><td>1</td><td>2.0</td><td>null</td></tr><tr><td>2</td><td>3.0</td><td>null</td></tr></tbody></table>
+<p>Then write to the <code>k</code> and <code>v2</code> columns with the data <code>+I(1, &#x27;t1&#x27;)</code>, <code>+I(2, &#x27;t2&#x27;)</code>, resulting in the data in T as follows:</p>
+<table><thead><tr><th>k</th><th>v1</th><th>v2</th></tr></thead><tbody><tr><td>1</td><td>2.0</td><td>t1</td></tr><tr><td>2</td><td>3.0</td><td>t2</td></tr></tbody></table>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-queries">Data Queries<a href="#data-queries" class="hash-link" aria-label="Direct link to Data Queries" title="Direct link to Data Queries">​</a></h2>
+<p>For primary key tables, Fluss supports querying data directly based on the key. Please refer to the <a href="/docs/0.5/engine-flink/reads/">Flink Reads</a> for detailed instructions.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="changelog-generation">Changelog Generation<a href="#changelog-generation" class="hash-link" aria-label="Direct link to Changelog Generation" title="Direct link to Changelog Generation">​</a></h2>
+<p>Fluss will capture the changes when inserting, updating, deleting records on the primary-key table, which is known as the changelog. Downstream consumers can directly consume the changelog to obtain the changes in the table. For example, consider the following primary key table in Fluss:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>If the data written to the primary-key table is sequentially <code>+I(1, 2.0, &#x27;apple&#x27;)</code>, <code>+I(1, 4.0, &#x27;banana&#x27;)</code>, <code>-D(1, 4.0, &#x27;banana&#x27;)</code>, then the following change data will be generated.</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">+I(1, 2.0, &#x27;apple&#x27;)</span><br></span><span class="token-line" style="color:#9CDCF [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-consumption">Data Consumption<a href="#data-consumption" class="hash-link" aria-label="Direct link to Data Consumption" title="Direct link to Data Consumption">​</a></h2>
+<p>For a primary key table, the default consumption method is a full snapshot followed by incremental data. First, the snapshot data of the table is consumed, followed by the binlog data of the table.</p>
+<p>It is also possible to only consume the binlog data of the table. For more details, please refer to the <a href="/docs/0.5/engine-flink/reads/">Flink Reads</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/table-design/table-types/pk-table.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="curren [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/concepts/architecture/index.html b/docs/0.6/concepts/architecture/index.html
new file mode 100644
index 0000000..57bbc8c
--- /dev/null
+++ b/docs/0.6/concepts/architecture/index.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-concepts/architecture" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Architecture | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>A Fluss cluster consists of two main processes: the <strong>CoordinatorServer</strong> and the <strong>TabletServer</strong>.</p>
+<p><img decoding="async" loading="lazy" alt="Fluss Architecture" src="/assets/images/architecture-b318beb94d717f94d6fe64b6303e79ab.png" width="6714" height="4904" class="img_ev3q"></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="coordinatorserver">CoordinatorServer<a href="#coordinatorserver" class="hash-link" aria-label="Direct link to CoordinatorServer" title="Direct link to CoordinatorServer">​</a></h2>
+<p>The <strong>CoordinatorServer</strong> serves as the central control and management component of the cluster. It is responsible for maintaining metadata, managing tablet allocation, listing nodes, and handling permissions.</p>
+<p>Additionally, it coordinates critical operations such as:</p>
+<ul>
+<li>Rebalancing data during node scaling (upscaling or downscaling).</li>
+<li>Managing data migration and service node switching in the event of node failures.</li>
+<li>Overseeing table management tasks, including creating or deleting tables and updating bucket counts.</li>
+</ul>
+<p>As the <strong>brain</strong> of the cluster, the <strong>Coordinator Server</strong> ensures efficient cluster operation and seamless management of resources.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="tabletserver">TabletServer<a href="#tabletserver" class="hash-link" aria-label="Direct link to TabletServer" title="Direct link to TabletServer">​</a></h2>
+<p>The <strong>TabletServer</strong> is responsible for data storage, persistence, and providing I/O services directly to users. It comprises two key components: <strong>LogStore</strong> and <strong>KvStore</strong>.</p>
+<ul>
+<li>For <strong>PrimaryKey Tables</strong> which support updates, both <strong>LogStore</strong> and <strong>KvStore</strong> are activated. The KvStore is used to support updates and point lookup efficiently. LogStore is used to store the changelogs of the table.</li>
+<li>For <strong>Log Tables</strong> which only supports appends, only the <strong>LogStore</strong> is activated, optimizing performance for write-heavy workloads.</li>
+</ul>
+<p>This architecture ensures the <strong>TabletServer</strong> delivers tailored data handling capabilities based on table types.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="logstore">LogStore<a href="#logstore" class="hash-link" aria-label="Direct link to LogStore" title="Direct link to LogStore">​</a></h3>
+<p>The <strong>LogStore</strong> is designed to store log data, functioning similarly to a database binlog.
+Messages can only be appended, not modified, ensuring data integrity.
+Its primary purpose is to enable low-latency streaming reads and to serve as the write-ahead log (WAL) for restoring the <strong>KvStore</strong>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="kvstore">KvStore<a href="#kvstore" class="hash-link" aria-label="Direct link to KvStore" title="Direct link to KvStore">​</a></h3>
+<p>The <strong>KvStore</strong> is used to store table data, functioning similarly to database tables. It supports data updates and deletions, enabling efficient querying and table management. Additionally, it generates comprehensive changelogs to track data modifications.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tablet--bucket">Tablet / Bucket<a href="#tablet--bucket" class="hash-link" aria-label="Direct link to Tablet / Bucket" title="Direct link to Tablet / Bucket">​</a></h3>
+<p>Table data is divided into multiple buckets based on the defined bucketing policy.</p>
+<p>Data for the <strong>LogStore</strong> and <strong>KvStore</strong> is stored within tablets. Each tablet consists of a <strong>LogTablet</strong> and, optionally, a <strong>KvTablet</strong>, depending on whether the table supports updates.
+Both <strong>LogStore</strong> and <strong>KvStore</strong> adhere to the same bucket-splitting and tablet allocation policies. As a result, <strong>LogTablets</strong> and <strong>KvTablets</strong> with the same <code>tablet_id</code> are always allocated to the same <strong>TabletServer</strong> for efficient data management.</p>
+<p>The <strong>LogTablet</strong> supports multiple replicas based on the table&#x27;s configured replication factor, ensuring high availability and fault tolerance. <strong>Currently, replication is not supported for KvTablets</strong>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">Zookeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to Zookeeper" title="Direct link to Zookeeper">​</a></h2>
+<p>Fluss currently utilizes <strong>ZooKeeper</strong> for cluster coordination, metadata storage, and cluster configuration management.
+In upcoming releases, <strong>ZooKeeper will be replaced</strong> by <strong>KvStore</strong> for metadata storage and <strong>Raft</strong> for cluster coordination and ensuring consistency. This transition aims to streamline operations and enhance system reliability. See the <a href="/roadmap/">Roadmap</a> for more details.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="remote-storage">Remote Storage<a href="#remote-storage" class="hash-link" aria-label="Direct link to Remote Storage" title="Direct link to Remote Storage">​</a></h2>
+<p><strong>Remote Storage</strong> serves two primary purposes:</p>
+<ul>
+<li><strong>Hierarchical Storage for LogStores:</strong> By offloading LogStore data, it reduces storage costs and accelerates scaling operations.</li>
+<li><strong>Persistent Storage for KvStores:</strong> It ensures durable storage for KvStore data and collaborates with LogStore to enable fault recovery.</li>
+</ul>
+<p>Additionally, <strong>Remote Storage</strong> allows clients to perform bulk read operations on Log and Kv data, enhancing data analysis efficiency and reduce the overhead on Fluss servers. In the future, it will also support bulk write operations, optimizing data import workflows for greater scalability and performance.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="client">Client<a href="#client" class="hash-link" aria-label="Direct link to Client" title="Direct link to Client">​</a></h2>
+<p>Fluss clients/sdks support streaming reads/writes, batch read/writes, DDL and point queries. Currently, the main implementation of client is Flink Connector. Users can use Flink SQL to easily operate Fluss tables and data.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/concepts/architecture.md" target="_blank" rel="noopener norefer [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/engine-flink/ddl/index.html b/docs/0.6/engine-flink/ddl/index.html
new file mode 100644
index 0000000..c296c6c
--- /dev/null
+++ b/docs/0.6/engine-flink/ddl/index.html
@@ -0,0 +1,95 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-engine-flink/ddl" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink DDL | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-catalog">Create Catalog<a href="#create-catalog" class="hash-link" aria-label="Direct link to Create Catalog" title="Direct link to Create Catalog">​</a></h2>
+<p>Fluss supports creating and managing tables through the Fluss Catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<p>The following properties can be set if using the Fluss catalog:</p>
+<table><thead><tr><th>Option</th><th>Required</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>type</td><td>required</td><td>(none)</td><td>Catalog type, must to be &#x27;fluss&#x27; here.</td></tr><tr><td>bootstrap.servers</td><td>required</td><td>(none)</td><td>Comma separated list of Fluss servers.</td></tr><tr><td>default-database</td><td>optional</td><td>fluss</td><td>The default database to use when switching to this catalog.</td></tr></tbody></table>
+<p>The following introduced statements assuming the current catalog is switched to the Fluss catalog using <code>USE CATALOG &lt;catalog_name&gt;</code> statement.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-database">Create Database<a href="#create-database" class="hash-link" aria-label="Direct link to Create Database" title="Direct link to Create Database">​</a></h2>
+<p>By default, FlussCatalog will use the <code>fluss</code> database in Flink. Using the following example to create a separate database in order to avoid creating tables under the default <code>fluss</code> database:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="drop-database">Drop Database<a href="#drop-database" class="hash-link" aria-label="Direct link to Drop Database" title="Direct link to Drop Database">​</a></h2>
+<p>To delete a database, this will drop all the tables in the database as well:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Flink do [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- drop the [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-table">Create Table<a href="#create-table" class="hash-link" aria-label="Direct link to Create Table" title="Direct link to Create Table">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="primarykey-table">PrimaryKey Table<a href="#primarykey-table" class="hash-link" aria-label="Direct link to PrimaryKey Table" title="Direct link to PrimaryKey Table">​</a></h3>
+<p>The following SQL statement will create a <a href="/docs/0.6/table-design/table-types/pk-table/">PrimaryKey Table</a> with a primary key consisting of shop_id and user_id.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="log-table">Log Table<a href="#log-table" class="hash-link" aria-label="Direct link to Log Table" title="Direct link to Log Table">​</a></h3>
+<p>The following SQL statement creates a <a href="/docs/0.6/table-design/table-types/log-table/">Log Table</a> by not specifying primary key clause.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="partitioned-primarykeylog-table">Partitioned (PrimaryKey/Log) Table<a href="#partitioned-primarykeylog-table" class="hash-link" aria-label="Direct link to Partitioned (PrimaryKey/Log) Table" title="Direct link to Partitioned (PrimaryKey/Log) Table">​</a></h3>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<li>Currently, Fluss only supports one partitioned field with <code>STRING</code> type</li>
+<li>For the Partitioned PrimaryKey Table, the partitioned field (<code>dt</code> in this case) must be a subset of the primary key (<code>dt, shop_id, user_id</code> in this case)</li>
+</ol></div></div>
+<p>The following SQL statement creates a Partitioned PrimaryKey Table in Fluss.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>The following SQL statement creates a Partitioned Log Table in Fluss.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+before you write/read data into this partition.</p></div></div>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="auto-partitioned-primarykeylog-table">Auto partitioned (PrimaryKey/Log) table<a href="#auto-partitioned-primarykeylog-table" class="hash-link" aria-label="Direct link to Auto partitioned (PrimaryKey/Log) table" title="Direct link to Auto partitioned (PrimaryKey/Log) table">​</a></h4>
+<p>Fluss also support creat Auto Partitioned (PrimaryKey/Log) Table. The following SQL statement creates an Auto Partitioned PrimaryKey Table in Fluss.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>The following SQL statement creates an Auto Partitioned Log Table in Fluss.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>For more details about Auto Partitioned (PrimaryKey/Log) Table, refer to <a href="/docs/0.6/table-design/data-distribution/partitioning/#auto-partitioning-options">Auto Partitioning Options</a>.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="options">Options<a href="#options" class="hash-link" aria-label="Direct link to Options" title="Direct link to Options">​</a></h3>
+<p>The supported option in <code>WITH</code> parameters when creating a table are listed in <a href="/docs/0.6/engine-flink/options/">Connector Options</a> page.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-table-like">Create Table Like<a href="#create-table-like" class="hash-link" aria-label="Direct link to Create Table Like" title="Direct link to Create Table Like">​</a></h2>
+<p>To create a table with the same schema, partitioning, and table properties as another table, use <code>CREATE TABLE LIKE</code>.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- there is [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- creates  [...]
+<p>For more details, refer to the <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/create/#like" target="_blank" rel="noopener noreferrer">Flink CREATE TABLE</a> documentation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="drop-table">Drop Table<a href="#drop-table" class="hash-link" aria-label="Direct link to Drop Table" title="Direct link to Drop Table">​</a></h2>
+<p>To delete a table, run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">DROP</span> [...]
+<p>This will entirely remove all the data of the table in the Fluss cluster.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="show-partitions">Show Partitions<a href="#show-partitions" class="hash-link" aria-label="Direct link to Show Partitions" title="Direct link to Show Partitions">​</a></h2>
+<p>To show all the partitions of a partitioned table, run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SHOW</span> [...]
+<p>For more details, refer to the <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/show/#show-partitions" target="_blank" rel="noopener noreferrer">Flink SHOW PARTITIONS</a> documentation.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="add-partition">Add Partition<a href="#add-partition" class="hash-link" aria-label="Direct link to Add Partition" title="Direct link to Add Partition">​</a></h2>
+<p>Fluss support manually add partitions to an exists partitioned table by Fluss Catalog. If the specified partition
+not exists, Fluss will create the partition. If the specified partition already exists, Fluss will ignore the request
+or throw an exception.</p>
+<p>To add partitions, run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">ALTER</span [...]
+<p>For more details, refer to the <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/alter/#add" target="_blank" rel="noopener noreferrer">Flink ALTER TABLE(ADD)</a> documentation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="drop-partition">Drop Partition<a href="#drop-partition" class="hash-link" aria-label="Direct link to Drop Partition" title="Direct link to Drop Partition">​</a></h2>
+<p>Fluss also support manually drop partitions from an exists partitioned table by Fluss Catalog. If the specified partition
+not exists, Fluss will ignore the request or throw an exception.</p>
+<p>To drop partitions, run:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">ALTER</span [...]
+<p>For more details, refer to the <a href="https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql/alter/#drop" target="_blank" rel="noopener noreferrer">Flink ALTER TABLE(DROP)</a> documentation.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/engine-flink/ddl.md" target="_blank" rel="noopener noreferrer" class=" [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/engine-flink/getting-started/index.html b/docs/0.6/engine-flink/getting-started/index.html
new file mode 100644
index 0000000..6df8de4
--- /dev/null
+++ b/docs/0.6/engine-flink/getting-started/index.html
@@ -0,0 +1,96 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-engine-flink/getting-started" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Getting Started with Flink Engine | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="quick-start">Quick Start<a href="#quick-start" class="hash-link" aria-label="Direct link to Quick Start" title="Direct link to Quick Start">​</a></h2>
+<p>For a quick introduction to running Flink, refer to the <a href="/docs/0.6/quickstart/flink/">Quick Start</a> guide.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="support-flink-versions">Support Flink Versions<a href="#support-flink-versions" class="hash-link" aria-label="Direct link to Support Flink Versions" title="Direct link to Support Flink Versions">​</a></h2>
+<table><thead><tr><th>Fluss Connector Versions</th><th>Supported Flink Versions</th></tr></thead><tbody><tr><td>0.6</td><td>1.18, 1.19, 1.20</td></tr></tbody></table>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="feature-support">Feature Support<a href="#feature-support" class="hash-link" aria-label="Direct link to Feature Support" title="Direct link to Feature Support">​</a></h2>
+<p>Fluss only supports Apache Flink&#x27;s Table API.</p>
+<table><thead><tr><th>Feature support</th><th>Flink</th><th>Notes</th></tr></thead><tbody><tr><td><a href="/docs/0.6/engine-flink/ddl/#create-catalog">SQL create catalog</a></td><td>✔️</td><td></td></tr><tr><td><a href="/docs/0.6/engine-flink/ddl/#create-database">SQl create database</a></td><td>✔️</td><td></td></tr><tr><td><a href="/docs/0.6/engine-flink/ddl/#drop-database">SQL drop database</a></td><td>✔️</td><td></td></tr><tr><td><a href="/docs/0.6/engine-flink/ddl/#create-table">SQL  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="preparation-when-using-flink-sql-client">Preparation when using Flink SQL Client<a href="#preparation-when-using-flink-sql-client" class="hash-link" aria-label="Direct link to Preparation when using Flink SQL Client" title="Direct link to Preparation when using Flink SQL Client">​</a></h2>
+<ul>
+<li><strong>Download Flink</strong></li>
+</ul>
+<p>Flink runs on all UNIX-like environments, i.e. Linux, Mac OS X, and Cygwin (for Windows).
+If you haven’t downloaded Flink, you can download <a href="https://flink.apache.org/downloads.html" target="_blank" rel="noopener noreferrer">the binary release</a> of Flink, then extract the archive with the following command.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span cla [...]
+<ul>
+<li><strong>Copy Fluss Connector Jar</strong></li>
+</ul>
+<p>Download <a href="/downloads/#fluss-connector">Fluss connector jar</a> and copy to the lib directory of your Flink home.</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">cp</span><span class="token plain"> fluss-connector-f [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+you should download the corresponding <a href="/downloads/#filesystem-jars">Fluss filesystem jar</a> and also copy it to the lib directory of your Flink home.</p></div></div>
+<ul>
+<li><strong>Start a local cluster</strong></li>
+</ul>
+<p>To start a local cluster, run the bash script that comes with Flink:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)">&lt;</span><span class="token plain">FLINK_HOME</span [...]
+<p>You should be able to navigate to the web UI at <a href="http://localhost:8081/" target="_blank" rel="noopener noreferrer">localhost:8081</a> to view the Flink dashboard and see that the cluster is up and running. You can also check its status with the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">ps</span><span class="token plain"> aux </span><span  [...]
+<ul>
+<li><strong>Start a sql client</strong></li>
+</ul>
+<p>To quickly stop the cluster and all running components, you can use the provided script:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)">&lt;</span><span class="token plain">FLINK_HOME</span [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="creating-a-catalog">Creating a Catalog<a href="#creating-a-catalog" class="hash-link" aria-label="Direct link to Creating a Catalog" title="Direct link to Creating a Catalog">​</a></h2>
+<p>You can use the following SQL statement to create a catalog.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<li>The <code>bootstrap.servers</code> means the Fluss server address. Before you config the <code>bootstrap.servers</code>,
+you should start the Fluss server first. See <a href="/docs/0.6/install-deploy/overview/#how-to-deploy-fluss">Deploying Fluss</a>
+for how to build a Fluss cluster.
+Here, it is assumed that there is a Fluss cluster running on your local machine and the CoordinatorServer port is 9123.</li>
+<li>The<code> bootstrap.servers</code> configuration is used to discover all nodes within the Fluss cluster. It can be set with one or more (up to three) Fluss server addresses (either CoordinatorServer or TabletServer) separated by commas.</li>
+</ol></div></div>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="creating-a-table">Creating a Table<a href="#creating-a-table" class="hash-link" aria-label="Direct link to Creating a Table" title="Direct link to Creating a Table">​</a></h2>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-writing">Data Writing<a href="#data-writing" class="hash-link" aria-label="Direct link to Data Writing" title="Direct link to Data Writing">​</a></h2>
+<p>To append new data to a table, you can use <code>INSERT INTO</code> in batch mode or streaming mode:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- use tabl [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<p>To update data record with the primary key (1234, 1234) in a Flink streaming job, use the UPDATE statement as follows:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- should r [...]
+<p>To delete the data record with primary key <code>(12345, 12345)</code>, use <code>DELETE FROM</code>:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- should r [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-reading">Data Reading<a href="#data-reading" class="hash-link" aria-label="Direct link to Data Reading" title="Direct link to Data Reading">​</a></h2>
+<p>To retrieve data with the primary key <code>(1234, 1234)</code>, you can perform a point query by applying a filter on the primary key:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- should r [...]
+<p>To preview a subset of the data in a table, you can use a <code>LIMIT</code> clause.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- should r [...]
+<p>Fluss supports processing incremental data reading in flink streaming jobs:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Submit t [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- reading  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="type-conversion">Type Conversion<a href="#type-conversion" class="hash-link" aria-label="Direct link to Type Conversion" title="Direct link to Type Conversion">​</a></h2>
+<p>Fluss&#x27;s integration for Flink automatically converts between Flink and Fluss types.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="fluss---apache-flink">Fluss -&gt; Apache Flink<a href="#fluss---apache-flink" class="hash-link" aria-label="Direct link to Fluss -&gt; Apache Flink" title="Direct link to Fluss -&gt; Apache Flink">​</a></h3>
+<table><thead><tr><th>Fluss</th><th>Flink</th></tr></thead><tbody><tr><td>BOOLEAN</td><td>BOOLEAN</td></tr><tr><td>TINYINT</td><td>TINYINT</td></tr><tr><td>SMALLINT</td><td>SMALLINT</td></tr><tr><td>INT</td><td>INT</td></tr><tr><td>BIGINT</td><td>BIGINT</td></tr><tr><td>FLOAT</td><td>FLOAT</td></tr><tr><td>DOUBLE</td><td>DOUBLE</td></tr><tr><td>CHAR</td><td>CHAR</td></tr><tr><td>STRING</td><td>STRING</td></tr><tr><td>DECIMAL</td><td>DECIMAL</td></tr><tr><td>DATE</td><td>DATE</td></tr><tr [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="apache-flink---fluss">Apache Flink -&gt; Fluss<a href="#apache-flink---fluss" class="hash-link" aria-label="Direct link to Apache Flink -&gt; Fluss" title="Direct link to Apache Flink -&gt; Fluss">​</a></h3>
+<table><thead><tr><th>Flink</th><th>Fluss</th></tr></thead><tbody><tr><td>BOOLEAN</td><td>BOOLEAN</td></tr><tr><td>SMALLINT</td><td>SMALLINT</td></tr><tr><td>INT</td><td>INT</td></tr><tr><td>BIGINT</td><td>BIGINT</td></tr><tr><td>FLOAT</td><td>FLOAT</td></tr><tr><td>DOUBLE</td><td>DOUBLE</td></tr><tr><td>CHAR</td><td>CHAR</td></tr><tr><td>STRING</td><td>STRING</td></tr><tr><td>DECIMAL</td><td>DECIMAL</td></tr><tr><td>DATE</td><td>DATE</td></tr><tr><td>TIME</td><td>TIME</td></tr><tr><td>T [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/engine-flink/lookups/index.html b/docs/0.6/engine-flink/lookups/index.html
new file mode 100644
index 0000000..7b45e32
--- /dev/null
+++ b/docs/0.6/engine-flink/lookups/index.html
@@ -0,0 +1,87 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-engine-flink/lookups" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink Lookup Joins | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Flink lookup joins are important because they enable efficient, real-time enrichment of streaming data with reference data, a common requirement in many real-time analytics and processing scenarios.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookup">Lookup<a href="#lookup" class="hash-link" aria-label="Direct link to Lookup" title="Direct link to Lookup">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="instructions">Instructions<a href="#instructions" class="hash-link" aria-label="Direct link to Instructions" title="Direct link to Instructions">​</a></h3>
+<ul>
+<li>Use a primary key table as a dimension table, and the join condition must include all primary keys of the dimension table.</li>
+<li>Fluss lookup join is in asynchronous mode by default for higher throughput. You can change the mode of lookup join as synchronous mode by setting the SQL Hint <code>&#x27;lookup.async&#x27; = &#x27;false&#x27;</code>.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h3>
+<ol>
+<li>Create two tables.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<ol start="2">
+<li>Perform lookup join.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- look up  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- look up  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="examples-partitioned-table">Examples (Partitioned Table)<a href="#examples-partitioned-table" class="hash-link" aria-label="Direct link to Examples (Partitioned Table)" title="Direct link to Examples (Partitioned Table)">​</a></h3>
+<p>Continuing from the previous example, if our dimension table is a Fluss partitioned primary key table, as follows:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<p>To do a lookup join with the Fluss partitioned primary key table, we need to specify the
+primary keys (including partition key) in the join condition.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<p>For more details about Fluss partitioned table, see <a href="/docs/0.6/table-design/data-distribution/partitioning/">Partitioned Tables</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prefix-lookup">Prefix Lookup<a href="#prefix-lookup" class="hash-link" aria-label="Direct link to Prefix Lookup" title="Direct link to Prefix Lookup">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="instructions-1">Instructions<a href="#instructions-1" class="hash-link" aria-label="Direct link to Instructions" title="Direct link to Instructions">​</a></h3>
+<ul>
+<li>Use a primary key table as a dimension table, and the join condition must a prefix subset of the primary keys of the dimension table.</li>
+<li>The bucket key of Fluss dimension table need to set as the join key when creating Fluss table.</li>
+<li>Fluss prefix lookup join is in asynchronous mode by default for higher throughput. You can change the mode of prefix lookup join as synchronous mode by setting the SQL Hint <code>&#x27;lookup.async&#x27; = &#x27;false&#x27;</code>.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="examples-1">Examples<a href="#examples-1" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h3>
+<ol>
+<li>Create two tables.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- primary  [...]
+<ol start="2">
+<li>Perform prefix lookup.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- prefix l [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- prefix l [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="examples-partitioned-table-1">Examples (Partitioned Table)<a href="#examples-partitioned-table-1" class="hash-link" aria-label="Direct link to Examples (Partitioned Table)" title="Direct link to Examples (Partitioned Table)">​</a></h3>
+<p>Continuing from the previous prefix lookup example, if our dimension table is a Fluss partitioned primary key table, as follows:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- primary  [...]
+<p>To do a prefix lookup with the Fluss partitioned primary key table, the prefix lookup join key is in pattern of
+<code>a prefix subset of primary keys (excluding partition key)</code> + <code>partition key</code>.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<p>For more details about Fluss partitioned table, see <a href="/docs/0.6/table-design/data-distribution/partitioning/">Partitioned Tables</a>.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookup-options">Lookup Options<a href="#lookup-options" class="hash-link" aria-label="Direct link to Lookup Options" title="Direct link to Lookup Options">​</a></h2>
+<p>Fluss lookup join supports various configuration options. For more details, please refer to the <a href="/docs/0.6/engine-flink/options/#lookup-options">Connector Options</a> page.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/engine-flink/lookups.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/engine-flink/options/index.html b/docs/0.6/engine-flink/options/index.html
new file mode 100644
index 0000000..787e26e
--- /dev/null
+++ b/docs/0.6/engine-flink/options/index.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-engine-flink/options" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Connector Options | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>The following table lists the options that can be used to configure the Fluss table in Flink, including the storage format, the read/write behaviors.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-configure-options">How to Configure Options<a href="#how-to-configure-options" class="hash-link" aria-label="Direct link to How to Configure Options" title="Direct link to How to Configure Options">​</a></h2>
+<p>You can configure the Fluss table options in Flink SQL DDL statements. For example, the following SQL statement creates a Fluss table with the <code>table.log.ttl</code> set to 7 days:</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configure-options-when-creating-a-table">Configure options when creating a table<a href="#configure-options-when-creating-a-table" class="hash-link" aria-label="Direct link to Configure options when creating a table" title="Direct link to Configure options when creating a table">​</a></h3>
+<p>All the options in this page can be set when creating a table. Once a table is created, the defined options will be stored as a part of the metadata of the Fluss table. The stored options will be used when reading or writing the table.
+For example, the following SQL statement creates a Fluss table with the <code>table.log.ttl</code> set to 7 days and disables the CRC check for the log reading:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</span><span class="token plain"> </span><span class= [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="dynamically-apply-options-via-sql-hints">Dynamically apply options via SQL hints<a href="#dynamically-apply-options-via-sql-hints" class="hash-link" aria-label="Direct link to Dynamically apply options via SQL hints" title="Direct link to Dynamically apply options via SQL hints">​</a></h3>
+<p>You can dynamically apply the options via SQL hints. The dynamically applied options will not be stored as metadata of the table.
+They will only be used for the current query and will not affect other queries on the table. The dynamically applied options have a higher priority than the options stored in the metadata of the table.</p>
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<p>For example, the following SQL statements temporarily disables the CRC check for the log reading and ignores deletes for writing:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- SQL hints on source tables</span><span class="token plai [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configure-options-by-altering-table">Configure options by altering table<a href="#configure-options-by-altering-table" class="hash-link" aria-label="Direct link to Configure options by altering table" title="Direct link to Configure options by altering table">​</a></h3>
+<p>This is not supported yet, but is planned in the near future.
+For example, the following SQL statement alters the Fluss table with the <code>table.log.ttl</code> set to 7 days:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">ALTER</span><span class="token plain"> </span><span class=" [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="storage-options">Storage Options<a href="#storage-options" class="hash-link" aria-label="Direct link to Storage Options" title="Direct link to Storage Options">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>bucket.num</td><td>int</td><td>The bucket number of Fluss cluster.</td><td>The number of buckets of a Fluss table.</td></tr><tr><td>bucket.key</td><td>String</td><td>(none)</td><td>Specific the distribution policy of the Fluss table. Data will be distributed to each bucket according to the hash value of bucket-key. If you specify multiple fields, delimiter is &#x27;,&#x27;. If th [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="read-options">Read Options<a href="#read-options" class="hash-link" aria-label="Direct link to Read Options" title="Direct link to Read Options">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>scan.startup.mode</td><td>Enum</td><td>full</td><td>The scan startup mode enables you to specify the starting point for data consumption. Fluss currently supports the following <code>scan.startup.mode</code> options: <code>full</code> (default), earliest, latest, timestamp. See the <a href="/docs/0.6/engine-flink/reads/#start-reading-position">Start Reading Position</a> for more  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookup-options">Lookup Options<a href="#lookup-options" class="hash-link" aria-label="Direct link to Lookup Options" title="Direct link to Lookup Options">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>lookup.async</td><td>Boolean</td><td>true</td><td>Whether to use asynchronous lookup. Asynchronous lookup has better throughput performance than synchronous lookup.</td></tr><tr><td>lookup.cache</td><td>Enum</td><td>optional</td><td>NONE</td></tr><tr><td>lookup.max-retries</td><td>Integer</td><td>optional</td><td>3</td></tr><tr><td>lookup.partial-cache.expire-after-access</td><td [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="write-options">Write Options<a href="#write-options" class="hash-link" aria-label="Direct link to Write Options" title="Direct link to Write Options">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>sink.ignore-delete</td><td>Boolean</td><td>false</td><td>If set to true, the sink will ignore DELETE and UPDATE_BEFORE changelog events.</td></tr><tr><td>client.writer.buffer.memory-size</td><td>MemorySize</td><td>64mb</td><td>The total bytes of memory the writer can use to buffer internal rows.</td></tr><tr><td>client.writer.buffer.page-size</td><td>MemorySize</td><td>128kb</td> [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="other-options">Other Options<a href="#other-options" class="hash-link" aria-label="Direct link to Other Options" title="Direct link to Other Options">​</a></h2>
+<table><thead><tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>bootstrap.servers</td><td>List</td><td>(None)</td><td>A list of host/port pairs to use for establishing the initial connection to the Fluss cluster. The list should be in the form host1<!-- -->:port1<!-- -->,host2<!-- -->:port2<!-- -->,.... Since these servers are just used for the initial connection to discover the full cluster membership (which may change dynamically), this lis [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/engine-flink/reads/index.html b/docs/0.6/engine-flink/reads/index.html
new file mode 100644
index 0000000..132bbed
--- /dev/null
+++ b/docs/0.6/engine-flink/reads/index.html
@@ -0,0 +1,86 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-engine-flink/reads" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink Reads | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/do [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Fluss supports streaming and batch read with <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer">Apache Flink</a>&#x27;s SQL &amp; Table API. Execute the following SQL command to switch execution mode from streaming to batch, and vice versa:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="streaming-read">Streaming Read<a href="#streaming-read" class="hash-link" aria-label="Direct link to Streaming Read" title="Direct link to Streaming Read">​</a></h2>
+<p>By default, Streaming read produces the latest snapshot on the table upon first startup, and continue to read the latest changes.</p>
+<p>Fluss by default ensures that your startup is properly processed with all data included.</p>
+<p>Fluss Source in streaming mode is unbounded, like a queue that never ends.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SET</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</spa [...]
+<p>You can also do streaming read without reading the snapshot data, you can use <code>latest</code> scan mode, which only reads the changelogs (or logs) from the latest offset:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</spa [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="batch-read">Batch Read<a href="#batch-read" class="hash-link" aria-label="Direct link to Batch Read" title="Direct link to Batch Read">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="limit-read">Limit Read<a href="#limit-read" class="hash-link" aria-label="Direct link to Limit Read" title="Direct link to Limit Read">​</a></h3>
+<p>The Fluss source supports limiting reads for both primary-key tables and log tables, making it convenient to preview the latest <code>N</code> records in a table.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h4>
+<ol>
+<li>Create a table and prepare data</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<ol start="2">
+<li>Query from table.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SET</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="point-query">Point Query<a href="#point-query" class="hash-link" aria-label="Direct link to Point Query" title="Direct link to Point Query">​</a></h3>
+<p>The Fluss source supports point queries for primary-key tables, allowing you to inspect specific records efficiently. Currently, this functionality is exclusive to primary-key tables.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="example-1">Example<a href="#example-1" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h4>
+<ol>
+<li>Create a table and prepare data</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<ol start="2">
+<li>Query from table.</li>
+</ol>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SET</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="aggregations">Aggregations<a href="#aggregations" class="hash-link" aria-label="Direct link to Aggregations" title="Direct link to Aggregations">​</a></h3>
+<p>The Fluss source supports pushdown count aggregation for the log table in batch mode. It is useful to preview the total number of the log table;</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SET</span>< [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</spa [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="read-options">Read Options<a href="#read-options" class="hash-link" aria-label="Direct link to Read Options" title="Direct link to Read Options">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-reading-position">Start Reading Position<a href="#start-reading-position" class="hash-link" aria-label="Direct link to Start Reading Position" title="Direct link to Start Reading Position">​</a></h3>
+<p>The config option <code>scan.startup.mode</code> enables you to specify the starting point for data consumption. Fluss currently supports the following <code>scan.startup.mode</code> options:</p>
+<ul>
+<li><code>full</code> (default): For primary key tables, it first consumes the full data set and then consumes incremental data. For log tables, it starts consuming from the earliest offset.</li>
+<li><code>earliest</code>: For primary key tables, it starts consuming from the earliest changelog offset; for log tables, it starts consuming from the earliest log offset.</li>
+<li><code>latest</code>: For primary key tables, it starts consuming from the latest changelog offset; for log tables, it starts consuming from the latest log offset.</li>
+<li><code>timestamp</code>: For primary key tables, it starts consuming the changelog from a specified time (defined by the configuration item <code>scan.startup.timestamp</code>); for log tables, it starts consuming from the offset corresponding to the specified time.</li>
+</ul>
+<p>You can dynamically apply the scan parameters via SQL hints. For instance, the following SQL statement temporarily sets the <code>scan.startup.mode</code> to latest when consuming the <code>log_table</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">SELECT</spa [...]
+<p>Also, the following SQL statement temporarily sets the <code>scan.startup.mode</code> to timestamp when consuming the <code>log_table</code> table.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- timestam [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- timestam [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/engine-flink/writes/index.html b/docs/0.6/engine-flink/writes/index.html
new file mode 100644
index 0000000..32f7ce4
--- /dev/null
+++ b/docs/0.6/engine-flink/writes/index.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-engine-flink/writes" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Flink Writes | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>You can directly insert or update data into a Fluss table using the <code>INSERT INTO</code> statement.
+Fluss primary key tables can accept all types of messages (<code>INSERT</code>, <code>UPDATE_BEFORE</code>, <code>UPDATE_AFTER</code>, <code>DELETE</code>), while Fluss log table can only accept <code>INSERT</code> type messages.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="insert-into">INSERT INTO<a href="#insert-into" class="hash-link" aria-label="Direct link to INSERT INTO" title="Direct link to INSERT INTO">​</a></h2>
+<p><code>INSERT INTO</code> statements are used to write data to Fluss tables.
+They support both streaming and batch modes and are compatible with primary-key tables (for upserting data) as well as log tables (for appending data).</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="appending-data-to-the-log-table">Appending Data to the Log Table<a href="#appending-data-to-the-log-table" class="hash-link" aria-label="Direct link to Appending Data to the Log Table" title="Direct link to Appending Data to the Log Table">​</a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-log-table">Create a Log table.<a href="#create-a-log-table" class="hash-link" aria-label="Direct link to Create a Log table." title="Direct link to Create a Log table.">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="insert-data-into-the-log-table">Insert data into the Log table.<a href="#insert-data-into-the-log-table" class="hash-link" aria-label="Direct link to Insert data into the Log table." title="Direct link to Insert data into the Log table.">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="perform-data-upserts-to-the-primarykey-table">Perform Data Upserts to the PrimaryKey Table.<a href="#perform-data-upserts-to-the-primarykey-table" class="hash-link" aria-label="Direct link to Perform Data Upserts to the PrimaryKey Table." title="Direct link to Perform Data Upserts to the PrimaryKey Table.">​</a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-primary-key-table">Create a primary key table.<a href="#create-a-primary-key-table" class="hash-link" aria-label="Direct link to Create a primary key table." title="Direct link to Create a primary key table.">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="updates-all-columns">Updates All Columns<a href="#updates-all-columns" class="hash-link" aria-label="Direct link to Updates All Columns" title="Direct link to Updates All Columns">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">INSERT</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="partial-updates">Partial Updates<a href="#partial-updates" class="hash-link" aria-label="Direct link to Partial Updates" title="Direct link to Partial Updates">​</a></h4>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- only par [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="delete-from">DELETE FROM<a href="#delete-from" class="hash-link" aria-label="Direct link to DELETE FROM" title="Direct link to DELETE FROM">​</a></h2>
+<p>Fluss supports deleting data for primary-key tables in batch mode via <code>DELETE FROM</code> statement. Currently, only single data deletions based on the primary key are supported.</p>
+<ul>
+<li>the primary key table</li>
+</ul>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- DELETE s [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- The cond [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="update">UPDATE<a href="#update" class="hash-link" aria-label="Direct link to UPDATE" title="Direct link to UPDATE">​</a></h2>
+<p>Fluss enables data updates for primary-key tables in batch mode using the <code>UPDATE</code> statement. Currently, only single-row updates based on the primary key are supported.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- Execute  [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token comment" style="color:rgb(106, 153, 85)">-- The cond [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/install-deploy/deploying-distributed-cluster/index.html b/docs/0.6/install-deploy/deploying-distributed-cluster/index.html
new file mode 100644
index 0000000..e6e3560
--- /dev/null
+++ b/docs/0.6/install-deploy/deploying-distributed-cluster/index.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-install-deploy/deploying-distributed-cluster" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Deploying Distributed Cluster | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://f [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This page provides instructions on how to deploy a <em>distributed cluster</em> for Fluss on bare machines.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="requirements">Requirements<a href="#requirements" class="hash-link" aria-label="Direct link to Requirements" title="Direct link to Requirements">​</a></h2>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="hardware-requirements">Hardware Requirements<a href="#hardware-requirements" class="hash-link" aria-label="Direct link to Hardware Requirements" title="Direct link to Hardware Requirements">​</a></h3>
+<p>Fluss runs on all <em>UNIX-like environments</em>, e.g. <strong>Linux</strong>, <strong>Mac OS X</strong>.
+To build a distributed cluster, you need to have at least two nodes.
+This doc provides a simple example of how to deploy a distributed cluster on three nodes.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="software-requirements">Software Requirements<a href="#software-requirements" class="hash-link" aria-label="Direct link to Software Requirements" title="Direct link to Software Requirements">​</a></h3>
+<p>Before you start to set up the system, make sure you have the following software installed <strong>on each node</strong>:</p>
+<ul>
+<li><strong>Java 17</strong> or higher (Java 8 and Java 11 are not recommended)</li>
+<li><strong>Zookeeper 3.6.0</strong> or higher (It is not recommended to use zookeeper versions below 3.6.0)</li>
+</ul>
+<p>If your cluster does not fulfill these software requirements you will need to install/upgrade it.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="java_home-configuration"><code>JAVA_HOME</code> Configuration<a href="#java_home-configuration" class="hash-link" aria-label="Direct link to java_home-configuration" title="Direct link to java_home-configuration">​</a></h3>
+<p>Flink requires the <code>JAVA_HOME</code> environment variable to be set on all nodes and point to the directory of your Java installation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-setup">Fluss Setup<a href="#fluss-setup" class="hash-link" aria-label="Direct link to Fluss Setup" title="Direct link to Fluss Setup">​</a></h2>
+<p>This part will describe how to set up Fluss cluster consisting of one coordinator server and multiple tablet servers
+across three machines. Suppose you have three nodes have ip address:</p>
+<ul>
+<li>Node1: <code>192.168.10.1</code></li>
+<li>Node2: <code>192.168.10.2</code></li>
+<li>Node3: <code>192.168.10.3</code></li>
+</ul>
+<p>Node1 will deploy the CoordinatorServer and one TabletServer, Node2 and Node3 will deploy one TabletServer.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="preparation">Preparation<a href="#preparation" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h3>
+<ol>
+<li>
+<p>Make sure ZooKeeper has been deployed, and assuming the ZooKeeper address is <code>192.168.10.99:2181</code>. see <a href="https://zookeeper.apache.org/doc/r3.6.0/zookeeperStarted.html#sc_RunningReplicatedZooKeeper" target="_blank" rel="noopener noreferrer">Running zookeeper cluster</a> to deploy a distributed ZooKeeper.</p>
+</li>
+<li>
+<p>Download Fluss</p>
+</li>
+</ol>
+<p>Go to the <a href="/downloads/">downloads page</a> and download the latest Fluss release. After downloading the latest release, copy the archive to all the nodes and extract it:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span cla [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-fluss">Configuring Fluss<a href="#configuring-fluss" class="hash-link" aria-label="Direct link to Configuring Fluss" title="Direct link to Configuring Fluss">​</a></h3>
+<p>After having extracted the archived files, you need to configure Fluss for the cluster by editing <code>conf/server.yaml</code></p>
+<p>For <strong>Node1</strong>, the config is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">coordinator.host</span><span class="token punctuation" style="color:rgb(212, 212, 212) [...]
+<p>For <strong>Node2</strong>, the config is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">zookeeper.address</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<p>For <strong>Node3</strong>, the config is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">zookeeper.address</span><span class="token punctuation" style="color:rgb(212, 212, 212 [...]
+<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
+<li><code>tablet-server.id</code> is the unique id of the TabletServer, if you have multiple TabletServers, you should set different id for each TabletServer.</li>
+<li>In this example, we only set the properties that must be configured, and for some other properties, you can refer to <a href="/docs/0.6/maintenance/configuration/">Configuration</a> for more details.</li>
+</ul></div></div>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="starting-fluss">Starting Fluss<a href="#starting-fluss" class="hash-link" aria-label="Direct link to Starting Fluss" title="Direct link to Starting Fluss">​</a></h3>
+<p>To start Fluss, you should first to start a CoordinatorServer in <strong>node1</strong> and
+then start each TabletServer in <strong>node1</strong>, <strong>node2</strong>, <strong>node3</strong>. The command is as follows:</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="starting-coordinatorserver">Starting CoordinatorServer<a href="#starting-coordinatorserver" class="hash-link" aria-label="Direct link to Starting CoordinatorServer" title="Direct link to Starting CoordinatorServer">​</a></h4>
+<p>In <strong>node1</strong>, starting a CoordinatorServer:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/coordinator-server.sh start</span><br></span></code></pre></div></div>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="starting-tabletserver">Starting TabletServer<a href="#starting-tabletserver" class="hash-link" aria-label="Direct link to Starting TabletServer" title="Direct link to Starting TabletServer">​</a></h4>
+<p>In <strong>node1</strong>, <strong>node2</strong>, <strong>node3</strong>, starting a TabletServer is as follows:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/tablet-server.sh start</span><br></span></code></pre></div></div>
+<p>After that, the Fluss distributed cluster is started.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss">Interacting with Fluss<a href="#interacting-with-fluss" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h2>
+<p>After the Fluss cluster is started, you can use <strong>Fluss Client</strong> (e.g., Flink SQL Client) to interact with Fluss.
+The following subsections will show you how to use Flink SQL Client to interact with Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="flink-sql-client">Flink SQL Client<a href="#flink-sql-client" class="hash-link" aria-label="Direct link to Flink SQL Client" title="Direct link to Flink SQL Client">​</a></h3>
+<p>Using Flink SQL Client to interact with Fluss.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="preparation-1">Preparation<a href="#preparation-1" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h4>
+<p>You can start a Flink standalone cluster refer to <a href="/docs/0.6/engine-flink/getting-started/#preparation-when-using-flink-sql-client">Flink Environment Preparation</a></p>
+<p><strong>Note</strong>: Make sure the <a href="/downloads/">Fluss connector jar</a> already has copied to the <code>lib</code> directory of your Flink home.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="add-catalog">Add catalog<a href="#add-catalog" class="hash-link" aria-label="Direct link to Add catalog" title="Direct link to Add catalog">​</a></h4>
+<p>In Flink SQL client, a catalog is created and named by executing the following query:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss">Do more with Fluss<a href="#do-more-with-fluss" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.6/engine-flink/getting-started/">Flink Getting Started</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/deploying-distributed-cluster.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/install-deploy/deploying-local-cluster/index.html b/docs/0.6/install-deploy/deploying-local-cluster/index.html
new file mode 100644
index 0000000..eb3408b
--- /dev/null
+++ b/docs/0.6/install-deploy/deploying-local-cluster/index.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-install-deploy/deploying-local-cluster" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Deploying Local Cluster | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This page provides instructions on how to deploy a <em>local cluster</em> (on one machine, but in separate processes) for Fluss.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="requirements">Requirements<a href="#requirements" class="hash-link" aria-label="Direct link to Requirements" title="Direct link to Requirements">​</a></h2>
+<p>Fluss runs on all <em>UNIX-like environments</em>, e.g. <strong>Linux</strong>, <strong>Mac OS X</strong>.
+Before you start to setup the system, make sure you have the following software installed on your test machine:</p>
+<ul>
+<li><strong>Java 17</strong> or higher (Java 8 and Java 11 are not recommended)</li>
+</ul>
+<p>If your cluster does not fulfill these software requirements you will need to install/upgrade it.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="java_home-configuration"><code>JAVA_HOME</code> Configuration<a href="#java_home-configuration" class="hash-link" aria-label="Direct link to java_home-configuration" title="Direct link to java_home-configuration">​</a></h3>
+<p>Flink requires the <code>JAVA_HOME</code> environment variable to be set on your
+test machine and point to the directory of your Java installation.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="fluss-setup">Fluss Setup<a href="#fluss-setup" class="hash-link" aria-label="Direct link to Fluss Setup" title="Direct link to Fluss Setup">​</a></h2>
+<p>Go to the <a href="/downloads/">downloads page</a> and download the latest Fluss release. Make sure to pick the Fluss
+package <strong>matching your Java version</strong>. After downloading the latest release, extract it:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">tar</span><span class="token plain"> </span><span cla [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="starting-fluss-local-cluster">Starting Fluss Local Cluster<a href="#starting-fluss-local-cluster" class="hash-link" aria-label="Direct link to Starting Fluss Local Cluster" title="Direct link to Starting Fluss Local Cluster">​</a></h2>
+<p>You can start Fluss local cluster by running the following command:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./bin/local-cluster.sh start</span><br></span></code></pre></div></div>
+<p>After that, the Fluss local cluster is started.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss">Interacting with Fluss<a href="#interacting-with-fluss" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h2>
+<p>After Fluss local cluster is started, you can use <strong>Fluss Client</strong> (Currently, only support Flink Sql Client) to interact with Fluss.
+The following subsections will show you how to use Flink Sql Client to interact with Fluss.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="flink-sql-client">Flink SQL Client<a href="#flink-sql-client" class="hash-link" aria-label="Direct link to Flink SQL Client" title="Direct link to Flink SQL Client">​</a></h3>
+<p>Using Flink SQL Client to interact with Fluss.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="preparation">Preparation<a href="#preparation" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation">​</a></h4>
+<p>You can start a Flink standalone cluster refer to <a href="/docs/0.6/engine-flink/getting-started/#preparation-when-using-flink-sql-client">Flink Environment Preparation</a></p>
+<p><strong>Note</strong>: Make sure the <a href="/downloads/">Fluss connector jar</a> already has copied to the <code>lib</code> directory of your Flink home.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="add-catalog">Add catalog<a href="#add-catalog" class="hash-link" aria-label="Direct link to Add catalog" title="Direct link to Add catalog">​</a></h4>
+<p>In Flink SQL client, a catalog is created and named by executing the following query:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss">Do more with Fluss<a href="#do-more-with-fluss" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.6/engine-flink/getting-started/">Flink Getting started</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/deploying-local-cluster.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" cl [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/install-deploy/deploying-with-docker/index.html b/docs/0.6/install-deploy/deploying-with-docker/index.html
new file mode 100644
index 0000000..c487d95
--- /dev/null
+++ b/docs/0.6/install-deploy/deploying-with-docker/index.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-install-deploy/deploying-with-docker" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Deploying with Docker | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apa [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>This guide will show you how to run a Fluss cluster using Docker. In this guide, we will introduce the prerequisites of
+the Docker environment and how to quickly create a Fluss cluster using the <code>docker run</code> commands
+or <code>docker compose</code> file.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites">​</a></h2>
+<p><strong>Overview</strong></p>
+<p>Prepare the build machine before creating the Docker image.</p>
+<p><strong>Hardware</strong></p>
+<p>Recommended configuration: 4 cores, 16GB memory.</p>
+<p><strong>Software</strong></p>
+<p>Docker and the Docker Compose plugin. All commands were tested with Docker version 27.4.0 and Docker Compose version v2.30.3.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="deploy-with-docker">Deploy with Docker<a href="#deploy-with-docker" class="hash-link" aria-label="Direct link to Deploy with Docker" title="Direct link to Deploy with Docker">​</a></h2>
+<p>The following is a brief overview of how to quickly create a complete Fluss testing cluster
+using the <code>docker run</code> commands.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-shared-tmpfs-volume">Create a shared tmpfs volume<a href="#create-a-shared-tmpfs-volume" class="hash-link" aria-label="Direct link to Create a shared tmpfs volume" title="Direct link to Create a shared tmpfs volume">​</a></h3>
+<p>Create a shared tmpfs volume:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> volume create s [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-a-network">Create a Network<a href="#create-a-network" class="hash-link" aria-label="Direct link to Create a Network" title="Direct link to Create a Network">​</a></h3>
+<p>Create an isolated bridge network in docker</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> network create  [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-zookeeper">Start Zookeeper<a href="#start-zookeeper" class="hash-link" aria-label="Direct link to Start Zookeeper" title="Direct link to Start Zookeeper">​</a></h3>
+<p>Start Zookeeper in daemon mode. This is a single node zookeeper setup. Zookeeper is the central metadata store
+for Fluss and should be set up with replication for production use. For more information,
+see <a href="https://zookeeper.apache.org/doc/r3.6.0/zookeeperStarted.html#sc_RunningReplicatedZooKeeper" target="_blank" rel="noopener noreferrer">Running zookeeper cluster</a>.</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-fluss-coordinatorserver">Start Fluss CoordinatorServer<a href="#start-fluss-coordinatorserver" class="hash-link" aria-label="Direct link to Start Fluss CoordinatorServer" title="Direct link to Start Fluss CoordinatorServer">​</a></h3>
+<p>Start Fluss CoordinatorServer in daemon and connect to Zookeeper.</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="start-fluss-tabletserver">Start Fluss TabletServer<a href="#start-fluss-tabletserver" class="hash-link" aria-label="Direct link to Start Fluss TabletServer" title="Direct link to Start Fluss TabletServer">​</a></h3>
+<p>You can start one or more tablet servers based on your needs. For a production environment,
+ensure that you have multiple tablet servers.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="start-with-one-tabletserver">Start with One TabletServer<a href="#start-with-one-tabletserver" class="hash-link" aria-label="Direct link to Start with One TabletServer" title="Direct link to Start with One TabletServer">​</a></h4>
+<p>If you just want to start a sample test, you can start only one TabletServer in daemon and connect to Zookeeper.
+The command is as follows:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="start-with-multiple-tabletserver">Start with Multiple TabletServer<a href="#start-with-multiple-tabletserver" class="hash-link" aria-label="Direct link to Start with Multiple TabletServer" title="Direct link to Start with Multiple TabletServer">​</a></h4>
+<p>In a production environment, you need to start multiple Fluss TabletServer nodes.
+Here we start 3 Fluss TabletServer nodes in daemon and connect to Zookeeper. The command is as follows:</p>
+<ol>
+<li>start tablet-server-0</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<ol start="2">
+<li>start tablet-server-1</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<ol start="3">
+<li>start tablet-server-2</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<p>Now all the Fluss related components are running.</p>
+<p>Run the below command to check the Fluss cluster status:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> container </spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss">Interacting with Fluss<a href="#interacting-with-fluss" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h3>
+<p>After the Fluss cluster is started, you can use <strong>Fluss Client</strong> (e.g., Flink SQL Client) to interact with Fluss.
+The following subsections will show you how to use &#x27;Docker&#x27; to build a Flink cluster and use <strong>Flink SQL Client</strong>
+to interact with Fluss.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="start-flink-cluster">Start Flink Cluster<a href="#start-flink-cluster" class="hash-link" aria-label="Direct link to Start Flink Cluster" title="Direct link to Start Flink Cluster">​</a></h4>
+<ol>
+<li>start jobManager</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<ol start="2">
+<li>start taskManager</li>
+</ol>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> run </span><spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="enter-into-sql-client">Enter into SQL-Client<a href="#enter-into-sql-client" class="hash-link" aria-label="Direct link to Enter into SQL-Client" title="Direct link to Enter into SQL-Client">​</a></h4>
+<p>First, use the following command to enter pod:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> </span><span  [...]
+<p>Then, use the following command to enter the Flink SQL CLI Container:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">./sql-client</span><br></span></code></pre></div></div>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-fluss-catalog">Create Fluss Catalog<a href="#create-fluss-catalog" class="hash-link" aria-label="Direct link to Create Fluss Catalog" title="Direct link to Create Fluss Catalog">​</a></h4>
+<p>Use the following SQL to create a Fluss catalog:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss">Do more with Fluss<a href="#do-more-with-fluss" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.6/engine-flink/getting-started/">Flink Getting started</a></p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="deploy-with-docker-compose">Deploy with Docker Compose<a href="#deploy-with-docker-compose" class="hash-link" aria-label="Direct link to Deploy with Docker Compose" title="Direct link to Deploy with Docker Compose">​</a></h2>
+<p>The following is a brief overview of how to quickly create a complete Fluss testing cluster
+using the <code>docker compose up -d</code> commands in a detached mode.</p>
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-docker-composeyml-file">Create docker-compose.yml file<a href="#create-docker-composeyml-file" class="hash-link" aria-label="Direct link to Create docker-compose.yml file" title="Direct link to Create docker-compose.yml file">​</a></h3>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compose-file-to-start-fluss-cluster-with-one-tabletserver">Compose file to start Fluss cluster with one TabletServer<a href="#compose-file-to-start-fluss-cluster-with-one-tabletserver" class="hash-link" aria-label="Direct link to Compose file to start Fluss cluster with one TabletServer" title="Direct link to Compose file to start Fluss cluster with one TabletServer">​</a></h4>
+<p>You can use the following <code>docker-compose.yml</code> file to start a Fluss cluster with one <code>CoordinatorServer</code> and one <code>TabletServer</code>.</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="compose-file-to-start-fluss-cluster-with-multi-tabletserver">Compose file to start Fluss cluster with multi TabletServer<a href="#compose-file-to-start-fluss-cluster-with-multi-tabletserver" class="hash-link" aria-label="Direct link to Compose file to start Fluss cluster with multi TabletServer" title="Direct link to Compose file to start Fluss cluster with multi TabletServer">​</a></h4>
+<p>You can use the following <code>docker-compose.yml</code> file to start a Fluss cluster with one <code>CoordinatorServer</code> and three <code>TabletServers</code>.</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="launch-the-components">Launch the components<a href="#launch-the-components" class="hash-link" aria-label="Direct link to Launch the components" title="Direct link to Launch the components">​</a></h3>
+<p>Save the <code>docker-compose.yaml</code> script and execute the <code>docker compose up -d</code> command in the same directory
+to create the cluster.</p>
+<p>Run the below command to check the container status:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> container </spa [...]
+<h3 class="anchor anchorWithStickyNavbar_LWe7" id="interacting-with-fluss-1">Interacting with Fluss<a href="#interacting-with-fluss-1" class="hash-link" aria-label="Direct link to Interacting with Fluss" title="Direct link to Interacting with Fluss">​</a></h3>
+<p>If you want to interact with this Fluss cluster, you can change the <code>docker-compose.yml</code> file to add a Flink cluster.
+The changed <code>docker-compose.yml</code> file is as follows:</p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</spa [...]
+<p>Save the <code>docker-compose.yaml</code> script and execute the <code>docker-compose up -d</code> command in the same directory to create the cluster.</p>
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="enter-into-sql-client-1">Enter into SQL-Client<a href="#enter-into-sql-client-1" class="hash-link" aria-label="Direct link to Enter into SQL-Client" title="Direct link to Enter into SQL-Client">​</a></h4>
+<p>First, use the following command to enter the Flink SQL CLI Container:</p>
+<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">docker</span><span class="token plain"> compose </spa [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="create-fluss-catalog-1">Create Fluss Catalog<a href="#create-fluss-catalog-1" class="hash-link" aria-label="Direct link to Create Fluss Catalog" title="Direct link to Create Fluss Catalog">​</a></h4>
+<p>Use the following SQL to create a Fluss catalog:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">CREATE</spa [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#9CDCFE;background-color:#1E1E1E"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">USE</span>< [...]
+<h4 class="anchor anchorWithStickyNavbar_LWe7" id="do-more-with-fluss-1">Do more with Fluss<a href="#do-more-with-fluss-1" class="hash-link" aria-label="Direct link to Do more with Fluss" title="Direct link to Do more with Fluss">​</a></h4>
+<p>After the catalog is created, you can use Flink SQL Client to do more with Fluss, for example, create a table, insert data, query data, etc.
+More details please refer to <a href="/docs/0.6/engine-flink/getting-started/">Flink Getting started</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/deploying-with-docker.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" clas [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/install-deploy/overview/index.html b/docs/0.6/install-deploy/overview/index.html
new file mode 100644
index 0000000..8eb1c4d
--- /dev/null
+++ b/docs/0.6/install-deploy/overview/index.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-install-deploy/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
+<title data-rh="true">Overview | Fluss</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://fluss.apache.org/docs/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Fluss Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Fluss" href="/opensearch.xml">
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.3ca55d09.css">
+<script src="/assets/js/runtime~main.264c6f6f.js" defer="defer"></script>
+<script src="/assets/js/main.a06cb6b9.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>!function(){var t="light";var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",e||t),document.documentElement.setAttribute("data-theme-choice",e||t)}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("do [...]
+<p>Below, we provide an overview of the key components of a Fluss cluster, detailing their functionalities and implementations. Additionally, we will introduce the various deployment methods available for Fluss.</p>
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overview-and-reference-architecture">Overview and Reference Architecture<a href="#overview-and-reference-architecture" class="hash-link" aria-label="Direct link to Overview and Reference Architecture" title="Direct link to Overview and Reference Architecture">​</a></h2>
+<p>The figure below shows the building blocks of Fluss clusters:</p>
+<img width="1200px" src="/assets/images/deployment_overview-9108e1465903f9424cddd023a8301fb2.png">
+<p>When deploying Fluss, there are often multiple options available for each building block.
+We have listed them in the table below the figure.</p>
+<table class="table table-bordered"><thead><tr><th class="text-left" width="250">Component</th><th class="text-left" width="600">Purpose</th><th class="text-left" width="300">Implementations</th></tr></thead><tbody><tr><td>Fluss Client</td><td><p></p><p>The Fluss Client is the entry point for users to interact with Fluss Cluster. It is responsible for
+managing Fluss Cluster like:</p><p></p><ul><li> Admin operation: like create or delete database/table etc</li><li>Table operation: like write, read, delete data</li></ul></td><td><ul><li><a href="/docs/0.6/engine-flink/getting-started/">Flink Connector</a></li></ul></td></tr><tr><td>CoordinatorServer</td><td><p></p><p>CoordinatorServer is the name of the central work coordination component of Fluss.
+The coordinator server is responsible to:</p><p></p><ul><li>Manage the TabletServer</li><li>Manage the metadata</li><li>Coordinate the whole cluster, e.g. data re-balance, recover data when tablet servers down</li></ul></td><td rowspan="2"><ul><li><a href="/docs/0.6/install-deploy/deploying-local-cluster/">Local Cluster</a></li><li><a href="/docs/0.6/install-deploy/deploying-distributed-cluster/">Distributed Cluster</a></li><li><a href="/docs/0.6/install-deploy/deploying-with-docker/">Do [...]
+The data in Lakehouse storage can be read both by Fluss&#x27;s client in a Union Read manner and accessed directly
+by query engines such as Flink, Spark, StarRocks, Trino.</p></td><td><li><a href="/docs/0.6/maintenance/tiered-storage/lakehouse-storage/">Paimon</a></li><li><a href="/roadmap/">Iceberg (Roadmap)</a></li></td></tr><tr><td>Metrics Storage (optional)</td><td><p>CoordinatorServer/TabletServer report internal metrics and Fluss client (e.g., connector in Flink jobs) can report additional, client specific metrics as well.</p></td><td><li><a href="/docs/0.6/maintenance/observability/metric-repo [...]
+<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-deploy-fluss">How to deploy Fluss<a href="#how-to-deploy-fluss" class="hash-link" aria-label="Direct link to How to deploy Fluss" title="Direct link to How to deploy Fluss">​</a></h2>
+<p>Fluss can be deployed in three different ways:</p>
+<ul>
+<li><a href="/docs/0.6/install-deploy/deploying-local-cluster/">Local Cluster</a></li>
+<li><a href="/docs/0.6/install-deploy/deploying-distributed-cluster/">Distributed Cluster</a></li>
+<li><a href="/docs/0.6/install-deploy/deploying-with-docker/">Docker run/ Docker compose</a></li>
+</ul>
+<p><strong>NOTE</strong>:</p>
+<ul>
+<li>Local Cluster is for testing purpose only.</li>
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/fluss/edit/main/website/docs/install-deploy/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
+      Apache®, Apache Flink®, Flink®, Apache Kafka®, Kafka®, Spark® and associated open source project names and logos are trademarks of the Apache Software Foundation.</div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/0.6/intro/index.html b/docs/0.6/intro/index.html
new file mode 100644
index 0000000..44fd6b3
--- /dev/null
+++ b/docs/0.6/intro/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-0.6 docs-doc-page docs-doc-id-intro" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.8.1">
... 14701 lines suppressed ...