This is an automated email from the ASF dual-hosted git repository. ashvin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-xtable.git
commit a4ecfe862263fa70f166c0dafae835faa840f761 Author: Kyle Weller <[email protected]> AuthorDate: Wed Feb 28 21:36:18 2024 -0800 homepage and docs updated --- website/README.md | 6 +- website/docs/athena.md | 6 +- website/docs/biglake-metastore.md | 20 ++-- website/docs/bigquery.md | 10 +- website/docs/catalogs-index.md | 2 +- website/docs/demo/docker.md | 10 +- website/docs/fabric.md | 10 +- website/docs/features-and-limitations.md | 4 +- website/docs/glue-catalog.md | 8 +- website/docs/hms.md | 18 +-- website/docs/how-to.md | 16 +-- website/docs/integrations-index.md | 2 +- website/docs/presto.md | 14 +-- website/docs/query-engines-index.md | 4 +- website/docs/redshift.md | 4 +- website/docs/setup.md | 6 +- website/docs/snowflake.md | 2 +- website/docs/spark.md | 2 +- website/docs/starrocks.md | 10 +- website/docs/trino.md | 10 +- website/docs/unity-catalog.md | 10 +- website/docusaurus.config.js | 8 +- website/static/css/onetable-ad267e.webflow.css | 25 +++- website/static/images/apache-incubator.svg | 1 + website/static/images/destination-1.png | Bin 20714 -> 19506 bytes website/static/images/source-2.png | Bin 20828 -> 19568 bytes website/static/images/write-query.png | Bin 0 -> 189407 bytes website/static/images/xtable-hero.svg | 147 ++++++++++++++++++++++++ website/static/images/xtable-icon-white-svg.svg | 58 ++++++++++ website/static/images/xtable-icon-white.png | Bin 0 -> 83504 bytes website/static/images/xtable-icon.png | Bin 0 -> 115580 bytes website/static/images/xtable-svg.svg | 70 +++++++++++ website/static/images/xtable-white-svg.svg | 70 +++++++++++ website/static/images/xtable-white.png | Bin 0 -> 60873 bytes website/static/images/xtable-words-white.png | Bin 0 -> 15321 bytes website/static/images/xtable-words.png | Bin 0 -> 16972 bytes website/static/images/xtable.png | Bin 0 -> 77607 bytes website/static/index.html | 95 +++++++-------- 38 files changed, 502 insertions(+), 146 deletions(-) diff --git a/website/README.md b/website/README.md index b3f09725..f1de62a0 100644 --- a/website/README.md +++ b/website/README.md @@ -1,6 +1,6 @@ -# OneTable Website Source Code +# XTable Website Source Code -This repo hosts the source code of [OneTable](https://onetable.dev) +This repo hosts the source code of [XTable](https://onetable.dev) ## Prerequisite @@ -63,4 +63,4 @@ npm run serve ## Maintainers -OneTable Community +XTable Community diff --git a/website/docs/athena.md b/website/docs/athena.md index 9a9f5ca4..769cd460 100644 --- a/website/docs/athena.md +++ b/website/docs/athena.md @@ -4,7 +4,7 @@ title: "Amazon Athena" --- # Querying from Amazon Athena -To read a OneTable synced target table (regardless of the table format) in Amazon Athena, +To read a XTable synced target table (regardless of the table format) in Amazon Athena, you can create the table either by: * Using a DDL statement as mentioned in the following AWS docs: * [Example](https://docs.aws.amazon.com/athena/latest/ug/querying-hudi.html#querying-hudi-in-athena-creating-hudi-tables) for Hudi @@ -12,8 +12,8 @@ you can create the table either by: * [Example](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-creating-tables.html#querying-iceberg-creating-tables-query-editor) for Iceberg * Or maintain the tables in Glue Data Catalog -For an end to end tutorial that walks through S3, Glue Data Catalog and Athena to query a OneTable synced table, -you can refer to the OneTable [Glue Data Catalog Guide](/docs/glue-catalog). +For an end to end tutorial that walks through S3, Glue Data Catalog and Athena to query a XTable synced table, +you can refer to the XTable [Glue Data Catalog Guide](/docs/glue-catalog). :::danger LIMITATION for Hudi target format: To validate the Hudi targetFormat table results, you need to ensure that the query engine that you're using diff --git a/website/docs/biglake-metastore.md b/website/docs/biglake-metastore.md index 8eef46c0..2b108451 100644 --- a/website/docs/biglake-metastore.md +++ b/website/docs/biglake-metastore.md @@ -7,33 +7,33 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Syncing to BigLake Metastore -This document walks through the steps to register a OneTable synced Iceberg table in BigLake Metastore on GCP. +This document walks through the steps to register a XTable synced Iceberg table in BigLake Metastore on GCP. ## Pre-requisites 1. Source (Hudi/Delta) table(s) already written to Google Cloud Storage. If you don't have the source table written in GCS, you can follow the steps in [this](/docs/how-to#create-dataset) tutorial to set it up. -2. To ensure that the BigLake API's caller (your service account used by OneTable) has the +2. To ensure that the BigLake API's caller (your service account used by XTable) has the necessary permissions to create a BigLake table, ask your administrator to grant [BigLake Admin](https://cloud.google.com/iam/docs/understanding-roles#biglake.admin) (roles/bigquery.admin) access to the service account. -3. To ensure that the Storage Account API's caller (your service account used by OneTable) has the +3. To ensure that the Storage Account API's caller (your service account used by XTable) has the necessary permissions to write log/metadata files in GCS, ask your administrator to grant [Storage Object User](https://cloud.google.com/storage/docs/access-control/iam-roles) (roles/storage.objectUser) access to the service account. -4. If you're running OneTable outside GCP, you need to provide the machine access to interact with BigLake and GCS. +4. If you're running XTable outside GCP, you need to provide the machine access to interact with BigLake and GCS. To do so, store the permissions key for your service account in your machine using ```shell export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_key.json ``` -5. Clone the OneTable [repository](https://github.com/onetable-io/onetable) and create the +5. Clone the XTable [repository](https://github.com/onetable-io/onetable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) 6. Download the [BigLake Iceberg JAR](gs://spark-lib/biglake/biglake-catalog-iceberg1.2.0-0.1.0-with-dependencies.jar) locally. - OneTable requires the JAR to be present in the classpath. + XTable requires the JAR to be present in the classpath. ## Steps :::danger Important: Currently BigLake Metastore is only accessible through Google's [BigLake Rest APIs](https://cloud.google.com/bigquery/docs/reference/biglake/rest), and as such -OneTable requires you to setup the below items prior to running sync on your source dataset. +XTable requires you to setup the below items prior to running sync on your source dataset. * BigLake Catalog * BigLake Database ::: @@ -114,7 +114,7 @@ catalogOptions: warehouse: gs://path/to/warehouse ``` -From your terminal under the cloned OneTable directory, run the sync process using the below command. +From your terminal under the cloned XTable directory, run the sync process using the below command. ```shell md title="shell" java -cp utilities/target/utilities-0.1.0-SNAPSHOT-bundled.jar:/path/to/downloaded/biglake-catalog-iceberg1.2.0-0.1.0-with-dependencies.jar io.onetable.utilities.RunSync --datasetConfig my_config.yaml --icebergCatalogConfig catalog.yaml @@ -127,7 +127,7 @@ to interpret the data as an Iceberg table. ::: ### Validating the results -Once the sync succeeds, OneTable would have written the table directly to BigLake Metastore. +Once the sync succeeds, XTable would have written the table directly to BigLake Metastore. We can use `Try this method` option on Google's REST reference docs for [`projects.locations.catalogs.databases.tables.get`](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables/get) method to view the created table. @@ -137,6 +137,6 @@ projects/<yourProjectName>/locations/us-west1/catalogs/onetable/databases/onetab ## Conclusion In this guide we saw how to, -1. sync a source table to create Iceberg metadata with OneTable +1. sync a source table to create Iceberg metadata with XTable 2. catalog the data as an Iceberg table in BigLake Metastore 3. validate the table creation using `projects.locations.catalogs.databases.tables.get` method diff --git a/website/docs/bigquery.md b/website/docs/bigquery.md index 3ed4fcb8..d3f64cc4 100644 --- a/website/docs/bigquery.md +++ b/website/docs/bigquery.md @@ -6,11 +6,11 @@ title: "Google BigQuery" # Querying from Google BigQuery ### Iceberg tables -To read a OneTable synced [Iceberg table from BigQuery](https://cloud.google.com/bigquery/docs/iceberg-tables), +To read a XTable synced [Iceberg table from BigQuery](https://cloud.google.com/bigquery/docs/iceberg-tables), you have two options: #### [Using Iceberg JSON metadata file to create the Iceberg BigLake tables](https://cloud.google.com/bigquery/docs/iceberg-tables#create-using-metadata-file): -OneTable outputs metadata files for Iceberg target format syncs which can be used by BigQuery +XTable outputs metadata files for Iceberg target format syncs which can be used by BigQuery to read the BigLake tables. ```sql md title="sql" @@ -48,9 +48,9 @@ If you are not planning on using Iceberg, then you do not need to add these to y #### [Using BigLake Metastore to create the Iceberg BigLake tables](https://cloud.google.com/bigquery/docs/iceberg-tables#create-using-biglake-metastore): -You can use two options to register OneTable synced Iceberg tables to BigLake Metastore: -* To directly register the OneTable synced Iceberg table to BigLake Metastore, - follow the [OneTable guide to integrate with BigLake Metastore](/docs/biglake-metastore) +You can use two options to register XTable synced Iceberg tables to BigLake Metastore: +* To directly register the XTable synced Iceberg table to BigLake Metastore, + follow the [XTable guide to integrate with BigLake Metastore](/docs/biglake-metastore) * Use [stored procedures for Spark](https://cloud.google.com/bigquery/docs/spark-procedures) on BigQuery to register the table in BigLake Metastore and query the tables from BigQuery. diff --git a/website/docs/catalogs-index.md b/website/docs/catalogs-index.md index c821f133..4a9e212a 100644 --- a/website/docs/catalogs-index.md +++ b/website/docs/catalogs-index.md @@ -1,6 +1,6 @@ # Catalogs -Integrating the OneTable synced target tables to external catalogs requires an explicit registration. This guide will +Integrating the XTable synced target tables to external catalogs requires an explicit registration. This guide will walk you through the required steps. In addition to the information in this guide, we recommend you following official guidelines from the respective diff --git a/website/docs/demo/docker.md b/website/docs/demo/docker.md index 8848ae31..d610a877 100644 --- a/website/docs/demo/docker.md +++ b/website/docs/demo/docker.md @@ -3,22 +3,22 @@ sidebar_position: 1 title: "Docker Demo" --- -# Building interoperable tables using OneTable -This demo walks you through a fictional use case and the steps to add interoperability between table formats using OneTable. +# Building interoperable tables using XTable +This demo walks you through a fictional use case and the steps to add interoperability between table formats using XTable. For this purpose, a self-contained data infrastructure is brought up as Docker containers within your computer. ## Pre-requisites * Install Docker in your local machine -* Clone [OneTable GitHub repository](https://github.com/onetable-io/onetable) +* Clone [XTable GitHub repository](https://github.com/onetable-io/onetable) :::note NOTE: This demo was tested in both x86-64 and AArch64 based macOS operating systems ::: ## Setting up Docker cluster -After cloning the OneTable repository, change directory to `demo` and run the `start_demo.sh` script. -This script builds OneTable jars required for the demo and then spins up docker containers to start a Jupyter notebook +After cloning the XTable repository, change directory to `demo` and run the `start_demo.sh` script. +This script builds XTable jars required for the demo and then spins up docker containers to start a Jupyter notebook with Scala interpreter, Hive Metastore, Presto and Trino. ```shell md title="shell" diff --git a/website/docs/fabric.md b/website/docs/fabric.md index e83a9c24..0d3f671c 100644 --- a/website/docs/fabric.md +++ b/website/docs/fabric.md @@ -8,8 +8,8 @@ import TabItem from '@theme/TabItem'; # Querying from Microsoft Fabric This guide offers a short tutorial on how to query Apache Iceberg and Apache Hudi tables in Microsoft Fabric utilizing -the translation capabilities of OneTable. This tutorial is intended solely for demonstration and to verify the -compatibility of OneTable's output with Fabric. The tutorial leverages the currently[^1] available features in Fabric, like +the translation capabilities of XTable. This tutorial is intended solely for demonstration and to verify the +compatibility of XTable's output with Fabric. The tutorial leverages the currently[^1] available features in Fabric, like `Shortcuts`. @@ -26,7 +26,7 @@ to data in other file systems. ## Tutorial The objective of the following tutorial is to translate an Iceberg or Hudi table in ADLS storage account into Delta Lake -format using OneTable. After translation, this table will be accessible for querying from various Fabric engines, +format using XTable. After translation, this table will be accessible for querying from various Fabric engines, including T-SQL, Spark, and Power BI. ### Pre-requisites @@ -51,8 +51,8 @@ spark.hadoop.fs.azure.account.oauth2.client.id=<client-id> spark.hadoop.fs.azure.account.oauth2.client.secret=<client-secret> ``` -### Step 2. Translate source table to Delta Lake format using OneTable -This step translates the table `people` originally in Iceberg or Hudi format to Delta Lake format using OneTable. +### Step 2. Translate source table to Delta Lake format using XTable +This step translates the table `people` originally in Iceberg or Hudi format to Delta Lake format using XTable. The primary actions for the translation are documented in [Creating your first interoperable table - Running Sync](/docs/how-to#running-sync) tutorial section. However, since the table is in ADLS, you need to update datasets path and hadoop configurations. diff --git a/website/docs/features-and-limitations.md b/website/docs/features-and-limitations.md index 6fd6aeb0..d2290bc4 100644 --- a/website/docs/features-and-limitations.md +++ b/website/docs/features-and-limitations.md @@ -8,9 +8,9 @@ import TabItem from '@theme/TabItem'; # Features and Limitations ## Features -OneTable provides users with the ability to translate metadata from one table format to another. +XTable provides users with the ability to translate metadata from one table format to another. -OneTable provides two sync modes, "incremental" and "full." The incremental mode is more lightweight and has better performance, especially on large tables. If there is anything that prevents the incremental mode from working properly, the tool will fall back to the full sync mode. +XTable provides two sync modes, "incremental" and "full." The incremental mode is more lightweight and has better performance, especially on large tables. If there is anything that prevents the incremental mode from working properly, the tool will fall back to the full sync mode. This sync provides users with the following: 1. Syncing of data files along with their column level statistics and partition metadata diff --git a/website/docs/glue-catalog.md b/website/docs/glue-catalog.md index 159eadf1..4f9a0e3a 100644 --- a/website/docs/glue-catalog.md +++ b/website/docs/glue-catalog.md @@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Syncing to Glue Data Catalog -This document walks through the steps to register a OneTable synced table in Glue Data Catalog on AWS. +This document walks through the steps to register a XTable synced table in Glue Data Catalog on AWS. ## Pre-requisites 1. Source table(s) (Hudi/Delta/Iceberg) already written to Amazon S3. @@ -18,12 +18,12 @@ This document walks through the steps to register a OneTable synced table in Glu [AWS docs](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) and also set up access credentials by following the steps [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) -3. Clone the OneTable [repository](https://github.com/onetable-io/onetable) and create the +3. Clone the XTable [repository](https://github.com/onetable-io/onetable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) ## Steps ### Running sync -Create `my_config.yaml` in the cloned OneTable directory. +Create `my_config.yaml` in the cloned XTable directory. <Tabs groupId="table-format" @@ -193,6 +193,6 @@ SELECT * FROM onetable_synced_db.<table_name>; ## Conclusion In this guide we saw how to, -1. sync a source table to create metadata for the desired target table formats using OneTable +1. sync a source table to create metadata for the desired target table formats using XTable 2. catalog the data in the target table format in Glue Data Catalog 3. query the target table using Amazon Athena diff --git a/website/docs/hms.md b/website/docs/hms.md index 2c8dad21..e9d26def 100644 --- a/website/docs/hms.md +++ b/website/docs/hms.md @@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Syncing to Hive Metastore -This document walks through the steps to register a OneTable synced table on Hive Metastore (HMS). +This document walks through the steps to register a XTable synced table on Hive Metastore (HMS). ## Pre-requisites 1. Source table(s) (Hudi/Delta/Iceberg) already written to your local storage or external storage locations like S3/GCS/ADLS. @@ -16,14 +16,14 @@ This document walks through the steps to register a OneTable synced table on Hiv 2. A compute instance where you can run Apache Spark. This can be your local machine, docker, or a distributed system like Amazon EMR, Google Cloud's Dataproc, Azure HDInsight etc. This is a required step to register the table in HMS using a Spark client. -3. Clone the OneTable [repository](https://github.com/onetable-io/onetable) and create the +3. Clone the XTable [repository](https://github.com/onetable-io/onetable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) 4. This guide also assumes that you have configured the Hive Metastore locally or on EMR/Dataproc/HDInsight and is already running. ## Steps ### Running sync -Create `my_config.yaml` in the cloned OneTable directory. +Create `my_config.yaml` in the cloned XTable directory. <Tabs groupId="table-format" @@ -86,7 +86,7 @@ datasets: * ADLS - `abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>` ::: -From your terminal under the cloned OneTable directory, run the sync process using the below command. +From your terminal under the cloned XTable directory, run the sync process using the below command. ```shell md title="shell" java -jar utilities/target/utilities-0.1.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml ``` @@ -97,7 +97,7 @@ directory with relevant metadata files that helps query engines to interpret the ::: ### Register the target table in Hive Metastore -Now you need to register the OneTable synced target table in Hive Metastore. +Now you need to register the XTable synced target table in Hive Metastore. <Tabs groupId="table-format" @@ -137,7 +137,7 @@ if you have your source table in S3/GCS/ADLS i.e. Now you will be able to query the created table directly as a Hudi table from the same `spark` session or -using query engines like `Presto` and/or `Trino`. Check out the guides for querying the OneTable synced tables on +using query engines like `Presto` and/or `Trino`. Check out the guides for querying the XTable synced tables on [Presto](/docs/presto) or [Trino](/docs/trino) query engines for more information. ```sql md title="sql" @@ -171,7 +171,7 @@ if you have your source table in S3/GCS/ADLS i.e. ::: Now you will be able to query the created table directly as a Delta table from the same `spark` session or -using query engines like `Presto` and/or `Trino`. Check out the guides for querying the OneTable synced tables on +using query engines like `Presto` and/or `Trino`. Check out the guides for querying the XTable synced tables on [Presto](/docs/presto) or [Trino](/docs/trino) query engines for more information. ```sql md title="sql" @@ -211,7 +211,7 @@ in S3/GCS/ADLS i.e. ::: Now you will be able to query the created table directly as an Iceberg table from the same `spark` session or -using query engines like `Presto` and/or `Trino`. Check out the guides for querying the OneTable synced tables on +using query engines like `Presto` and/or `Trino`. Check out the guides for querying the XTable synced tables on [Presto](/docs/presto) or [Trino](/docs/trino) query engines for more information. ```sql md title="sql" @@ -223,6 +223,6 @@ SELECT * FROM iceberg_db.<table_name>; ## Conclusion In this guide we saw how to, -1. sync a source table to create metadata for the desired target table formats using OneTable +1. sync a source table to create metadata for the desired target table formats using XTable 2. catalog the data in the target table format in Hive Metastore 3. query the target table using Spark diff --git a/website/docs/how-to.md b/website/docs/how-to.md index cb486d55..21795da7 100644 --- a/website/docs/how-to.md +++ b/website/docs/how-to.md @@ -9,13 +9,13 @@ import TabItem from '@theme/TabItem'; # Creating your first interoperable table :::danger Important -Using OneTable to sync your source tables in different target format involves running sync on your +Using XTable to sync your source tables in different target format involves running sync on your current dataset using a bundled jar. You can create this bundled jar by following the instructions -on the [Installation page](/docs/setup). Read through OneTable's +on the [Installation page](/docs/setup). Read through XTable's [GitHub page](https://github.com/onetable-io/onetable#building-the-project-and-running-tests) for more information. ::: -In this tutorial we will look at how to use OneTable to add interoperability between table formats. +In this tutorial we will look at how to use XTable to add interoperability between table formats. For example, you can expose a table ingested with Hudi as an Iceberg and/or Delta Lake table without copying or moving the underlying data files used for that table while maintaining a similar commit history to enable proper point in time queries. @@ -23,7 +23,7 @@ history to enable proper point in time queries. ## Pre-requisites 1. A compute instance where you can run Apache Spark. This can be your local machine, docker, or a distributed service like Amazon EMR, Google Cloud's Dataproc, Azure HDInsight etc -2. Clone the OneTable [repository](https://github.com/onetable-io/onetable) and create the +2. Clone the XTable [repository](https://github.com/onetable-io/onetable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) 3. Optional: Setup access to write to and/or read from distributed storage services like: * Amazon S3 by following the steps @@ -33,7 +33,7 @@ history to enable proper point in time queries. * Google Cloud Storage by following the steps [here](https://cloud.google.com/iam/docs/keys-create-delete#creating) -For the purpose of this tutorial, we will walk through the steps to using OneTable locally. +For the purpose of this tutorial, we will walk through the steps to using XTable locally. ## Steps @@ -348,7 +348,7 @@ Authentication for GCP requires service account credentials to be exported. i.e. `export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_key.json` ::: -In your terminal under the cloned OneTable directory, run the below command. +In your terminal under the cloned XTable directory, run the below command. ```shell md title="shell" java -jar utilities/target/utilities-0.1.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml @@ -359,9 +359,9 @@ At this point, if you check your local path, you will be able to see the necessa commit history, partitions, and column stats that helps query engines to interpret the data in the target table format. ## Conclusion -In this tutorial, we saw how to create a source table and use OneTable to create the metadata files +In this tutorial, we saw how to create a source table and use XTable to create the metadata files that can be used to query the source table in different target table formats. ## Next steps -Go through the [Catalog Integration guides](/docs/catalogs-index) to register the OneTable synced tables +Go through the [Catalog Integration guides](/docs/catalogs-index) to register the XTable synced tables in different data catalogs. diff --git a/website/docs/integrations-index.md b/website/docs/integrations-index.md index bb92a4c3..cc4ddb64 100644 --- a/website/docs/integrations-index.md +++ b/website/docs/integrations-index.md @@ -1,6 +1,6 @@ # Integrations -This guide will serve as a reference to integrate OneTable synced tables to various +This guide will serve as a reference to integrate XTable synced tables to various catalogs and query engines. In addition to the information in this guide, we recommend you following official guidelines diff --git a/website/docs/presto.md b/website/docs/presto.md index 14832654..2fee5352 100644 --- a/website/docs/presto.md +++ b/website/docs/presto.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; # Querying from Presto Presto allows you to query table formats like Hudi, Delta and Iceberg using connectors. The same setup will -work for OneTable synced tables as well. +work for XTable synced tables as well. For more information and required configurations refer to: * [Hudi Connector](https://prestodb.io/docs/current/connector/hudi.html) @@ -19,12 +19,12 @@ For more information and required configurations refer to: :::danger Delta Lake: Delta Lake supports [generated columns](https://docs.databricks.com/en/delta/generated-columns.html) which are a special type of column whose values are automatically generated based on a user-specified function -over other columns in the Delta table. During sync, OneTable uses the same logic to generate partition columns wherever required. -Currently, the generated columns from OneTable sync shows `NULL` when queried from Presto CLI. +over other columns in the Delta table. During sync, XTable uses the same logic to generate partition columns wherever required. +Currently, the generated columns from XTable sync shows `NULL` when queried from Presto CLI. ::: For hands on experimentation, please follow [Creating your first interoperable table](/docs/how-to) tutorial -to create OneTable synced tables followed by [Hive Metastore](/docs/hms) tutorial to register the target table +to create XTable synced tables followed by [Hive Metastore](/docs/hms) tutorial to register the target table in Hive Metastore. Once done, follow the below high level steps: 1. If you are working with a self-managed Presto service, from the presto-server directory run `./bin/launcher run` 2. From the directory where you have installed presto-cli: login to presto-cli by running `./presto-cli` @@ -42,7 +42,7 @@ values={[ <TabItem value="hudi"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Hudi table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Hudi table from Presto using the below query. ```sql md title="sql" SELECT * FROM hudi.hudi_db.<table_name>; @@ -53,7 +53,7 @@ SELECT * FROM hudi.hudi_db.<table_name>; <TabItem value="delta"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Delta table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Delta table from Presto using the below query. ```sql md title="sql" SELECT * FROM delta.delta_db.<table_name>; @@ -64,7 +64,7 @@ SELECT * FROM delta.delta_db.<table_name>; <TabItem value="iceberg"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Iceberg table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Iceberg table from Presto using the below query. ```sql md title="sql" SELECT * FROM iceberg.iceberg_db.<table_name>; diff --git a/website/docs/query-engines-index.md b/website/docs/query-engines-index.md index 24977f99..46266259 100644 --- a/website/docs/query-engines-index.md +++ b/website/docs/query-engines-index.md @@ -1,7 +1,7 @@ # Query Engines -OneTable synced tables behave the similarly to native tables which means you do not need any additional configurations -on query engines' side to work with tables synced by OneTable. This guide will delve into the details of working +XTable synced tables behave the similarly to native tables which means you do not need any additional configurations +on query engines' side to work with tables synced by XTable. This guide will delve into the details of working with various query engines. For more information on how to sync a source format table to create necessary log files to be inferred as a different format table, refer to [Creating your first interoperable table guide](/docs/how-to) diff --git a/website/docs/redshift.md b/website/docs/redshift.md index 0aec1070..17d1ec73 100644 --- a/website/docs/redshift.md +++ b/website/docs/redshift.md @@ -4,7 +4,7 @@ title: "Amazon Redshift Spectrum" --- # Querying from Redshift Spectrum -To read a OneTable synced target table (regardless of the table format) in Amazon Redshift, +To read a XTable synced target table (regardless of the table format) in Amazon Redshift, users have to create an external schema and refer to the external data catalog that contains the table. Redshift infers the table's schema and format from the external catalog/database directly. For more information on creating external schemas, refer to @@ -41,7 +41,7 @@ You have two options to create and query Delta tables in Redshift Spectrum: 1. Follow the steps in [this](https://docs.delta.io/latest/redshift-spectrum-integration.html#set-up-a-redshift-spectrum-to-delta-lake-integration-and-query-delta-tables) article to set up a Redshift Spectrum to Delta Lake integration and query Delta tables directly from Amazon S3. -2. While creating the Glue Crawler to crawl the OneTable synced Delta table, choose the `Create Symlink tables` +2. While creating the Glue Crawler to crawl the XTable synced Delta table, choose the `Create Symlink tables` option in `Add data source` pop-up window. This will add `_symlink_format_manifest` folder with manifest files in the table root path. diff --git a/website/docs/setup.md b/website/docs/setup.md index b1e5901b..cd8d86bf 100644 --- a/website/docs/setup.md +++ b/website/docs/setup.md @@ -1,10 +1,10 @@ # Installation -This page covers the essential steps to setup OneTable in your environment. +This page covers the essential steps to setup XTable in your environment. ## Pre-requisites 1. Building the project requires Java 11 and Maven to be setup and configured using PATH or environment variables. -2. Clone the OneTable project GitHub [repository](https://github.com/onetable-io/onetable) in your environment. +2. Clone the XTable project GitHub [repository](https://github.com/onetable-io/onetable) in your environment. ## Steps #### Building the project @@ -22,5 +22,5 @@ mvn clean package -DskipTests For more information on the steps, follow the project's GitHub [README.md](https://github.com/onetable-io/onetable/blob/main/README.md) ## Next Steps -See the [Quickstart](/docs/how-to) guide to learn to use OneTable to add interoperability between +See the [Quickstart](/docs/how-to) guide to learn to use XTable to add interoperability between different table formats. \ No newline at end of file diff --git a/website/docs/snowflake.md b/website/docs/snowflake.md index 6d632fe7..83d87a11 100644 --- a/website/docs/snowflake.md +++ b/website/docs/snowflake.md @@ -14,7 +14,7 @@ Iceberg on Snowflake is currently supported in ::: ## Steps: -These are high level steps to help you integrate OneTable synced Iceberg tables on Snowflake. For more additional information +These are high level steps to help you integrate XTable synced Iceberg tables on Snowflake. For more additional information refer to the [Getting started with Iceberg tables](https://docs.snowflake.com/LIMITEDACCESS/iceberg-2023/tables-iceberg-getting-started). ### Create an external volume diff --git a/website/docs/spark.md b/website/docs/spark.md index 7490c92a..876c0300 100644 --- a/website/docs/spark.md +++ b/website/docs/spark.md @@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Querying from Apache Spark -To read a OneTable synced target table (regardless of the table format) in Apache Spark locally or on services like +To read a XTable synced target table (regardless of the table format) in Apache Spark locally or on services like Amazon EMR, Google Cloud's Dataproc, Azure HDInsight, or Databricks, you do not need additional jars or configs other than what is needed by the respective table formats. diff --git a/website/docs/starrocks.md b/website/docs/starrocks.md index 4f282cf0..de7c9afd 100644 --- a/website/docs/starrocks.md +++ b/website/docs/starrocks.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; # Querying from StarRocks StarRocks allows you to query table formats like Hudi, Delta and Iceberg tables using our [external catalog](https://docs.starrocks.io/docs/data_source/catalog/catalog_overview/) feature. -Users do not need additional configurations to work with OneTable synced tables. +Users do not need additional configurations to work with XTable synced tables. For more information and required configurations refer to: * [Hudi Catalog](https://docs.starrocks.io/docs/data_source/catalog/hudi_catalog/) @@ -17,7 +17,7 @@ For more information and required configurations refer to: * [Iceberg Catalog](https://docs.starrocks.io/docs/data_source/catalog/iceberg_catalog/) For hands on experimentation, please follow [Creating your first interoperable table](/docs/how-to#create-dataset) -to create OneTable synced tables followed by [Hive Metastore](/docs/hms) to register the target table +to create XTable synced tables followed by [Hive Metastore](/docs/hms) to register the target table in Hive Metastore. Once done, please follow the below high level steps: 1. Start the StarRocks server 2. From the directory where you have installed mysql-cli: login by running `mysql -P 9030 -h 127.0.0.1 -u root --prompt="StarRocks > "`. @@ -34,7 +34,7 @@ values={[ <TabItem value="hudi"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Hudi table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Hudi table from StarRocks using the below query. ```sql md title="sql" CREATE EXTERNAL CATALOG unified_catalog_hms PROPERTIES ("type" = "unified","unified.metastore.type" = "hive", "hive.metastore.uris" = "thrift://hivemetastore:9083" ); @@ -46,7 +46,7 @@ SELECT * FROM unified_catalog_hms.hudi_db.<table_name>; <TabItem value="delta"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Delta table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Delta table from StarRocks using the below query. ```sql md title="sql" CREATE EXTERNAL CATALOG unified_catalog_hms PROPERTIES ("type" = "unified","unified.metastore.type" = "hive", "hive.metastore.uris" = "thrift://hivemetastore:9083" ); @@ -58,7 +58,7 @@ SELECT * FROM unified_catalog_hms.delta_db.<table_name>; <TabItem value="iceberg"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Iceberg table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Iceberg table from StarRocks using the below query. ```sql md title="sql" CREATE EXTERNAL CATALOG unified_catalog_hms PROPERTIES ("type" = "unified","unified.metastore.type" = "hive", "hive.metastore.uris" = "thrift://hivemetastore:9083" ); diff --git a/website/docs/trino.md b/website/docs/trino.md index d384679a..5ec91169 100644 --- a/website/docs/trino.md +++ b/website/docs/trino.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; # Querying from Trino Trino just like Presto allows you to query table formats like Hudi, Delta and Iceberg tables using connectors. -Users do not need additional configurations to work with OneTable synced tables. +Users do not need additional configurations to work with XTable synced tables. For more information and required configurations refer to: * [Hudi Connector](https://trino.io/docs/current/connector/hudi.html) @@ -17,7 +17,7 @@ For more information and required configurations refer to: * [Iceberg Connector](https://trino.io/docs/current/connector/iceberg.html) For hands on experimentation, please follow [Creating your first interoperable table](/docs/how-to#create-dataset) -to create OneTable synced tables followed by [Hive Metastore](/docs/hms) to register the target table +to create XTable synced tables followed by [Hive Metastore](/docs/hms) to register the target table in Hive Metastore. Once done, please follow the below high level steps: 1. Start the Trino server manually if you are working with a non-managed Trino service: from the trino-server directory run `./bin/launcher run` @@ -36,7 +36,7 @@ values={[ <TabItem value="hudi"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Hudi table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Hudi table from Trino using the below query. ```sql md title="sql" SELECT * FROM hudi.hudi_db.<table_name>; @@ -47,7 +47,7 @@ SELECT * FROM hudi.hudi_db.<table_name>; <TabItem value="delta"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Delta table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Delta table from Trino using the below query. ```sql md title="sql" SELECT * FROM delta.delta_db.<table_name>; @@ -58,7 +58,7 @@ SELECT * FROM delta.delta_db.<table_name>; <TabItem value="iceberg"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the OneTable synced Iceberg table +If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Iceberg table from Trino using the below query. ```sql md title="sql" SELECT * FROM iceberg.iceberg_db.<table_name>; diff --git a/website/docs/unity-catalog.md b/website/docs/unity-catalog.md index fff98d27..ce06f5e8 100644 --- a/website/docs/unity-catalog.md +++ b/website/docs/unity-catalog.md @@ -4,7 +4,7 @@ title: "Unity Catalog" --- # Syncing to Unity Catalog -This document walks through the steps to register a OneTable synced Delta table in Unity Catalog on Databricks. +This document walks through the steps to register a XTable synced Delta table in Unity Catalog on Databricks. ## Pre-requisites 1. Source table(s) (Hudi/Iceberg) already written to external storage locations like S3/GCS/ADLS. @@ -16,12 +16,12 @@ This document walks through the steps to register a OneTable synced Delta table * Follow the steps outlined [here](https://docs.databricks.com/en/storage/azure-storage.html) for Azure Data Lake Storage Gen2 and Blob Storage. 3. Create a Unity Catalog metastore in Databricks as outlined [here](https://docs.gcp.databricks.com/data-governance/unity-catalog/create-metastore.html#create-a-unity-catalog-metastore). 4. Create an external location in Databricks as outlined [here](https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-ddl-create-location.html). -5. Clone the OneTable [repository](https://github.com/onetable-io/onetable) and create the +5. Clone the XTable [repository](https://github.com/onetable-io/onetable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) ## Steps ### Running sync -Create `my_config.yaml` in the cloned OneTable directory. +Create `my_config.yaml` in the cloned XTable directory. ```yaml md title="yaml" sourceFormat: HUDI|ICEBERG # choose only one @@ -39,7 +39,7 @@ datasets: 2. And replace with appropriate values for `sourceFormat`, and `tableName` fields. ::: -From your terminal under the cloned OneTable directory, run the sync process using the below command. +From your terminal under the cloned XTable directory, run the sync process using the below command. ```shell md title="shell" java -jar utilities/target/utilities-0.1.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml @@ -77,6 +77,6 @@ SELECT * FROM onetable.synced_delta_schema.<table_name>; ## Conclusion In this guide we saw how to, -1. sync a source table to create metadata for the desired target table formats using OneTable +1. sync a source table to create metadata for the desired target table formats using XTable 2. catalog the data in Delta format in Unity Catalog on Databricks 3. query the Delta table using Databricks SQL editor diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index fab6a6e4..285a51d4 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -6,7 +6,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'OneTable', + title: 'XTable', favicon: 'images/onetable_favicon.png', url: 'https://onetable.dev', baseUrl: '/', @@ -45,12 +45,12 @@ const config = { /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ navbar: { - title: 'OneTable', + title: 'XTable', logo: { - alt: 'OneTable Logo', + alt: 'XTable Logo', href: 'pathname:///', target: '_self', - src: 'images/OneTableLogo.png', + src: 'images/xtable.png', }, items: [ { diff --git a/website/static/css/onetable-ad267e.webflow.css b/website/static/css/onetable-ad267e.webflow.css index 020eb9ee..646985db 100644 --- a/website/static/css/onetable-ad267e.webflow.css +++ b/website/static/css/onetable-ad267e.webflow.css @@ -112,8 +112,8 @@ background-image: url('../images/GR-BG1.svg'), linear-gradient(135deg, #04548c, #043c74); background-position: 0 0, 0 0; background-size: auto, auto; - padding-top: 130px; - padding-bottom: 130px; + padding-top: 40px; + padding-bottom: 80px; } .hero-container { @@ -405,6 +405,16 @@ display: flex; } +.callout-section{ + padding: 10px; + background: beige; + color: var(--black); + text-align: center; + /* text-transform: uppercase; */ + /* margin-bottom: 40px; */ + font-size: 16px; + line-height: 22px; +} .logo-section { background-image: linear-gradient(#ecf1f4, #f7f7f8); padding-top: 120px; @@ -874,8 +884,12 @@ .image-8 { width: 100%; + height: 56px; +} +.xtable-title{ + height: 120px; + margin-bottom: 10px; } - .main-container-footer { max-width: 1200px; justify-content: space-between; @@ -2771,4 +2785,9 @@ font-weight: 700; font-style: italic; font-display: swap; +} + +.footer__bottom text--center{ + margin-left: 50px; + margin-right: 50px; } \ No newline at end of file diff --git a/website/static/images/apache-incubator.svg b/website/static/images/apache-incubator.svg new file mode 100644 index 00000000..1b4c3643 --- /dev/null +++ b/website/static/images/apache-incubator.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 473.26 110.22"><defs><style>.cls-1,.cls-2{fill:#fff;}.cls-1{fill-rule:evenodd;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><polygon class="cls-1" points="445.81 13.29 467.03 13.29 467.03 15.29 448.03 15.29 448.03 27.09 465.11 27.09 465.11 29.09 448.03 29.09 448.03 41.1 467.24 41.1 467.24 43.11 445.81 43.11 445.81 13.29"/><polygon class="cls-1" points="377.65 13.29 379.86 13.29 379.86 27.13 3 [...] \ No newline at end of file diff --git a/website/static/images/destination-1.png b/website/static/images/destination-1.png index 03945858..797cffd4 100644 Binary files a/website/static/images/destination-1.png and b/website/static/images/destination-1.png differ diff --git a/website/static/images/source-2.png b/website/static/images/source-2.png index 6f000df8..3d05866a 100644 Binary files a/website/static/images/source-2.png and b/website/static/images/source-2.png differ diff --git a/website/static/images/write-query.png b/website/static/images/write-query.png new file mode 100644 index 00000000..f1cb2dd7 Binary files /dev/null and b/website/static/images/write-query.png differ diff --git a/website/static/images/xtable-hero.svg b/website/static/images/xtable-hero.svg new file mode 100644 index 00000000..1925ff05 --- /dev/null +++ b/website/static/images/xtable-hero.svg @@ -0,0 +1,147 @@ +<svg width="736" height="710" viewBox="0 0 736 710" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_380_2367)"> +<g style="mix-blend-mode:hue" opacity="0.15"> +<g style="mix-blend-mode:color-dodge" filter="url(#filter0_f_380_2367)"> +<path d="M422.184 420.14C476.081 436.068 539.3 407.815 563.387 357.037V357.037C587.473 306.258 563.307 252.182 509.409 236.255L413.255 207.84C359.358 191.912 296.139 220.165 272.052 270.943V270.943C247.966 321.722 272.132 375.798 326.03 391.725L422.184 420.14Z" fill="url(#paint0_linear_380_2367)"/> +</g> +<g style="mix-blend-mode:color-dodge" filter="url(#filter1_f_380_2367)"> +<path d="M317.816 617.858C377.885 635.61 448.343 604.122 475.187 547.53L497.376 500.753C524.22 444.161 497.287 383.893 437.218 366.142V366.142C377.149 348.39 306.691 379.878 279.847 436.47L257.659 483.247C230.814 539.839 257.748 600.107 317.816 617.858V617.858Z" fill="url(#paint1_linear_380_2367)"/> +</g> +<g style="mix-blend-mode:color-dodge" filter="url(#filter2_f_380_2367)"> +<path d="M150.358 398.765C168.84 461.744 236.781 507.658 302.109 501.317V501.317C367.437 494.975 405.414 438.78 386.932 375.8L366.038 304.599C347.556 241.62 279.615 195.706 214.287 202.047V202.047C148.959 208.389 110.982 264.585 129.464 327.564L150.358 398.765Z" fill="url(#paint2_linear_380_2367)"/> +</g> +</g> +<g filter="url(#filter3_dddi_380_2367)"> +<ellipse cx="360" cy="549.284" rx="270" ry="67.2843" fill="#EEF9FF"/> +<ellipse cx="360" cy="549.284" rx="270" ry="67.2843" fill="url(#paint3_radial_380_2367)"/> +<ellipse cx="360" cy="549.284" rx="270" ry="67.2843" fill="url(#paint4_radial_380_2367)"/> +<ellipse cx="360" cy="549.284" rx="270" ry="67.2843" fill="url(#paint5_radial_380_2367)"/> +<ellipse cx="360" cy="549.284" rx="270" ry="67.2843" fill="url(#paint6_radial_380_2367)" fill-opacity="0.2"/> +</g> +<path d="M227.855 108.836L151.698 108.652L110.855 179.457L187.012 179.641L227.855 108.836Z" fill="#5DA9E5"/> +<path d="M281.023 470.496L319.27 536.432L397.682 535.868L360.473 471.733L281.023 470.496Z" fill="#C5C5C5"/> +<path d="M447.645 179.455L279.925 468.69L360.393 471.727L528.874 179.651L447.645 179.455Z" fill="#3587C8"/> +<path d="M188.273 179.293L112.146 179.108L321.093 539.392L397.22 539.577L188.273 179.293Z" fill="url(#paint7_linear_380_2367)"/> +<path d="M113.796 178.152L152.019 244.061L486.949 244.876L448.725 178.967L113.796 178.152Z" fill="url(#paint8_linear_380_2367)"/> +<path d="M360.388 471.741L397.594 535.87L567.125 245.559L528.882 179.629L360.388 471.741Z" fill="url(#paint9_linear_380_2367)"/> +<path d="M223.495 244.537L396.112 540.155L436.958 469.341L307.572 244.503L223.495 244.537Z" fill="url(#paint10_linear_380_2367)"/> +<path d="M360.388 471.741L399.261 404.35L436.958 469.341L396.112 540.155L356.423 471.731L360.388 471.741Z" fill="url(#paint11_linear_380_2367)"/> +<path d="M528.882 179.629L567.125 245.559L607.973 174.745L569.73 108.815L528.882 179.629Z" fill="url(#paint12_linear_380_2367)"/> +<path d="M447.581 179.44L528.789 179.638L399.214 404.244L358.44 333.96L447.581 179.44Z" fill="url(#paint13_linear_380_2367)"/> +<path d="M528.789 179.638L569.623 108.861L153.443 107.848L112.612 178.625L447.581 179.44L528.789 179.638Z" fill="url(#paint14_linear_380_2367)"/> +</g> +<defs> +<filter id="filter0_f_380_2367" x="152.424" y="93.0975" width="530.591" height="441.786" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/> +<feGaussianBlur stdDeviation="55.15" result="effect1_foregroundBlur_380_2367"/> +</filter> +<filter id="filter1_f_380_2367" x="136.962" y="250.89" width="481.11" height="482.219" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/> +<feGaussianBlur stdDeviation="55.15" result="effect1_foregroundBlur_380_2367"/> +</filter> +<filter id="filter2_f_380_2367" x="14.49" y="91.1619" width="487.416" height="521.04" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/> +<feGaussianBlur stdDeviation="55.15" result="effect1_foregroundBlur_380_2367"/> +</filter> +<filter id="filter3_dddi_380_2367" x="20" y="412" width="670" height="284.568" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset dy="10"/> +<feGaussianBlur stdDeviation="30"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0.159444 0 0 0 0 0.5576 0 0 0 0 0.683333 0 0 0 0.8 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_380_2367"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset dy="20"/> +<feGaussianBlur stdDeviation="30"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0.384635 0 0 0 0 0.46376 0 0 0 0 0.879167 0 0 0 0.2 0"/> +<feBlend mode="normal" in2="effect1_dropShadow_380_2367" result="effect2_dropShadow_380_2367"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset dx="-20" dy="-20"/> +<feGaussianBlur stdDeviation="25"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0.713648 0 0 0 0 0.457188 0 0 0 0 0.870833 0 0 0 0.4 0"/> +<feBlend mode="normal" in2="effect2_dropShadow_380_2367" result="effect3_dropShadow_380_2367"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect3_dropShadow_380_2367" result="shape"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="5"/> +<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/> +<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/> +<feBlend mode="normal" in2="shape" result="effect4_innerShadow_380_2367"/> +</filter> +<linearGradient id="paint0_linear_380_2367" x1="487.969" y1="417.846" x2="356.972" y2="215.867" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="white"/> +</linearGradient> +<linearGradient id="paint1_linear_380_2367" x1="408.46" y1="614.892" x2="260.501" y2="468.18" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="white"/> +</linearGradient> +<linearGradient id="paint2_linear_380_2367" x1="196.034" y1="468.458" x2="293.35" y2="235.005" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="white"/> +</linearGradient> +<radialGradient id="paint3_radial_380_2367" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(272.557 629.185) rotate(-15.6851) scale(326.653 203.105)"> +<stop stop-color="#6681E2" stop-opacity="0.81"/> +<stop offset="0.953677" stop-color="#6681E2" stop-opacity="0"/> +</radialGradient> +<radialGradient id="paint4_radial_380_2367" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(198.92 451.512) rotate(105.229) scale(146.004 446.39)"> +<stop stop-color="#1D52A0"/> +<stop offset="1" stop-color="#1D52A0" stop-opacity="0.18"/> +</radialGradient> +<radialGradient id="paint5_radial_380_2367" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(657.614 460.974) rotate(164.671) scale(588.553 256.826)"> +<stop offset="0.196645" stop-color="#13E5D5" stop-opacity="0.5"/> +<stop offset="0.710624" stop-color="#13E5D5" stop-opacity="0.06"/> +</radialGradient> +<radialGradient id="paint6_radial_380_2367" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(360 505.129) rotate(90) scale(111.44 595.227)"> +<stop stop-color="white" stop-opacity="0.49"/> +<stop offset="1" stop-color="white" stop-opacity="0.19"/> +</radialGradient> +<linearGradient id="paint7_linear_380_2367" x1="422.015" y1="178.101" x2="282.867" y2="553.196" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#084D7E"/> +<stop offset="0.403607" stop-color="#10639C"/> +<stop offset="1" stop-color="#094B79"/> +</linearGradient> +<linearGradient id="paint8_linear_380_2367" x1="422.015" y1="178.101" x2="282.867" y2="553.196" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#084D7E"/> +<stop offset="0.403607" stop-color="#10639C"/> +<stop offset="1" stop-color="#094B79"/> +</linearGradient> +<linearGradient id="paint9_linear_380_2367" x1="466.652" y1="83.3707" x2="358.693" y2="581.277" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint10_linear_380_2367" x1="466.652" y1="83.3707" x2="358.693" y2="581.277" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint11_linear_380_2367" x1="466.652" y1="83.3707" x2="358.693" y2="581.277" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint12_linear_380_2367" x1="466.652" y1="83.3707" x2="358.693" y2="581.277" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint13_linear_380_2367" x1="112.12" y1="103.696" x2="472.157" y2="341.069" gradientUnits="userSpaceOnUse"> +<stop stop-color="#64AEE9"/> +<stop offset="1" stop-color="#277CBF"/> +</linearGradient> +<linearGradient id="paint14_linear_380_2367" x1="112.12" y1="103.696" x2="472.157" y2="341.069" gradientUnits="userSpaceOnUse"> +<stop stop-color="#64AEE9"/> +<stop offset="1" stop-color="#277CBF"/> +</linearGradient> +<clipPath id="clip0_380_2367"> +<rect width="736" height="710" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/website/static/images/xtable-icon-white-svg.svg b/website/static/images/xtable-icon-white-svg.svg new file mode 100644 index 00000000..8aae621b --- /dev/null +++ b/website/static/images/xtable-icon-white-svg.svg @@ -0,0 +1,58 @@ +<svg width="161" height="140" viewBox="0 0 161 140" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_401_491)"> +<path d="M37.6018 -0.0469757L12.8815 -0.117029L-0.366314 22.8289L24.354 22.899L37.6018 -0.0469757Z" fill="#5DA9E5"/> +<path d="M54.8645 117.145L67.2854 138.519L92.7315 138.347L80.6476 117.557L54.8645 117.145Z" fill="#C5C5C5"/> +<path d="M108.93 22.8301L54.528 116.563L80.6479 117.559L135.296 22.9048L108.93 22.8301Z" fill="#DCDCDC"/> +<path d="M24.3533 22.9023L-0.366943 22.8322L67.5304 139.667L92.2507 139.737L24.3533 22.9023Z" fill="url(#paint0_linear_401_491)"/> +<path d="M0.168697 22.5225L12.5895 43.8958L121.349 44.2039L108.928 22.8305L0.168697 22.5225Z" fill="url(#paint1_linear_401_491)"/> +<path d="M80.6468 117.557L92.7307 138.346L147.716 44.2762L135.295 22.9029L80.6468 117.557Z" fill="url(#paint2_linear_401_491)"/> +<path d="M36.1866 43.9L92.2503 139.735L105.498 116.789L63.4747 43.9L36.1866 43.9Z" fill="url(#paint3_linear_401_491)"/> +<path d="M80.6468 117.557L93.2546 95.72L105.498 116.789L92.2503 139.735L79.36 117.553L80.6468 117.557Z" fill="url(#paint4_linear_401_491)"/> +<path d="M135.295 22.9029L147.716 44.2762L160.964 21.3302L148.543 -0.0430975L135.295 22.9029Z" fill="url(#paint5_linear_401_491)"/> +<path d="M108.928 22.8264L135.294 22.9012L93.2534 95.7184L80.0053 72.9217L108.928 22.8264Z" fill="url(#paint6_linear_401_491)"/> +<path d="M135.294 22.9012L148.543 -0.0446919L13.4173 -0.427739L0.169446 22.5182L108.928 22.8264L135.294 22.9012Z" fill="url(#paint7_linear_401_491)"/> +</g> +<defs> +<linearGradient id="paint0_linear_401_491" x1="100.254" y1="22.5464" x2="55.17" y2="144.156" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#979696"/> +<stop offset="0.403607" stop-color="#BBBBBB"/> +<stop offset="1" stop-color="#7F7F7F"/> +</linearGradient> +<linearGradient id="paint1_linear_401_491" x1="100.254" y1="22.5464" x2="55.17" y2="144.156" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#979696"/> +<stop offset="0.403607" stop-color="#BBBBBB"/> +<stop offset="1" stop-color="#7F7F7F"/> +</linearGradient> +<linearGradient id="paint2_linear_401_491" x1="115.085" y1="-8.3035" x2="80.085" y2="153.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint3_linear_401_491" x1="115.085" y1="-8.3035" x2="80.085" y2="153.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint4_linear_401_491" x1="115.085" y1="-8.3035" x2="80.085" y2="153.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint5_linear_401_491" x1="115.085" y1="-8.3035" x2="80.085" y2="153.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint6_linear_401_491" x1="-0.000304473" y1="-1.77957" x2="116.864" y2="75.339" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="#EAEAEA"/> +</linearGradient> +<linearGradient id="paint7_linear_401_491" x1="-0.000304473" y1="-1.77957" x2="116.864" y2="75.339" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="#EAEAEA"/> +</linearGradient> +<clipPath id="clip0_401_491"> +<rect width="161" height="140" fill="white" transform="matrix(-1 0 0 1 161 0)"/> +</clipPath> +</defs> +</svg> diff --git a/website/static/images/xtable-icon-white.png b/website/static/images/xtable-icon-white.png new file mode 100644 index 00000000..ab561ec1 Binary files /dev/null and b/website/static/images/xtable-icon-white.png differ diff --git a/website/static/images/xtable-icon.png b/website/static/images/xtable-icon.png new file mode 100644 index 00000000..6d948e83 Binary files /dev/null and b/website/static/images/xtable-icon.png differ diff --git a/website/static/images/xtable-svg.svg b/website/static/images/xtable-svg.svg new file mode 100644 index 00000000..52f6ab22 --- /dev/null +++ b/website/static/images/xtable-svg.svg @@ -0,0 +1,70 @@ +<svg width="554" height="150" viewBox="0 0 554 150" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_401_458)"> +<path d="M57.6017 4.95173L32.8815 4.88231L19.633 27.8283L44.3533 27.8977L57.6017 4.95173Z" fill="#5DA9E5"/> +<path d="M74.8644 122.144L87.2849 143.517L112.731 143.344L100.648 122.555L74.8644 122.144Z" fill="#C5C5C5"/> +<path d="M128.931 27.8275L74.5265 121.561L100.646 122.555L155.297 27.9015L128.931 27.8275Z" fill="#3587C8"/> +<path d="M44.3537 27.8983L19.6335 27.8283L87.5302 144.663L112.25 144.733L44.3537 27.8983Z" fill="url(#paint0_linear_401_458)"/> +<path d="M20.1692 27.5186L32.5898 48.8918L141.349 49.1998L128.928 27.8265L20.1692 27.5186Z" fill="url(#paint1_linear_401_458)"/> +<path d="M100.646 122.556L112.73 143.345L167.716 49.2749L155.295 27.9017L100.646 122.556Z" fill="url(#paint2_linear_401_458)"/> +<path d="M56.1866 48.899L112.25 144.734L125.498 121.788L83.4748 48.8989L56.1866 48.899Z" fill="url(#paint3_linear_401_458)"/> +<path d="M100.646 122.556L113.254 100.719L125.498 121.788L112.25 144.734L99.3597 122.552L100.646 122.556Z" fill="url(#paint4_linear_401_458)"/> +<path d="M155.295 27.9017L167.716 49.2749L180.964 26.3289L168.544 4.95565L155.295 27.9017Z" fill="url(#paint5_linear_401_458)"/> +<path d="M128.927 27.8264L155.294 27.9012L113.253 100.718L100.005 77.9216L128.927 27.8264Z" fill="url(#paint6_linear_401_458)"/> +<path d="M155.294 27.9012L168.543 4.95529L33.417 4.57226L20.1692 27.5182L128.927 27.8264L155.294 27.9012Z" fill="url(#paint7_linear_401_458)"/> +</g> +<path d="M257.539 124.947L238.054 97.4293L217.846 124.947H210L234.263 91.928L211.348 59.3584H223.709L241.66 84.7061L260.246 59.3584H268.092L245.452 90.3061L269.901 124.947H257.539Z" fill="#03659D"/> +<path d="M285.016 65.841V59.7041H335.536V65.841H315.24V125.293H305.311V65.841H285.016Z" fill="#03659D"/> +<path d="M380.543 125.293L378.834 117.359C377.573 119.945 375.403 122.06 372.335 123.715C369.267 125.37 365.595 126.192 361.332 126.192C357.968 126.192 354.954 125.699 352.313 124.702C349.661 123.704 347.59 122.192 346.089 120.143C344.587 118.093 343.831 115.507 343.831 112.384C343.831 110.039 344.324 107.978 345.322 106.203C346.319 104.428 347.678 102.97 349.431 101.831C350.932 100.691 352.62 99.8141 354.483 99.2114C356.346 98.6086 358.527 98.1703 361.025 97.9073C363.524 97.6333 366.483 [...] +<path d="M452.631 101.38C452.631 106.071 451.677 110.301 449.792 114.06C447.897 117.819 445.233 120.778 441.803 122.947C438.373 125.117 434.341 126.191 429.716 126.191C425.628 126.191 422.121 125.336 419.206 123.616C416.291 121.906 414.023 119.747 412.401 117.161L411.053 125.282H403.382V56.0986H412.401V85.5121C414.143 83.1121 416.565 81.0957 419.667 79.4628C422.768 77.8409 426.143 77.03 429.814 77.03C434.505 77.03 438.549 78.0711 441.946 80.1423C445.343 82.2135 447.973 85.0847 449.836 88 [...] +<path d="M465.167 125.293V56.0986H474.187V125.293H465.167Z" fill="#03659D"/> +<path d="M533.365 109.589C533.365 113.381 532.312 116.504 530.208 118.97C528.104 121.435 525.365 123.255 522 124.427C518.636 125.6 515.052 126.191 511.261 126.191C506.209 126.191 501.847 125.194 498.176 123.211C494.505 121.227 491.677 118.4 489.694 114.729C487.71 111.057 486.713 106.729 486.713 101.742C486.713 96.8657 487.71 92.5698 489.694 88.8438C491.677 85.1178 494.472 82.2138 498.088 80.1425C501.694 78.0713 505.935 77.0303 510.811 77.0303C517.967 77.0303 523.622 79.0466 527.776 83.07 [...] +<path d="M335.734 42.2745C335.734 46.4211 331.847 48.1704 327.7 48.1704C322.193 48.1704 318.597 44.8338 318.597 39.3266C318.597 33.949 322.063 30.418 327.441 30.418C332.657 30.418 335.961 33.4955 335.961 38.7111C335.961 39.197 335.929 39.6505 335.896 40.2013H322.906C323.132 43.2788 324.623 46 327.7 46C330.097 46 331.523 44.6718 331.523 42.2745H335.734ZM327.441 32.5884C324.493 32.5884 323.197 35.1152 322.938 38.0632H331.847C331.847 34.9209 330.583 32.5884 327.441 32.5884Z" fill="#03659D"/> +<path d="M301.926 38.42V47.847H297.747V23H301.926V33.496C302.898 31.779 304.874 30.4185 307.693 30.4185C312.131 30.4185 314.819 33.334 314.819 37.8693V47.847H310.673V38.2904C310.673 35.1805 309.15 33.2368 306.332 33.2368C303.546 33.2368 301.926 35.5369 301.926 38.42Z" fill="#03659D"/> +<path d="M293.655 41.821C293.655 45.9352 289.93 48.1704 285.459 48.1704C280.082 48.1704 276.648 44.769 276.648 39.3914C276.648 34.0786 280.147 30.418 285.492 30.418C289.8 30.418 293.72 32.6208 293.72 36.6054V36.9294H289.476C289.476 34.4997 287.921 32.5884 285.492 32.5884C282.09 32.5884 280.956 35.9899 280.956 39.3914C280.956 42.7929 282.058 45.8704 285.459 45.8704C288.019 45.8704 289.379 44.0887 289.379 41.4971H293.655V41.821Z" fill="#03659D"/> +<path d="M269.426 47.8465L268.714 45.2225C267.871 46.9718 265.733 48.1704 262.656 48.1704C259.092 48.1704 256.501 46.5831 256.501 43.214C256.501 41.3351 257.408 40.0069 258.898 39.0998C260.583 38.0632 262.656 37.7716 265.96 37.7716C266.9 37.7716 267.871 37.804 268.681 37.8364V36.3463C268.681 34.0138 267.418 32.5884 265.118 32.5884C262.85 32.5884 261.522 33.7547 261.522 36.0223H257.44V35.666C257.44 32.4589 260.259 30.418 265.118 30.418C269.459 30.418 272.86 32.4589 272.86 36.7998V47.8465H [...] +<path d="M245.432 48.1704C242.517 48.1704 240.541 46.8746 239.569 45.2873V54.779H235.39V30.7419H239.051L239.536 33.5279C240.411 32.0377 242.16 30.418 245.432 30.418C250.551 30.418 253.628 34.3378 253.628 39.3266C253.628 44.4126 250.486 48.1704 245.432 48.1704ZM244.396 32.88C241.091 32.88 239.569 35.9251 239.569 39.2294C239.569 42.6309 241.027 45.5464 244.46 45.5464C247.797 45.5464 249.32 42.5661 249.32 39.2294C249.32 35.9575 247.797 32.88 244.396 32.88Z" fill="#03659D"/> +<path d="M210 47.8471L218.487 24.2959H224.092L232.547 47.8471H227.525L225.355 41.6272H215.215L212.948 47.8471H210ZM216.155 39.0032H224.448L220.366 27.3086L216.155 39.0032Z" fill="#03659D"/> +<defs> +<linearGradient id="paint0_linear_401_458" x1="120.255" y1="27.5423" x2="75.1704" y2="149.153" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#084D7E"/> +<stop offset="0.403607" stop-color="#10639C"/> +<stop offset="1" stop-color="#094B79"/> +</linearGradient> +<linearGradient id="paint1_linear_401_458" x1="120.255" y1="27.5423" x2="75.1704" y2="149.153" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#084D7E"/> +<stop offset="0.403607" stop-color="#10639C"/> +<stop offset="1" stop-color="#094B79"/> +</linearGradient> +<linearGradient id="paint2_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint3_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint4_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint5_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#1964A0"/> +<stop offset="0.448809" stop-color="#1A73BA"/> +<stop offset="0.97652" stop-color="#185D94"/> +</linearGradient> +<linearGradient id="paint6_linear_401_458" x1="19.9995" y1="3.22043" x2="136.864" y2="80.3391" gradientUnits="userSpaceOnUse"> +<stop stop-color="#64AEE9"/> +<stop offset="1" stop-color="#277CBF"/> +</linearGradient> +<linearGradient id="paint7_linear_401_458" x1="19.9995" y1="3.22043" x2="136.864" y2="80.3391" gradientUnits="userSpaceOnUse"> +<stop stop-color="#64AEE9"/> +<stop offset="1" stop-color="#277CBF"/> +</linearGradient> +<clipPath id="clip0_401_458"> +<rect width="161" height="140" fill="white" transform="matrix(-1 0 0 1 181 5)"/> +</clipPath> +</defs> +</svg> diff --git a/website/static/images/xtable-white-svg.svg b/website/static/images/xtable-white-svg.svg new file mode 100644 index 00000000..e5b5c30a --- /dev/null +++ b/website/static/images/xtable-white-svg.svg @@ -0,0 +1,70 @@ +<svg width="554" height="150" viewBox="0 0 554 150" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_401_490)"> +<path d="M57.6018 4.95302L32.8815 4.88297L19.6337 27.8289L44.354 27.899L57.6018 4.95302Z" fill="#5DA9E5"/> +<path d="M74.8645 122.145L87.2854 143.519L112.732 143.347L100.648 122.557L74.8645 122.145Z" fill="#C5C5C5"/> +<path d="M128.93 27.8301L74.528 121.563L100.648 122.559L155.296 27.9048L128.93 27.8301Z" fill="#DCDCDC"/> +<path d="M44.3533 27.9023L19.6331 27.8322L87.5304 144.667L112.251 144.737L44.3533 27.9023Z" fill="url(#paint0_linear_401_490)"/> +<path d="M20.1687 27.5225L32.5895 48.8958L141.349 49.2039L128.928 27.8305L20.1687 27.5225Z" fill="url(#paint1_linear_401_490)"/> +<path d="M100.647 122.557L112.731 143.346L167.716 49.2762L155.295 27.9029L100.647 122.557Z" fill="url(#paint2_linear_401_490)"/> +<path d="M56.1866 48.9L112.25 144.735L125.498 121.789L83.4747 48.9L56.1866 48.9Z" fill="url(#paint3_linear_401_490)"/> +<path d="M100.647 122.557L113.255 100.72L125.498 121.789L112.25 144.735L99.36 122.553L100.647 122.557Z" fill="url(#paint4_linear_401_490)"/> +<path d="M155.295 27.9029L167.716 49.2762L180.964 26.3302L168.543 4.9569L155.295 27.9029Z" fill="url(#paint5_linear_401_490)"/> +<path d="M128.928 27.8264L155.294 27.9012L113.253 100.718L100.005 77.9217L128.928 27.8264Z" fill="url(#paint6_linear_401_490)"/> +<path d="M155.294 27.9012L168.543 4.95531L33.4173 4.57226L20.1694 27.5182L128.928 27.8264L155.294 27.9012Z" fill="url(#paint7_linear_401_490)"/> +<path d="M257.542 124.946L238.056 97.4266L217.847 124.946H210L234.264 91.9249L211.348 59.3535H223.71L241.662 84.7027L260.249 59.3535H268.096L245.454 90.3029L269.904 124.946H257.542Z" fill="#F8F8F8"/> +<path d="M285.02 65.8404V59.7031H335.543V65.8404H315.246V125.295H305.317V65.8404H285.02Z" fill="#F8F8F8"/> +<path d="M380.553 125.291L378.844 117.357C377.583 119.943 375.413 122.058 372.345 123.713C369.276 125.368 365.605 126.19 361.341 126.19C357.977 126.19 354.963 125.697 352.322 124.699C349.67 123.702 347.598 122.19 346.097 120.14C344.595 118.091 343.839 115.504 343.839 112.381C343.839 110.036 344.332 107.975 345.33 106.2C346.327 104.424 347.686 102.967 349.439 101.827C350.941 100.687 352.629 99.8105 354.492 99.2077C356.355 98.605 358.536 98.1666 361.034 97.9035C363.533 97.6296 366.492 97.4 [...] +<path d="M452.644 101.378C452.644 106.069 451.691 110.299 449.806 114.058C447.91 117.817 445.247 120.776 441.816 122.946C438.386 125.116 434.353 126.19 429.728 126.19C425.64 126.19 422.133 125.335 419.218 123.615C416.303 121.905 414.034 119.746 412.412 117.16L411.064 125.281H403.393V56.0938H412.412V85.5089C414.155 83.1088 416.577 81.0922 419.678 79.4593C422.78 77.8373 426.155 77.0263 429.827 77.0263C434.517 77.0263 438.561 78.0674 441.959 80.1387C445.356 82.2101 447.987 85.0815 449.85 88 [...] +<path d="M465.182 125.292V56.0938H474.202V125.292H465.182Z" fill="#F8F8F8"/> +<path d="M533.383 109.586C533.383 113.378 532.331 116.501 530.226 118.967C528.122 121.433 525.382 123.252 522.018 124.425C518.653 125.598 515.069 126.189 511.278 126.189C506.225 126.189 501.863 125.192 498.192 123.208C494.521 121.225 491.693 118.397 489.709 114.726C487.726 111.054 486.729 106.725 486.729 101.739C486.729 96.8619 487.726 92.5658 489.709 88.8396C491.693 85.1134 494.488 82.2092 498.104 80.1378C501.71 78.0665 505.951 77.0254 510.828 77.0254C517.985 77.0254 523.64 79.0419 527. [...] +<path d="M335.742 42.2742C335.742 46.421 331.854 48.1705 327.707 48.1705C322.2 48.1705 318.604 44.8336 318.604 39.3261C318.604 33.9482 322.07 30.417 327.448 30.417C332.664 30.417 335.968 33.4947 335.968 38.7106C335.968 39.1965 335.936 39.6501 335.904 40.2008H322.912C323.139 43.2785 324.629 45.9999 327.707 45.9999C330.105 45.9999 331.53 44.6716 331.53 42.2742H335.742ZM327.448 32.5876C324.5 32.5876 323.204 35.1145 322.945 38.0626H331.854C331.854 34.9202 330.59 32.5876 327.448 32.5876Z" fil [...] +<path d="M301.932 38.4209V47.8484H297.753V23H301.932V33.4966C302.904 31.7795 304.88 30.4189 307.699 30.4189C312.137 30.4189 314.826 33.3346 314.826 37.8702V47.8484H310.679V38.2913C310.679 35.1812 309.157 33.2374 306.338 33.2374C303.552 33.2374 301.932 35.5376 301.932 38.4209Z" fill="#F8F8F8"/> +<path d="M293.66 41.8207C293.66 45.9351 289.935 48.1705 285.464 48.1705C280.086 48.1705 276.652 44.7688 276.652 39.3909C276.652 34.0778 280.151 30.417 285.496 30.417C289.805 30.417 293.725 32.62 293.725 36.6048V36.9288H289.481C289.481 34.499 287.926 32.5876 285.496 32.5876C282.095 32.5876 280.961 35.9893 280.961 39.3909C280.961 42.7926 282.062 45.8703 285.464 45.8703C288.023 45.8703 289.384 44.0885 289.384 41.4967H293.66V41.8207Z" fill="#F8F8F8"/> +<path d="M269.43 47.8465L268.717 45.2224C267.875 46.9718 265.737 48.1705 262.659 48.1705C259.096 48.1705 256.504 46.583 256.504 43.2137C256.504 41.3347 257.411 40.0065 258.901 39.0993C260.586 38.0626 262.659 37.7711 265.964 37.7711C266.903 37.7711 267.875 37.8035 268.685 37.8359V36.3456C268.685 34.013 267.422 32.5876 265.121 32.5876C262.854 32.5876 261.525 33.7539 261.525 36.0216H257.443V35.6653C257.443 32.458 260.262 30.417 265.121 30.417C269.463 30.417 272.864 32.458 272.864 36.7992V47 [...] +<path d="M245.434 48.1705C242.519 48.1705 240.542 46.8746 239.571 45.2871V54.7794H235.391V30.741H239.052L239.538 33.5271C240.413 32.0368 242.162 30.417 245.434 30.417C250.553 30.417 253.631 34.337 253.631 39.3261C253.631 44.4124 250.488 48.1705 245.434 48.1705ZM244.398 32.8792C241.093 32.8792 239.571 35.9245 239.571 39.2289C239.571 42.6306 241.028 45.5463 244.462 45.5463C247.799 45.5463 249.322 42.5658 249.322 39.2289C249.322 35.9569 247.799 32.8792 244.398 32.8792Z" fill="#F8F8F8"/> +<path d="M210 47.8494L218.488 24.2969H224.093L232.548 47.8494H227.527L225.356 41.6292H215.216L212.948 47.8494H210ZM216.155 39.005H224.449L220.367 27.3098L216.155 39.005Z" fill="#F8F8F8"/> +</g> +<defs> +<linearGradient id="paint0_linear_401_490" x1="120.254" y1="27.5464" x2="75.17" y2="149.156" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#979696"/> +<stop offset="0.403607" stop-color="#BBBBBB"/> +<stop offset="1" stop-color="#7F7F7F"/> +</linearGradient> +<linearGradient id="paint1_linear_401_490" x1="120.254" y1="27.5464" x2="75.17" y2="149.156" gradientUnits="userSpaceOnUse"> +<stop offset="0.0370701" stop-color="#979696"/> +<stop offset="0.403607" stop-color="#BBBBBB"/> +<stop offset="1" stop-color="#7F7F7F"/> +</linearGradient> +<linearGradient id="paint2_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint3_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint4_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint5_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<stop offset="0.0774246" stop-color="#B1B1B1"/> +<stop offset="0.448809" stop-color="#D9D9D9"/> +<stop offset="0.97652" stop-color="#B3B3B3"/> +</linearGradient> +<linearGradient id="paint6_linear_401_490" x1="19.9997" y1="3.22043" x2="136.864" y2="80.339" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="#EAEAEA"/> +</linearGradient> +<linearGradient id="paint7_linear_401_490" x1="19.9997" y1="3.22043" x2="136.864" y2="80.339" gradientUnits="userSpaceOnUse"> +<stop stop-color="white"/> +<stop offset="1" stop-color="#EAEAEA"/> +</linearGradient> +<clipPath id="clip0_401_490"> +<rect width="554" height="150" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/website/static/images/xtable-white.png b/website/static/images/xtable-white.png new file mode 100644 index 00000000..fd87e6ba Binary files /dev/null and b/website/static/images/xtable-white.png differ diff --git a/website/static/images/xtable-words-white.png b/website/static/images/xtable-words-white.png new file mode 100644 index 00000000..7021d96b Binary files /dev/null and b/website/static/images/xtable-words-white.png differ diff --git a/website/static/images/xtable-words.png b/website/static/images/xtable-words.png new file mode 100644 index 00000000..f1401beb Binary files /dev/null and b/website/static/images/xtable-words.png differ diff --git a/website/static/images/xtable.png b/website/static/images/xtable.png new file mode 100644 index 00000000..43554889 Binary files /dev/null and b/website/static/images/xtable.png differ diff --git a/website/static/index.html b/website/static/index.html index 89fa9b35..5480983d 100644 --- a/website/static/index.html +++ b/website/static/index.html @@ -3,13 +3,13 @@ <html data-wf-page="65402b66d39d6454e51fabf1" data-wf-site="65402b66d39d6454e51fabed"> <head> <meta charset="utf-8"> - <title>OneTable</title> - <meta content="OneTable is an omni-directional interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. OneTable is NOT a new or separate format, OneTable provides abstractions and tools for the translation of lakehouse table format metadata." name="description"> - <meta content="OneTable" property="og:title"> - <meta content="OneTable is an omni-directional interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. OneTable is NOT a new or separate format, OneTable provides abstractions and tools for the translation of lakehouse table format metadata." property="og:description"> + <title>XTable</title> + <meta content="XTable is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata." name="description"> + <meta content="XTable" property="og:title"> + <meta content="XTable is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata." property="og:description"> <meta content="https://uploads-ssl.webflow.com/65402b66d39d6454e51fabed/654c643bf9cebe95d6c3dd50_Group%201562%20(1).png" property="og:image"> - <meta content="OneTable" property="twitter:title"> - <meta content="OneTable is an omni-directional interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. OneTable is NOT a new or separate format, OneTable provides abstractions and tools for the translation of lakehouse table format metadata." property="twitter:description"> + <meta content="XTable" property="twitter:title"> + <meta content="XTable is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata." property="twitter:description"> <meta content="https://uploads-ssl.webflow.com/65402b66d39d6454e51fabed/654c643bf9cebe95d6c3dd50_Group%201562%20(1).png" property="twitter:image"> <meta property="og:type" content="website"> <meta content="summary_large_image" name="twitter:card"> @@ -29,7 +29,7 @@ <body class="body"> <div data-animation="default" data-collapse="medium" data-duration="400" data-easing="ease" data-easing2="ease" role="banner" class="navbar w-nav"> <div class="container w-container"> - <a href="#" class="brand w-nav-brand"><img src="images/nav-logo.png" loading="lazy" alt="" class="nav-logo"></a> + <a href="#" class="brand w-nav-brand"><img src="images/xtable-white.png" loading="lazy" alt="" class="nav-logo"></a> <nav role="navigation" class="nav-menu w-nav-menu"> <a href="#" class="nav-link w-nav-link">Home</a> <a href="https://onetable.dev/docs/setup/" class="nav-link w-nav-link">Docs</a> @@ -45,7 +45,7 @@ </div> <div data-animation="default" data-collapse="medium" data-duration="400" data-easing="ease" data-easing2="ease" role="banner" class="navbar-copy w-nav"> <div class="container-copy w-container"> - <a href="#" class="brand-copy w-nav-brand"><img src="images/nav-logo.png" loading="lazy" alt="" class="nav-logo-copy"></a> + <a href="#" class="brand-copy w-nav-brand"><img src="images/xtable-white.png" loading="lazy" alt="" class="nav-logo-copy"></a> <nav role="navigation" class="nav-menu-copy w-nav-menu"> <a href="#" class="nav-link-copy w-nav-link">Home</a> <a href="https://onetable.dev/docs/setup/" class="nav-link-copy w-nav-link">Docs</a> @@ -62,14 +62,19 @@ <section class="hero-section"> <div class="w-layout-blockcontainer hero-container w-container"> <div class="left-hero"> - <h1 class="hero-heading">OneTable</h1> - <div class="hero-textblock">Seamlessly interoperate between Apache Hudi, Delta Lake, and Apache Iceberg.</div> + <img src="images/xtable-words-white.png" loading="lazy" alt="" class="xtable-title"> + <div class="hero-textblock">Seamlessly interoperate cross-table between Apache Hudi, Delta Lake, and Apache Iceberg</div> <div class="button-group"> <a href="https://github.com/onetable-io/onetable" class="primary-button w-button">Try it on GitHub</a> <a href="https://onetable.dev/docs/setup/" class="secondary-button w-button">Learn More</a> </div> </div> - <div class="right-hero"><img src="images/Onetable-logo.png" loading="lazy" alt="" class="hero-image"></div> + <div class="right-hero"><img src="images/xtable-hero.svg" loading="lazy" alt="" class="hero-image"></div> + </div> + </section> + <section class="callout-section"> + <div class="w-layout-blockcontainer container-main w-container"> + Apache XTable is incubating in the Apache Software Foundation and was recently renamed from OneTable </div> </section> <section class="logo-section"> @@ -85,10 +90,11 @@ <section class="what-section"> <div class="w-layout-blockcontainer main-container-why w-container"> <div class="up-section-why"> - <h1 class="heading-section why">What is<span class="text-span"> OneTable?</span></h1> + <h1 class="heading-section why">What is<span class="text-span"> XTable?</span></h1> <ul role="list" class="list"> - <li class="list-item why">Onetable provides omni-directional interop between lakehouse table formats</li> - <li class="list-item why">OneTable is NOT a new or separate format, OneTable provides abstractions and tools for the translation of lakehouse table format metadata</li> + <li class="list-item why">XTable provides cross-table omni-directional interop between lakehouse table formats</li> + <li class="list-item why">XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata</li> + <li class="list-item why">XTable is formerly known as OneTable</li> </ul> </div> <div id="w-node-b5fb012b-3ce1-44e6-09e8-015167aa018f-e51fabf1" class="w-layout-layout quick-stack wf-layout-layout"> @@ -99,29 +105,7 @@ <div class="what-text">Choose your <span class="text-span-3">destination</span> format(s)</div> </div> <div id="w-node-a5b4b7dd-251e-d9a7-855d-46427e19ad9b-e51fabf1" class="w-layout-cell what-cell"><img src="images/metadata-1.png" loading="lazy" alt="" class="image-4"> - <div class="what-text">Onetable will translate the <span class="text-span-3">Metadata</span> layers</div> - </div> - </div> - </div> - </section> - <section class="what-section-copy"> - <div class="w-layout-blockcontainer main-container-why-copy w-container"> - <div class="up-section-why-copy"> - <h1 class="heading-section-copy why-copy">What is<span class="text-span"> OneTable?</span></h1> - <ul role="list" class="list-copy"> - <li class="list-item why">OneTable is an omni-directional interop of lakehouse table formats</li> - <li class="list-item why">OneTable is NOT a new or separate format, OneTable provides abstractions and tools for the translation of lakehouse table format metadata</li> - </ul> - </div> - <div id="w-node-c7411165-6ba1-6089-10bd-ef98a599082e-e51fabf1" class="w-layout-layout quick-stack-copy wf-layout-layout"> - <div id="w-node-c7411165-6ba1-6089-10bd-ef98a599082f-e51fabf1" class="w-layout-cell what-cell-copy"><img src="images/source1.svg" loading="lazy" alt="" class="image-6-copy"> - <div class="what-text-copy">Choose your <span class="text-span-3-copy">source</span> format</div> - </div> - <div id="w-node-c7411165-6ba1-6089-10bd-ef98a5990836-e51fabf1" class="w-layout-cell what-cell-copy"><img src="images/destination1.svg" loading="lazy" alt="" class="image-5-copy"> - <div class="what-text-copy">Choose your <span class="text-span-3-copy">destination</span> format(s)</div> - </div> - <div id="w-node-c7411165-6ba1-6089-10bd-ef98a599083d-e51fabf1" class="w-layout-cell what-cell-copy"><img src="images/metadata1.svg" loading="lazy" alt="" class="image-4-copy"> - <div class="what-text-copy">Onetable will translate the <span class="text-span-3-copy">Metadata</span> layers</div> + <div class="what-text">XTable will translate the <span class="text-span-3">Metadata</span> layers</div> </div> </div> </div> @@ -129,7 +113,7 @@ <section class="build-section"> <div class="w-layout-blockcontainer main-container w-container"> <div class="left-section"> - <h1 class="heading-section">Why <span class="text-span">build</span> OneTable?</h1> + <h1 class="heading-section">Why <span class="text-span">build</span> XTable?</h1> <ul role="list" class="list"> <li class="list-item">Choosing a table format is a costly evaluation</li> <li class="list-item">Each project has rich features that may fit different use-cases</li> @@ -137,7 +121,7 @@ <li class="list-item">Your data should be <span class="text-span-2">UNIVERSAL</span></li> </ul> </div> - <div class="right-section"><img src="images/Group-1562-1.png" loading="lazy" sizes="(max-width: 479px) 91vw, (max-width: 767px) 71vw, (max-width: 991px) 64vw, 43vw" srcset="images/Group-1562-1-p-500.png 500w, images/Group-1562-1-p-800.png 800w, images/Group-1562-1-p-1080.png 1080w, images/Group-1562-1.png 1311w" alt="" class="image-3"></div> + <div class="right-section"><img src="images/write-query.png" loading="lazy" sizes="(max-width: 479px) 91vw, (max-width: 767px) 71vw, (max-width: 991px) 64vw, 43vw" srcset="images/Group-1562-1-p-500.png 500w, images/Group-1562-1-p-800.png 800w, images/Group-1562-1-p-1080.png 1080w, images/Group-1562-1.png 1311w" alt="" class="image-3"></div> </div> </section> <section class="together-section"> @@ -146,7 +130,7 @@ <div class="div-block-24"> <div class="right-section-together"> <h1 class="heading-section-together">Let's <span class="text-span">build together</span></h1> - <div class="text-block">OneTable is a community driven open source project. Come join us on Github and find easy ways to contribute.</div> + <div class="text-block">XTable is a community driven open source project. Come join us on Github and find easy ways to contribute.</div> </div> <a href="https://github.com/onetable-io/onetable" class="primary-button w-button">Try it on GitHub</a> </div> @@ -165,34 +149,34 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">OneTable reads the existing metadata of your table and writes out metadata for one or more other table formats by leveraging the existing APIs provided by each table format project. The metadata will be persisted under a directory in the base path of your table (_delta_log for Delta, metadata for Iceberg, and .hoodie for Hudi). This allows your existing data to be read as though it was written using Delta, Hudi, or Iceberg. For example, a Spark reader can use [...] + <p class="faq-a">XTable reads the existing metadata of your table and writes out metadata for one or more other table formats by leveraging the existing APIs provided by each table format project. The metadata will be persisted under a directory in the base path of your table (_delta_log for Delta, metadata for Iceberg, and .hoodie for Hudi). This allows your existing data to be read as though it was written using Delta, Hudi, or Iceberg. For example, a Spark reader can use s [...] </div> </div> <div class="accordion-item"> <div id="q1" class="accordion-item-trigger"> - <h4 class="accordion-heading"><span><strong class="faq-q">How is OneTable different from Delta Lake Uniform?</strong></span></h4> + <h4 class="accordion-heading"><span><strong class="faq-q">How is XTable different from Delta Lake Uniform?</strong></span></h4> <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">OneTable provides abstraction interfaces that allow omni-directional interoperability across Delta, Hudi, Iceberg, and any other future lakehouse table formats such as Apache Paimon. OneTable is a standalone github project that provides a neutral space for all the lakehouse table formats to constructively collaborate together.<br><br>Delta Lake Uniform is a one-directional conversion from Delta Lake to Apache Hudi or Apache Iceberg. Uniform is also governed i [...] + <p class="faq-a">XTable provides abstraction interfaces that allow omni-directional interoperability across Delta, Hudi, Iceberg, and any other future lakehouse table formats such as Apache Paimon. XTable is a standalone github project that provides a neutral space for all the lakehouse table formats to constructively collaborate together.<br><br>Delta Lake Uniform is a one-directional conversion from Delta Lake to Apache Hudi or Apache Iceberg. Uniform is also governed insid [...] </div> </div> <div class="accordion-item"> <div id="q1" class="accordion-item-trigger"> - <h4 class="accordion-heading"><span><strong class="faq-q">When should I consider OneTable?</strong></span></h4> + <h4 class="accordion-heading"><span><strong class="faq-q">When should I consider XTable?</strong></span></h4> <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">OneTable can be used to easily switch between any of the table formats or even benefit from more than one simultaneously. Some organizations use OneTable today because they have a diverse ecosystem of tools with polarized vendor support of table formats. Some users want lightning fast ingestion or indexing from Hudi and photon query accelerations of Delta Lake inside of Databricks. Some users want managed table services from Hudi, but also want write operatio [...] + <p class="faq-a">XTable can be used to easily switch between any of the table formats or even benefit from more than one simultaneously. Some organizations use XTable today because they have a diverse ecosystem of tools with polarized vendor support of table formats. Some users want lightning fast ingestion or indexing from Hudi and photon query accelerations of Delta Lake inside of Databricks. Some users want managed table services from Hudi, but also want write operations f [...] </div> </div> <div class="accordion-item"> <div id="q1" class="accordion-item-trigger"> - <h4 class="accordion-heading"><span><strong class="faq-q">Does OneTable work in every cloud?</strong></span></h4> + <h4 class="accordion-heading"><span><strong class="faq-q">Does XTable work in every cloud?</strong></span></h4> <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">Yes, anywhere that Delta, Iceberg, or Hudi work, OneTable works.</p> + <p class="faq-a">Yes, anywhere that Delta, Iceberg, or Hudi work, XTable works.</p> </div> </div> <div class="accordion-item"> @@ -201,7 +185,7 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">1. Hudi and Iceberg MoR tables not supported<br>2. Delta Delete Vectors are not supported<br>3. Synchronized transaction timestamps<br><br>With OneTable you pick one primary format and one or more secondary formats. The write operations with the primary format work as normal. OneTable than translates the metadata from the primary format to the secondaries. When committing the metadata of the secondary formats, the timestamp of the commit will not be the exact [...] + <p class="faq-a">1. Hudi and Iceberg MoR tables not supported<br>2. Delta Delete Vectors are not supported<br>3. Synchronized transaction timestamps<br><br>With XTable you pick one primary format and one or more secondary formats. The write operations with the primary format work as normal. XTable than translates the metadata from the primary format to the secondaries. When committing the metadata of the secondary formats, the timestamp of the commit will not be the exact sam [...] </div> </div> <div class="accordion-item"> @@ -219,7 +203,7 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">Follow OneTable community channels on Linkedin and Twitter. Become a watcher on Github or reachout directly to any of the Github contributors to learn more.</p> + <p class="faq-a">Follow XTable community channels on Linkedin and Twitter. Become a watcher on Github or reachout directly to any of the Github contributors to learn more.</p> </div> </div> <div class="accordion-item"> @@ -228,7 +212,7 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">Current contributors across Onehouse, Microsoft, Google, and others are planning to incubate OneTable into the Apache Software Foundation. Stay tuned for more updates.</p> + <p class="faq-a">Current contributors across Onehouse, Microsoft, Google, and others are planning to incubate XTable into the Apache Software Foundation. Stay tuned for more updates.</p> </div> </div> </div> @@ -236,14 +220,21 @@ </div> <section class="footer-subscribe"> <div class="main-container-footer"> - <div class="div-block-25"><img src="images/OneTable-F.png" loading="lazy" alt="" class="image-8"></div> + <div class="div-block-25"><img src="images/xtable-white.png" loading="lazy" alt="" class="image-8"></div> <div class="footer-block-three"> <a href="https://onetable.dev/docs/setup/" class="footer-link-three">Docs</a> <a href="https://github.com/onetable-io/onetable" class="footer-link-three">GitHub</a> <a href="https://www.linkedin.com/company/onetable-oss/" class="footer-link-three">LinkedIn</a> <a href="https://twitter.com/OnetableOSS" class="footer-link-three l">Twitter</a> </div> - <div class="footer-copyright"> </div> + </div> + <div class="footer__bottom text--center"><div class="footer__copyright" style="color: white;text-align: center;"> + <div style="margin-top: 20px"> + <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/images/apache-incubator.svg"></a> + <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache XTable is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the c [...] + <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2024 Apache XTable, XTable, Apache, the Apache feather logo and the Apache XTable project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p> + </div> + </div> </div> </section> <script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=65402b66d39d6454e51fabed" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
