From 8227a86837ed7eb85d3768691bea7a02b5860a46 Mon Sep 17 00:00:00 2001 From: karen Date: Thu, 29 Aug 2024 01:04:51 +0800 Subject: [PATCH 01/16] feat: basic [about] page --- src/routes/+layout.svelte | 2 +- src/routes/+page.svelte | 28 ++++++------ src/routes/about/+page.svelte | 80 +++++++++++++++++++++++++++++++++++ src/routes/dragonfly.svelte | 12 +++++- src/routes/header.svelte | 13 ++++++ src/routes/navigator.svelte | 41 +++++++++--------- tailwind.config.js | 11 +++-- 7 files changed, 147 insertions(+), 40 deletions(-) create mode 100644 src/routes/about/+page.svelte create mode 100644 src/routes/header.svelte diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 9293ea5..15a1da6 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,7 +5,7 @@
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 674da8f..73ac8df 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -10,7 +10,7 @@ class="bg-background-dark min-w-[75rem] pt-12 flex selection:bg-background-light selection:text-background-dark font-code" >
-
+ -
-
-

Vendor lock-in free

+
© Copyright 2024-, Tonbo IO.
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte new file mode 100644 index 0000000..6203a83 --- /dev/null +++ b/src/routes/about/+page.svelte @@ -0,0 +1,80 @@ + + +
+
+ +
+
+

+ About Tonbo +

+

+ Tonbo IO was conceived during my time in ByteDance, 2022. I have observed that existing + data processing infrastructure often requires transferring data to centralized vendors for + storage and analysis, limiting true data ownership. Tonbo IO addresses this challenge by + offering an edge-first embedded database that supports data storage and analysis from + local devices to shared storage services, all in open-source formats. +

+ +
+

Contacts

+
+

Tzu Gwo: guozixing@tonbo.io

+

Zeren Li: lizeren@tonbo.io

+
+
+

Credits

+
+
    +
  • + Apache Arrow / Parquet: open-source data / file formats supports storing data to + numerous storage services, it help us avoiding vendor lock-in. +
  • +
  • + RocksDB: a state-of-art embedded database, RocksDB inspires Tonbo on building a high + performance columnar database on LSM Tree. +
  • +
  • + mini-lsm: an educational project implementing LSM Trees in Rust. The exploration of + Rust's type system and efficient LSM Tree implementation in this project inspired the + abstract type design in Tonbo. +
  • +
  • + sled: an embedded database written in Rust, its API and modular project structure + design impact us. +
  • +
  • + redb: an embedded key-value store in Rust, Tonbo built early stage benchmarks upon its + cases. +
  • +

    + Also thanks to all of Tonbo's community contributors, their support and dedication + make this project possible. And thanks to @Cream Tang, who designed the web and the + logo. +

    +
+
+
+
+
+ + + +
+ © Copyright 2024-, Tonbo IO. +
+
diff --git a/src/routes/dragonfly.svelte b/src/routes/dragonfly.svelte index 6d2d8e9..88ff2f2 100644 --- a/src/routes/dragonfly.svelte +++ b/src/routes/dragonfly.svelte @@ -1,5 +1,12 @@ -
██████████████████████████
+
+
+
+
██████████████████████████
 ██████████████████████████
 ██████████████████████████
 ██████████████████████████
@@ -12,3 +19,4 @@
    ▀▀███▄▄   ███▀▀█▄████▀▀
        ▀▀███▄▄█  ███▀▀    
 ██▄▄▄▄     ▄█▀ ▄██▄▄▄     
+
diff --git a/src/routes/header.svelte b/src/routes/header.svelte new file mode 100644 index 0000000..d4ae789 --- /dev/null +++ b/src/routes/header.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/navigator.svelte b/src/routes/navigator.svelte index d0f7d7c..98743d1 100644 --- a/src/routes/navigator.svelte +++ b/src/routes/navigator.svelte @@ -11,49 +11,48 @@ >
-
+ diff --git a/tailwind.config.js b/tailwind.config.js index 5238891..6e597e3 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,8 +1,13 @@ /** @type {import('tailwindcss').Config} */ export default { - content: ['./src/**/*.{html,js,svelte,ts}', './node_modules/svhighlight/**/*.svelte'], + content: [ './src/**/*.{html,js,svelte,ts}', './node_modules/svhighlight/**/*.svelte' ], theme: { extend: { + screens: { + 'sm': '640px', + 'md': '1200px', + 'lg': '1400px', + }, colors: { "background-dark": "#222623", "background-light": "#E7F1BE", @@ -13,8 +18,8 @@ export default { } }, fontFamily: { - code: ["Iosevka Web", "monospace"], - medium: ["Iosevka Web Medium", "monospace"], + code: [ "Iosevka Web", "monospace" ], + medium: [ "Iosevka Web Medium", "monospace" ], }, }, plugins: [], From 520a2a71f770bec7cfc107f208caa16debd18682 Mon Sep 17 00:00:00 2001 From: karen Date: Thu, 29 Aug 2024 01:52:07 +0800 Subject: [PATCH 02/16] feat: basic [pages] page --- src/routes/+layout.svelte | 2 +- src/routes/about/+page.svelte | 7 ++-- src/routes/blogs/+page.svelte | 63 +++++++++++++++++++++++++++++++++++ src/routes/header.svelte | 6 ++-- src/routes/navigator.svelte | 2 +- 5 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 src/routes/blogs/+page.svelte diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 15a1da6..c82a72a 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,7 +5,7 @@
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte index 6203a83..a227146 100644 --- a/src/routes/about/+page.svelte +++ b/src/routes/about/+page.svelte @@ -8,7 +8,10 @@
- + +

-->
© Copyright 2024-, Tonbo IO.
diff --git a/src/routes/blogs/+page.svelte b/src/routes/blogs/+page.svelte new file mode 100644 index 0000000..e2044a6 --- /dev/null +++ b/src/routes/blogs/+page.svelte @@ -0,0 +1,63 @@ + + +
+
+
+ +
+
+
+

Movable tree CRDTs and Loro's implementation

+
+ +
+

+ This article introduces the implementation difficulties and challenges of Movable Tree + CRDTs when collaboration, and how Loro implements it and sorts child nodes. The + algorithm has high performance and can be used in production. Read more → +

+

2024/07/18

+
+
+
+
+ +
+
+

Movable tree CRDTs and Loro's implementation

+
+
+

+ This article introduces the implementation difficulties and challenges of Movable Tree + CRDTs when collaboration, and how Loro implements it and sorts child nodes. The + algorithm has high performance and can be used in production. Read more → +

+

2024/07/18

+
+
+
+
+
+ +
+ © Copyright 2024-, Tonbo IO. +
+
diff --git a/src/routes/header.svelte b/src/routes/header.svelte index d4ae789..e8e0621 100644 --- a/src/routes/header.svelte +++ b/src/routes/header.svelte @@ -3,11 +3,9 @@ export let title = ''; -
- +
Date: Fri, 30 Aug 2024 01:52:30 +0800 Subject: [PATCH 03/16] feat:navigator responsive --- src/routes/+layout.svelte | 2 +- src/routes/about/+page.svelte | 4 +- src/routes/blogs/+page.svelte | 4 +- src/routes/navigator.svelte | 104 ++++++++++++++++++++-------------- src/routes/tonbo.svelte | 6 +- 5 files changed, 69 insertions(+), 51 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index c82a72a..0e42bc1 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,7 +5,7 @@
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte index a227146..990bbd7 100644 --- a/src/routes/about/+page.svelte +++ b/src/routes/about/+page.svelte @@ -6,9 +6,9 @@
- diff --git a/src/routes/blog/introducing-tonbo/old-page.svelte b/src/routes/blog/introducing-tonbo/old-page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/blogs/+page.svelte b/src/routes/blogs/+page.svelte index bdab560..c979421 100644 --- a/src/routes/blogs/+page.svelte +++ b/src/routes/blogs/+page.svelte @@ -6,9 +6,9 @@
-
+
diff --git a/src/routes/header.svelte b/src/routes/header.svelte index e8e0621..4b91fc5 100644 --- a/src/routes/header.svelte +++ b/src/routes/header.svelte @@ -4,7 +4,7 @@
-
+

{title}

diff --git a/src/routes/home-navigator.svelte b/src/routes/home-navigator.svelte new file mode 100644 index 0000000..89ac00d --- /dev/null +++ b/src/routes/home-navigator.svelte @@ -0,0 +1,78 @@ + + + diff --git a/src/routes/navigator.svelte b/src/routes/navigator.svelte index 005d2bb..f6b8538 100644 --- a/src/routes/navigator.svelte +++ b/src/routes/navigator.svelte @@ -9,7 +9,7 @@
-
+
From 51066c0ce7c06b942f93cc11119c100989ccc796 Mon Sep 17 00:00:00 2001 From: karen Date: Mon, 2 Sep 2024 03:00:56 +0800 Subject: [PATCH 06/16] fix --- src/routes/+layout.svelte | 2 +- src/routes/+page.svelte | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index f56ff56..8d00e1c 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -12,7 +12,7 @@ /> {:else} {/if}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 2573c47..8cab7f9 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -13,7 +13,9 @@
-
Tonbo incurrs minimal cost to insert and scan structured data.
+
From f5137f429b6c93876e189729e90c4805aed28094 Mon Sep 17 00:00:00 2001 From: karen Date: Mon, 2 Sep 2024 14:06:25 +0800 Subject: [PATCH 07/16] feat: add link --- src/routes/+page.svelte | 17 +++++++------ src/routes/about/+page.svelte | 46 ++++++++++++++++++++++++----------- src/routes/blogs/+page.svelte | 8 +++--- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 8cab7f9..30342b7 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -99,7 +99,7 @@ class=" bg-background-light selection:bg-background-dark selection:text-background-light font-code p-[28px]" >
-
+
-
+
-

Vendor lock-in free

+

Vendor lock-in free

Tonbo is built as a thin wrapper over Arrow schema and Parquet format, which means you are able to use many analytic tools to can fully benefit from the Arrow ecosystem.

-
-

+

+

From many sources to many targets

diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte index a3cf486..3677eab 100644 --- a/src/routes/about/+page.svelte +++ b/src/routes/about/+page.svelte @@ -12,7 +12,7 @@

-
+

Contacts

-

Tzu Gwo: guozixing@tonbo.io

-

Zeren Li: lizeren@tonbo.io

+

+ Tzu Gwo: + guozixing@tonbo.io +

+

+ Zeren Li: + lizeren@tonbo.io +

Credits

  • - Apache Arrow / Parquet: open-source data / file formats supports storing data to - numerous storage services, it help us avoiding vendor lock-in. + Apache Arrow + / Parquet: + open-source data / file formats supports storing data to numerous storage services, it + help us avoiding vendor lock-in.
  • - RocksDB: a state-of-art embedded database, RocksDB inspires Tonbo on building a high + RocksDB: a state-of-art embedded database, RocksDB inspires Tonbo on building a high performance columnar database on LSM Tree.
  • - mini-lsm: an educational project implementing LSM Trees in Rust. The exploration of - Rust's type system and efficient LSM Tree implementation in this project inspired the + mini-lsm: an educational project implementing LSM Trees in Rust. The exploration of Rust's + type system and efficient LSM Tree implementation in this project inspired the abstract type design in Tonbo.
  • - sled: an embedded database written in Rust, its API and modular project structure - design impact us. + sled: + an embedded database written in Rust, its API and modular project structure design + impact us.
  • - redb: an embedded key-value store in Rust, Tonbo built early stage benchmarks upon its + redb: + an embedded key-value store in Rust, Tonbo built early stage benchmarks upon its cases.
  • - Also thanks to all of Tonbo's community contributors, their support and dedication - make this project possible. And thanks to @Cream Tang, who designed the web and the - logo. + Also thanks to all of Tonbo's community contributors, their support and dedication make this project possible. And thanks to + @Cream Tang, who + designed the web and the logo.

diff --git a/src/routes/blogs/+page.svelte b/src/routes/blogs/+page.svelte index c979421..44062ad 100644 --- a/src/routes/blogs/+page.svelte +++ b/src/routes/blogs/+page.svelte @@ -11,8 +11,8 @@
-
-
+
+

Movable tree CRDTs and Loro's implementation

-
-
+
+

Movable tree CRDTs and Loro's implementation

From 58009591bdbb40df171330568c5183565c91cc7a Mon Sep 17 00:00:00 2001 From: karen Date: Mon, 2 Sep 2024 17:49:13 +0800 Subject: [PATCH 08/16] update: home page --- src/routes/+layout.svelte | 10 +- src/routes/+page.svelte | 115 +++------- src/routes/about/+page.svelte | 14 +- .../blog/introducing-tonbo/+page.svelte | 6 - .../blog/introducing-tonbo/old-page.svelte | 204 ++++++++++++++++++ src/routes/blogs/+page.svelte | 10 +- src/routes/home-navigator.svelte | 4 +- 7 files changed, 247 insertions(+), 116 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8d00e1c..dd61426 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -8,7 +8,7 @@
{#if $page.url.pathname === '/'} {:else} + +
+
+ © Copyright 2024-, Tonbo IO. +
+
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 30342b7..31402c9 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,98 +7,65 @@ Tonbo - an extensible embedded database using Arrow. +
- -
- A portable embedded database using Arrow. +
+ +
+ A portable embedded database using Arrow. +
-
-
-
+
+
- - -

@@ -188,11 +137,5 @@ DISK: SamSung 970 EVO Plus 4TB

- -
- © Copyright 2024-, Tonbo IO. -
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte index 3677eab..d33bb9c 100644 --- a/src/routes/about/+page.svelte +++ b/src/routes/about/+page.svelte @@ -6,7 +6,7 @@
- - - -
diff --git a/src/routes/blog/introducing-tonbo/+page.svelte b/src/routes/blog/introducing-tonbo/+page.svelte index 9da3af0..a35b528 100644 --- a/src/routes/blog/introducing-tonbo/+page.svelte +++ b/src/routes/blog/introducing-tonbo/+page.svelte @@ -214,10 +214,4 @@ pub struct User {

- -
- © Copyright 2024-, Tonbo IO. -
diff --git a/src/routes/blog/introducing-tonbo/old-page.svelte b/src/routes/blog/introducing-tonbo/old-page.svelte index e69de29..bc52151 100644 --- a/src/routes/blog/introducing-tonbo/old-page.svelte +++ b/src/routes/blog/introducing-tonbo/old-page.svelte @@ -0,0 +1,204 @@ + + +
+
+
+

Intoducing Tonbo

+

August 14, 2024 by Tzu Gwo

+

+ We’re excited to announce that Tonbo is now open source in its preview version! Tonbo is an embedded persistent database written in + Rust. It provides essential KV-like methods: insert, filter, and range scan, making it a foundation + for data-intensive applications, including other types of databases. It also supports type-safe + structured data storage. For Rust developers, we offer an ORM-like macro for ease of use: +

+ +

+

+ Tonbo enables fast and convenient querying over type-safe structured data. For example, + integrating a query engine takes just a few hours of coding: datafusion example + (official support for DataFusion will be included in the next release). In our preliminary benchmarks, + Tonbo outperforms RocksDB by 2.2x in data scan scenarios, even though it's still in its early stages. + If you’re interested in Tonbo, please star the project on GitHub, follow us on + Twitter, or join the conversation on + Discord. +

+

Why We Built Tonbo?

+

+ Analytical tools in the Apache Arrow + (such as + Apache Arrow DataFusion ecosystems provide an nice foundation for data processing. They get a great balance between scalability, + development efficiency, and execution performance, allowing developers to build efficient data + analysis applications within days using DataFusion. +

+

+ However, most tools are focus on the read path of databases. Every data-intensive application + using DataFusion ends up spending significant time developing its own write path + implementation. What if we could have a write path implementation as agile and performant as + DataFusion? +

+

+ That’s the primary design goal of Tonbo: to serve as an embedded database offering a highly + scalable data storage engine for the Arrow ecosystem. Additionally, Tonbo also has a long-term + goal: provide offline-first distributed data storage capabilities, support rapid and flexible + data storage across various environments—from embedded Linux and browsers to servers—and + integrating with multiple storage systems such as file systems, OPFS, and S3. +

+
+
+			╔═tonbo═════════════════════════════════════════════════════╗
+			║                                                           ║
+			║    ┌─────────client memory─┐  ┌─────────client memory─┐   ║
+			║    │ ┏━━━━━━━━━━━━┓        │  │ ┏━━━━━━━━━━━━┓        │   ║
+			║    │ ┃  memtable  ┃        │  │ ┃  memtable  ┃        │   ║
+			║    │ ┗━━━━┳━━━━━━━┛        │  │ ┗━━━━┳━━━━━━━┛        │   ║
+			║    │ ┏━━━━▼━━━━━━━┓        │  │ ┏━━━━▼━━━━━━━┓        │   ║
+			║    │ ┃  memtable  ┃        │  │ ┃  memtable  ┃        │   ║
+			║    │ ┗━━━━┳━━━━━━━┛        │  │ ┗━━━━┳━━━━━━━┛        │   ║
+			║    │ ┏━━━━▼━━━━━━━┓        │  │ ┏━━━━▼━━━━━━━┓        │   ║
+			║    │ ┃  memtable  ┃        │  │ ┃  memtable  ┃        │   ║
+			║    │ ┗━━━━┳━━━━━━━┛        │  │ ┗━━━━┳━━━━━━━┛        │   ║
+			║    └──────╂────────────────┘  └──────╂────────────────┘   ║
+			║    ┌──────╂─client storage─┐  ┌──────╂─client storage─┐   ║
+			║    │ ┏━━━━▼━━━━┓           │  │ ┏━━━━▼━━━━┓           │   ║
+			║    │ ┃ parquet ┃           │  │ ┃ parquet ┃           │   ║
+			║    │ ┗━━━━┳━━━━┛           │  │ ┗━━━━┳━━━━┛           │   ║
+			║    └──────╂────────────────┘  └──────╂────────────────┘   ║
+			║           ┣━━━━━━━━━━━━━━━━━━━━━━━━━━┛                    ║
+			║    ┌──────╂────────────────────────────────server ssd─┐   ║
+			║    │      ┣━━━━━━━━━━━┓                               │   ║
+			║    │ ┏━━━━▼━━━━┓ ┏━━━━▼━━━━┓                          │   ║
+			║    │ ┃ parquet ┃ ┃ parquet ┃                          │   ║
+			║    │ ┗━━━━┳━━━━┛ ┗━━━━┳━━━━┛                          │   ║
+			║    └──────╂───────────╂───────────────────────────────┘   ║
+			║    ┌──────╂───────────╂────────object storage service─┐   ║
+			║    │      ┣━━━━━━━━━━━╋━━━━━━━━━━━┳━━━━━━━━━━━┓       │   ║
+			║    │ ┏━━━━▼━━━━┓ ┏━━━━▼━━━━┓ ┏━━━━▼━━━━┓ ┏━━━━▼━━━━┓  │   ║
+			║    │ ┃ parquet ┃ ┃ parquet ┃ ┃ parquet ┃ ┃ parquet ┃  │   ║
+			║    │ ┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━┛  │   ║
+			║    └──────────────────────────────────────────────────┘   ║
+			║                                                           ║
+			╚═══════════════════════════════════════════════════════════╝
+		
+

How is Tonbo Designed?

+

LSM Tree

+

+ Tonbo is built on the LSM Tree + architecture. Typically, databases use either + Log-Structured Merge (LSM) trees or B+ trees. The primary advantage of LSM trees is that all foreground writes are performed in memory, + while background writes are sequential, resulting in very high write throughput. +

+ +

+ LSM trees also have minimal file system requirements: they only need a file system that + supports append-only operations to achieve high-performance data insertion and updates. This + makes Tonbo suitable for a wide range of devices, from flash storage to SSDs. By offloading + tasks like data clean-up and compaction to the background, LSM trees streamline the read/write + process and reduce the load on the frontend. +

+

Type-Safe Structured Storage

+

+ As mentioned earlier, Tonbo extends beyond a traditional KV database to support reading and + writing structured data. This capability is achieved by faithfully translating user-defined + data structures into Arrow schemas. Tonbo leverages the features provided by Arrow/Parquet to + support pushdown operations like limit, project, and filter: +

+ +

+ This means that Tonbo can precisely scan the data specified by the use, and skipping + irrelevant data, leading to potentially more than tenfold improvements in querying efficiency + when used appropriately. Additionally, according to compile-time type hint, Tonbo can + transmute bytes read from files into user-defined data types free. In many data-intensive + applications, serialization overhead can account for 30% to 50% of the total load. +

+

Asynchronous

+

Tonbo fully supports asychronous methods:

+ +

+ Using asynchronous interfaces not only increases the efficiency of concurrent operations, but + also allows Tonbo to provide concurrent access on resource-constrained devices, such as + browsers, mobile apps, and embedded Linux systems. The LSM Tree architecture, as mentioned in + previous sections, requires background tasks for garbage collection and compaction newly + written data, which can be challenging to implement in browsers since they cannot easily start + background tasks. By leveraging WASM and async Rust interfaces, we can build a complete + asynchronous task chain from OPFS to the JavaScript scheduler. In our upcoming blog posts, we + will describe in detail how we achieve this—bear witness! +

+
+
+						╔═Web APP══════════════════════╗
+						║                              ║
+						║ ┏━JS microtasks━━━━━━━━━━━━┓ ║
+						║ ┃                          ┃ ║
+						║ ┃ ┏╍WASM binding╍╍╍╍╍╍╍╍╍┓ ┃ ║
+						║ ┃ ┇                      ┇ ┃ ║
+						║ ┃ ┇ ┏━Tonbo async API━━┓ ┇ ┃ ║
+						║ ┃ ┇ ┃                  ┃ ┇ ┃ ║
+						║ ┃ ┇ ┃ ┏╍WASM binding╍┓ ┃ ┇ ┃ ║
+						║ ┃ ┇ ┃ ┇              ┇ ┃ ┇ ┃ ║
+						║ ┃ ┇ ┃ ┇   ┏━━━━━━┓   ┇ ┃ ┇ ┃ ║
+						║ ┃ ┇ ┃ ┇   ┃ OPFS ┃   ┇ ┃ ┇ ┃ ║
+						║ ┃ ┇ ┃ ┇   ┗━━━━━━┛   ┇ ┃ ┇ ┃ ║
+						║ ┃ ┇ ┃ ┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛ ┃ ┇ ┃ ║
+						║ ┃ ┇ ┗━━━━━━━━━━━━━━━━━━┛ ┇ ┃ ║
+						║ ┃ ┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┅┛ ┃ ║
+						║ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ║
+						╚══════════════════════════════╝
+		
+

Futures and Promises

+

As we prepare for our next release, we plan to introduce several new features:

+
	• Runtime Schema Declaration: Basic support for JavaScript (WASM) and Python.
+
	• S3 Integration: Implementation of tiered LSM Trees based on this integration.
+

+ We will soon offer a unified solution for both self-hosted and cloud environments, enabling + the creation of offline-first storage and backup services on any remote storage platform. + Designs and implementations are only valuable with real-world usage and feedback. If you + believe our work could benefit you, please reach out directly. We’re excited to collaborate + and provide any assistance we can. +

+
+
diff --git a/src/routes/blogs/+page.svelte b/src/routes/blogs/+page.svelte index 44062ad..2838856 100644 --- a/src/routes/blogs/+page.svelte +++ b/src/routes/blogs/+page.svelte @@ -11,7 +11,7 @@
-
+

Movable tree CRDTs and Loro's implementation

@@ -35,7 +35,7 @@
-
+

Movable tree CRDTs and Loro's implementation

@@ -54,10 +54,4 @@
- -
- © Copyright 2024-, Tonbo IO. -
diff --git a/src/routes/home-navigator.svelte b/src/routes/home-navigator.svelte index 89ac00d..b58cc8a 100644 --- a/src/routes/home-navigator.svelte +++ b/src/routes/home-navigator.svelte @@ -7,9 +7,9 @@