From 32b46bbfe8a80fc3d61ec02b3d0a0586384f008b Mon Sep 17 00:00:00 2001 From: Uchechukwu Obasi Date: Fri, 15 Nov 2024 20:01:27 +0100 Subject: [PATCH] Feat: Resource page update (#1886) * init new resource page Signed-off-by: thisisobate * chore: fix layout in desktop view Signed-off-by: thisisobate * chore: make filter work Signed-off-by: thisisobate * chore: nit fix Signed-off-by: thisisobate * chore: remove title in learning resource Signed-off-by: thisisobate * chore: rename resource partial Signed-off-by: thisisobate * chore: nit fixes Signed-off-by: thisisobate * chore: increase size of filter buttons Signed-off-by: thisisobate * chore: nit fixes Signed-off-by: thisisobate * Update README.md Signed-off-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> --------- Signed-off-by: thisisobate Signed-off-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> Co-authored-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> --- README.md | 61 +++ assets/sass/style.sass | 149 +++++++ config.toml | 8 +- content/en/docs/learning-resources/_index.md | 376 +----------------- data/resources.yaml | 290 ++++++++++++++ layouts/_default/index.searchindex.json | 5 + layouts/learning-resources/list.html | 84 ++++ layouts/partials/javascript.html | 173 ++++++++ .../learning-resources/filter-panel.html | 33 ++ .../partials/learning-resources/resource.html | 25 ++ .../template-container.html | 26 ++ .../learning-resources/template-resource.html | 12 + 12 files changed, 866 insertions(+), 376 deletions(-) create mode 100644 data/resources.yaml create mode 100644 layouts/_default/index.searchindex.json create mode 100644 layouts/learning-resources/list.html create mode 100644 layouts/partials/learning-resources/filter-panel.html create mode 100644 layouts/partials/learning-resources/resource.html create mode 100644 layouts/partials/learning-resources/template-container.html create mode 100644 layouts/partials/learning-resources/template-resource.html diff --git a/README.md b/README.md index dd3745c88..87c183f57 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,67 @@ You can check the site's internal links by running `make check-internal-links` a The Vitess website uses [Bulma](https://bulma.io/), a CSS (and SASS) framework that provides all kinds of variables, utilities, and components. +### Adding a new learning resources filter option + +To add a new filter option, simply follow these steps: + +1. Navigate to `resources.yaml` file to annotate: `cd data/resources.yaml`. +2. add your new filter option to all the data in the folder. + +``` + - youtube: uRB-Qni_bCM + title: "Vitess: Introduction, New Features and the Vinted User Story - Florent Poinsard, Deepthi Sigireddi, PlanetScale & Kazimieras Aliulis, Vinted" + date: 2024 + type: video + FILTER_NAME = "filter_value" +``` + +Replace FILTER_NAME with any desired name of your choice. Same applies to the value. + +3. Navigate to the `index.searchindex.json` file to edit: `cd layouts/_default/index.searchindex.json`. +4. Open the file and go down to line 3. You will notice the format of the data represented in a key/value pair. Just before the closing parenthesis, append your new option like this: `"FILTER_NAME" $resources.FILTER_NAME`. + +Replace FILTER_NAME with the same name represented in the frontmatter (see step 2 above for reference). + +5. Head over to `config.toml` file. In the `params.lunr` section, you will see two arrays named `vars` and `params`. Add your new filter option's name to each of the arrays: + +```toml +vars = ["title", "summary", "date", "publishdate", "expirydate", "permalink", "FILTER_NAME"] +``` + +6. Navigate to `javascript.html` and scroll down to where the logic for resource filter is declared. Within that scope, find where the `lunr()` function is being called. You will notice a callback function is being passed to the `lunr()` function. Within the callback function, you will also notice `this.field` being called with some values passed in. Append this block of code right after the last `this.field` function call: + +```javascript +this.field("FILTER_NAME"); +``` + +Replace FILTER_NAME with the same name represented in the frontmatter (see step 2 above for reference). + +1. Navigate to `layouts/partials/learning-resources/filter-panel.html`. Locate the div with a class name of `filter`. Within the div, add this new block: + +```html +
+
FILTER_NAME
+ {{ $resources := $.Site.Data.resources.resources }} + {{ $FILTER_NAMe := slice }} + {{ range $resources }} + {{ $FILTER_NAME = $years | append .FILTER_NAME }} + {{ $FILTER_NAME = uniq $FILTER_NAME }} + {{ end }} + {{ range $FILTER_NAME }} + {{ $filter := . }} +
+ + +
+ {{ end }} +
+``` + +Replace FILTER_NAME with the same name represented in the frontmatter (see step 2 above for reference). + +8. Save your changes and rebuild your frontend. + # Releasing a new version of the documentation To release a new version of the documentation you can use one of the following two scripts: diff --git a/assets/sass/style.sass b/assets/sass/style.sass index 0861a8af4..63817129f 100644 --- a/assets/sass/style.sass +++ b/assets/sass/style.sass @@ -228,3 +228,152 @@ details summary .mermaid margin: 2rem 0 4rem 0 + +section.row + justify-content: unset !important + & > .col + max-width: 1140px + & > .row + padding-left: 0 + padding-right: 0 + &.td-box + padding-top: 2rem + padding-bottom: 1.5rem + + .td-box--primary p > a + color: white + text-decoration: underline + +main.td-main + §ion.template-row + justify-content: unset !important + +.filter + top: 16% + left: -15px + z-index: 100 + +tablet + top: 0 + left: 0 + margin-top: 4px + width: 100px + + + +.filter-container + display: none + width: 100px + +tablet + display: block + +.mt-100 + margin-top: 100px + +.flex-gap-md + gap: 110px + +.tag-heading + font-size: 1rem !important + padding: 4px !important + padding-left: 8px !important + margin-right: 8px + +.tag-break + font-weight: 600 + +.tag + color: #222 + text-align: left + font-size: 0.8rem + font-weight: 600 + padding: 2px 6px 2px 6px + background-color: #3D6DDD + color: white + border-radius: 5px + margin-bottom: 2px + +.tag1 + position: absolute + left: 12px + bottom: 6px + +label.date + font-size: 0.8rem + font-weight: 400 + color: #999 + margin-left: 6px + text-align: right + position: absolute + right: 0 + bottom: 0 + padding-right: 6px + margin-bottom: 9px + +.td-content .col-lg-4 + border: 1px solid #dee2e6 + border-radius: 0.25rem + margin: 22px 16px + padding: 1px 1px 12px 1px + max-width: 300px + +.td-content h4 + color: #222 + text-align: left + font-size: 1rem + font-weight: 600 + padding-left: 12px + padding-right: 12px + padding-top: 12px + padding-bottom: 8px + +.filter-mobile-modal + border: 1px solid black + background-color: white + position: absolute + padding-left: 15px + height: fit-content + z-index: 90 + top: 37% + bottom: 5% + display: none + +.filter-mobile-btn + display: inline-block + margin-bottom: 40px + +tablet + display: none + +.filter-mobile-btn button + font-size: 1.2rem + +.filter-mobile-modal button + font-size: 1rem + +.template-resource + display: none + +.flex + display: flex + + +.justify-content-space + justify-content: space-between + +.width-90 + width: 90% + +.mt-40 + margin-top: 40px + +.mb-50 + margin-bottom: 50px + +.relative + position: relative + +.col-lg-4 + flex: none + +.img-thumbnail + height: 222px + object-fit: contain diff --git a/config.toml b/config.toml index b17f16a8f..a8eff5795 100644 --- a/config.toml +++ b/config.toml @@ -139,7 +139,7 @@ baseName = "_redirects" notAlternative = true [outputs] -home = [ "HTML", "REDIRECTS", "RSS", "Lunr" ] +home = [ "HTML", "REDIRECTS", "RSS", "Lunr", "SearchIndex" ] [outputFormats.Lunr] baseName = "index" @@ -147,5 +147,11 @@ isPlainText = true mediaType = "application/json" notAlternative = true +[outputFormats.SearchIndex] +baseName = "searchindex" +isPlainText = true +mediaType = "application/json" +notAlternative = true + [params.lunr] vars = ["title", "summary", "date", "publishdate", "expirydate", "permalink"] diff --git a/content/en/docs/learning-resources/_index.md b/content/en/docs/learning-resources/_index.md index ea30dfbdf..c1d8574f0 100644 --- a/content/en/docs/learning-resources/_index.md +++ b/content/en/docs/learning-resources/_index.md @@ -1,381 +1,7 @@ --- title: Learning Resources description: Talks, presentations and podcasts for your learning! +type: learning-resources weight: 2200 --- -## KubeCon EU 2024 - -Vitess: Introduction, New Features and the Vinted User Story - Florent Poinsard, Deepthi Sigireddi, PlanetScale & Kazimieras Aliulis, Vinted -{{< youtube id="uRB-Qni_bCM" autoplay="false" >}} - -## InfoQ 2024 -[Distributed Database Architecture in the Cloud Native Era](https://www.infoq.com/podcasts/distributed-database-architecture-deepthi-sigireddi/) - Deepthi Sigireddi, PlanetScale - -## Percona Live 2023 - -Vitess at GitHub - Arthur Schreiber, GitHub -{{< youtube id="_Xl24s_0mZs" autoplay="false" >}} - -Continuous and Automated Performance Benchmarking for Your Database - Florent Poinsard, PlanetScale -{{< youtube id="Nl2d1cnNNQo" autoplay="false" >}} - -MySQL and Vitess (and Kubernetes) at HubSpot - Jean-François Gagné & Swetha Narayanaswamy, HubSpot -{{< youtube id="85KIra7c2Iw" autoplay="false" >}} - -## KubeCon EU 2023 - -Introduction to Vitess and Real World Usage - Arthur Schreiber, GitHub & Florent Poinsard, PlanetScale -{{< youtube id="C2DsT1_zK_4" autoplay="false" >}} - -Scaling Databases at Activision - Greg Smith & Vladimir Kovacik, Activision/Blizzard -{{< youtube id="_ba9tbivT28" autoplay="false" >}} - -## FOSDEM 2023 - -[Life of a Query in Vitess](https://ftp.fau.de/fosdem/2023/K.3.201/life_query_vitess.webm) - Harshit Gangal, PlanetScale - -## preFOSDEM MySQL Days 2023 - -[How Vitess achieves Consensus with Replicated MySQL](https://www.mysql.com/news-and-events/events/preFOSDEM_MySQL_Days_2023/preFOSDEM_MySQL_Days_-_How_Vitess_achieves_Consensus_with_Replicated_MySQL.pdf) - Deepthi Sigireddi, PlanetScale - -## KubeCon NA 2022 - -One VTOrc To Rule Them All – High Availability In a Distributed Database System - Deepthi Sigireddi & Manan Gupta, PlanetScale - -{{< youtube id="upmByX8uD6E" autoplay="false" >}} - -Vitess: Introduction and New Features - Deepthi Sigireddi, Matt Lord & Rohit Nayak, PlanetScale - -{{< youtube id="cPQuj4eTCdY" autoplay="false" >}} - -## KubeCon EU 2022 - -Scaling Databases with Vitess - Harshit Gangal & Manan Gupta, PlanetScale - -{{< youtube id="HgSlmzC7O-E" autoplay="false" >}} - -## Percona Live 2022 - -Vitess VReplication: Standing on the Shoulders of a MySQL Giant - Matt Lord, PlanetScale - -{{< youtube id="ltoJ8gxs0YU" autoplay="false" >}} - -## FOSDEM 2022 - -* [The relational model in the modern development age](https://video.fosdem.org/2022/D.mysql/relational_model_dev.webm) - Shlomi Noach, PlanetScale - -## SE Radio 2022 -[How Vitess Scales MySQL](https://se-radio.net/2022/05/episode-510-deepthi-sigireddi-on-how-vitess-scales-mysql/) - Deepthi Sigireddi, PlanetScale - -## KubeCon China 2021 - -Continuous Performance Benchmarking for Vitess - Alkin Tezuysal, Florent Poinsard & Manan Gupta, PlanetScale - -{{< youtube id="fLullHPddvg" autoplay="false" >}} - -## KubeCon NA 2021 - -Vitess: Introduction and New Features - Deepthi Sigireddi & Alkin Tezuysal, PlanetScale; Andrew Mason & Malcolm Akinje, Slack Corp. - -{{< youtube id="uKdMR89mfdE" autoplay="false" >}} - -## Percona Live 2021 - -Deploying a Sharded Vitess Sandbox Cluster in Public Cloud Kubernetes in 10 Minutes - Jordan Moldow, Box - -{{< youtube id="Bllc-u_cCGA" autoplay="false" >}} - -Scaling MySQL @LinkedIn with Vitess - Apoorv Purohit and Karthik Appigatla, LinkedIn - -{{< youtube id="fbI6wIIKs50" autoplay="false" >}} - -Integrating Best of Breed Open Source Tools to Vitess: Orchestrator - Alkin Tezuysal, PlanetScale - -{{< youtube id="0a4xqQ3JYjw" autoplay="false" >}} - -Revertible, Recoverable Schema Migrations in Vitess - Shlomi Noach, PlanetScale - -{{< youtube id="kB7ziLxXft4" autoplay="false" >}} - -## Rawkode Live - -Introduction to Vitess - Deepthi Sigireddi & Alkin Tezuysal, PlanetScale with David McKay @rawkode - -{{< youtube id="Cwpu0y119I0" autoplay="false" >}} - -## Percona HOSS Talks FOSS! 2021 - -All Things Vitess, MySQL, and Sailing Passion - Alkin Tezuysal, PlanetScale - -{{< youtube id="8e3IC-lAgXs" autoplay="false" >}} - -## FOSDEM 2021 - -* [Open Source Database Infrastructure with Vitess](http://bofh.nikhef.nl/events/FOSDEM/2021/D.mysql/vitess.webm) - Shlomi Noach, PlanetScale -* [How to shard MariaDB like a Pro?](http://bofh.nikhef.nl/events/FOSDEM/2021/D.mariadb/mariadb_shard.webm) - Alkin Tezuysal, PlanetScale - -## KubeCon NA 2020 - -KubeCon featured several Vitess talks, including: - -* [Keynote: CNCF Projects Update](https://youtu.be/uNpZA5fz5o8) - CNCF -* [Vitess: Introduction and New Features](https://youtu.be/Nqzhgzg5WCw) - Sugu Sougoumarane & Deepthi Sigireddi, PlanetScale -* [Codename VIFL - How to Migrate MySQL Database Clusters to Vitess](https://youtu.be/k51L0xdClGQ) - Guido Iaquinti & Rafael Chacon , Slack - -## Percona Live Europe Online 2020 - -Vitess Online Schema Migration Automation - Shlomi Noach, PlanetScale - -{{< youtube id="iQYZ0dRe7O8" autoplay="false" >}} - -## CNCF Webinars 2020 - -* [Transactional microservices with Vitess - coordination without state](https://youtu.be/FaFzrVqkueI) - Dan Kozlowski - -## Quarantine 2020 Database Talks, Carnegie Mellon University - -Query Planning for a Sharded System like Vitess - Sugu Sougoumarane, CTO, PlanetScale - -{{< youtube id="TZb6m5ACIsA" autoplay="false" >}} - -## KubeCon EU 2020 - -KubeCon featured several Vitess talks, including: - -* [Vitess Intro: How to Migrate a MySQL Database to Vitess](https://youtu.be/WRNftOqRVVY) - Sugu Sougoumarane & Morgan Tocker -* [Zero Downtime Data Relocation with Vitess](https://youtu.be/6--4bQKMNF4) - Liz van Dijk & Deepthi Sigireddi, PlanetScale -* [Multicloud Vitess over Network Service Mesh](https://youtu.be/NulLc7DxXg8) - Tim Swanson, Cisco & John Watson, PlanetScale - -## Online Demo - -A demo of the new Vitess-native Orchestrator - Sugu Sougoumarane, CTO, PlanetScale - -{{< youtube id="JVHi2oN3lxM" autoplay="false" >}} - -## Percona Live NA Online 2020 - -Unbounded scale: Using Vitess for scaling write intensive workloads - Morgan Tocker, PlanetScale; Daniel Guzman Burgos, Percona - -{{< youtube id="kHPSp8coQ5g" autoplay="false" >}} - -## CNCF Webinar 2020 - -Lizz van Dijk demonstrates how to migrate from a regular MySQL release to Vitess. - -{{< youtube id="W8VbiXo39Ik" autoplay="false" >}} - -## MySQL Pre-FOSDEM Day 2020 - -Lizz van Dijk presents an introduction to Vitess for MySQL users. - - - -## QCon 2019 - -Sugu Sougoumarane gives an overview of the salient features of Vitess. - -[Video and Slides](https://www.infoq.com/presentations/vitess/) - -## KubeCon San Diego 2019 - -KubeCon featured several Vitess talks, including: - -* [Scaling Resilient Systems: A Journey into Slack's Database Service](https://youtu.be/aTItjMJE17c) - Rafael Chacon & Guido Iaquinti, Slack -* [How to Migrate a MySQL Database to Vitess](https://youtu.be/OCS45iy5v1M) - Sugu Sougoumarane & Morgan Tocker, PlanetScale -* [Building a Database as a Service on Kubernetes](https://youtu.be/469NOldFOgw) - Abhi Vaidyanatha & Lucy Burns, PlanetScale -* [Vitess: Stateless Storage in the Cloud](https://youtu.be/z63dtNj6ctY) - Sugu Sougoumarane, PlanetScale -* [Geo-partitioning with Vitess](https://youtu.be/-Hz6LFJu1cY) - Deepthi Sigireddi & Jitendra Vaidya, PlanetScale -* [Gone in 60 Minutes: Migrating 20 TB from AKS to GKE in an Hour with Vitess](https://youtu.be/KpygSD-v_ws) - Derek Perkins, Nozzle - -Vitess was also featured during the [CNCF project updates keynote](https://www.youtube.com/watch?v=two3TzF9mVY&feature=youtu.be&t=105)! - -## Highload 2019 - -Sugu Sougoumarane presents an overview of Vitess at Highload in Moscow. - - - -## Utah Kubernetes Meetup 2019 - -Jiten Vaidya shows how you can extend Vitess to create jurisdiction-aware database clusters. - - - -## CNCF Meetup Paris 2019 - -Sugu Sougoumarane and Morgan Tocker present a three hour Vitess workshop on Kubernetes. - - - -## Percona Live Europe 2019 - -**My First 90 Days with Vitess** - -Morgan Tocker talks about his adventures in Vitess, after having come from a MySQL background. - - - - -**Sharded MySQL on Kubernetes** - -Sugu Sougoumarane presents an overview of running sharded MySQL on Kubernetes. - - - -## Vitess Meetup 2019 @ Slack HQ - -**Vitess: New and Coming Soon!** - -Deepthi Sigireddi shares new features recently introduced in Vitess, and what's on the roadmap moving forward. - - - - -**Deploying multi-cell Vitess** - -Rafael Chacon Vivas describes how Vitess is used in Slack. - - - - -**Vitess at Pinterest** - -David Weitzman provides an overview of how Vitess is used at Pinterest. - -{{< youtube id="1cWWlaqlia8" autoplay="false" >}} - - -**No more Regrets** - -Sugu Sougoumarane demonstrates new features coming to VReplication. - -{{< youtube id="B1Nrtptjtcs" autoplay="false" >}} - -## Cloud Native Show 2019 - -**Vitess at scale - how Nozzle.io runs MySQL on Kubernetes** - -Derek Perkins joins the Cloud Native show and explains how Nozzle uses Vitess. - -[Listen to Podcast](https://anchor.fm/cloud-native-show/episodes/Vitess-at-scale---how-Nozzle-io-runs-MySQL-on-Kubernetes-e4m5lo) - -## CNCF Webinar 2019 - -**Vitess: Sharded MySQL on Kubernetes** - -Sugu Sougoumarane provides an overview of Vitess for Kubernetes users. - -{{< youtube id="E6H4bgJ3Z6c" autoplay="false" >}} - -## Kubecon China 2019 - -**How JD.Com runs the World's Largest Vitess** - -Xuhaihua and Jin Ke Xie present on their experience operating the largest known Vitess cluster, two years in. - -{{< youtube id="qww4UVNG3Io" autoplay="false" >}} - -## RootConf 2019 - -**OLTP or OLAP: why not both?** - -Jiten Vaidya from PlanetScale explains how you can use both OLTP and OLAP on Vitess. - -{{< youtube id="bhzJJF82mFc" autoplay="false" >}} - -## KubeCon EU 2019 - -**Vitess Intro** - -Deepthi Sigireddi and Sugu Sougoumarane of PlanetScale give an introduction to Vitess. - -{{< youtube id="H4B5zLBfGN8" autoplay="false" >}} - -**Vitess Deep Dive** - -Jiten Vaidya and Dan Kozlowski from PlanetScale deep dive on Vitess. - -{{< youtube id="OZl4HrB9p-8" autoplay="false" >}} - -## Percona Live Austin 2019 - -**Vitess: Running Sharded MySQL on Kubernetes** - -Sugu Sougoumarane shows how you can run sharded MySQL on Kubernetes. - -{{< youtube id="v7oxiVmGXp4" autoplay="false" >}} - - -**MySQL, Kubernetes, Business & Enterprise** - -David Cohen (Intel), Steve Shaw (Intel) and Jiten Vaidya (PlanetScale) discuss Open Source cloud native databases. - -[View Talk Abstract and Slides](https://www.percona.com/live/19/sessions/an-open-source-cloud-native-database-cndb) - -## Velocity New York 2018 - -**Smooth scaling: Slack’s journey toward a new database** - -Slack has experienced tremendous growth for a young company, serving over nine million weekly active customers. But with great growth comes greater growth pains. Slack’s rapid growth over the last few years outpaced the scaling capacity of its original sharded MySQL database, which negatively impacted the company’s customers and engineers. - -Ameet Kotian explains how a small team of engineers embarked on a journey for the right database solution, which eventually led them to Vitess, a powerful open source database cluster solution for MySQL. Vitess combines the features of MySQL with the scalability of a NoSQL database. It has been serving Youtube’s traffic for numerous years and has a strong community. - -Although Vitess meets a lot of Slack’s needs, it’s not an out-of-the-box solution. Ameet shares how the journey to Vitess was planned and executed, with little customer impact, in the face of piling operational challenges, such as AWS issues, MySQL replication, automatic failovers, deployments strategies, and so forth. Ameet also covers Vitess’s architecture, trade-offs, and what the future of Vitess looks like at Slack. - -Ameet Kotkian, senior storage operations engineer at Slack, shows us how Slack uses Vitess. - - - -## Percona Live Europe 2017 - -**Migrating to Vitess at (Slack) Scale** - -Slack is embarking on a major migration of the MySQL infrastructure at the core of our service to use Vitess' flexible sharding and management instead of our simple application-based shard routing and manual administration. This effort is driven by the need for an architecture that scales to meet the growing demands of our largest customers and features under the pressure to maintain a stable and performant service that executes billions of MySQL transactions per hour. This talk will present the driving motivations behind the change, why Vitess won out as the best option, and how we went about laying the groundwork for the switch. Finally, we will discuss some challenges and surprises (both good and bad) found during our initial migration efforts, and suggest some ways in which the Vitess ecosystem can improve that will aid future migration efforts. - -Michael Demmer shows us how, at [Percona Live Europe 2017](https://www.percona.com/live/e17/sessions/migrating-to-vitess-at-slack-scale). - - - -## Vitess Deep Dive sessions - -Start with session 1 and work your way through the playlist. This series focuses on the V3 engine of VTGate. - -{{< youtube id="6yOjF7qhmyY" autoplay="false" >}} - -## Percona Live 2016 - -[Sugu](https://github.com/sougou) and [Anthony](https://github.com/enisoc) showed what it looks like to use Vitess now that Keyspace IDs can be completely hidden from the application. They gave a live demo of resharding the Guestbook sample app, which now knows nothing about shards, and explained how new features in VTGate make all of this possible. - - - -## CoreOS Meetup, January 2016 - -Vitess team member [Anthony Yeh](https://github.com/enisoc)'s talk at -the [January 2016 CoreOS Meetup](http://www.meetup.com/coreos/events/228233948/) -discussed challenges and techniques for running distributed databases -within Kubernetes, followed by a deep dive into the design trade-offs -of the Vitess on Kubernetes deployment templates. - -Please note the Vitess on Kubernetes deployment templates were removed as of February 27, 2020. - - - -## Oracle OpenWorld 2015 - -Vitess team member [Anthony Yeh](https://github.com/enisoc)'s talk at Oracle OpenWorld 2015 focused on what the [Cloud Native Computing](http://cncf.io) paradigm means when applied to MySQL in the cloud. The talk also included a deep dive into [transparent, live resharding](../../reference/features/sharding/), one of the key -features of Vitess that makes it well-adapted for a Cloud Native environment. - - - -## Percona Live 2015 - -Vitess team member [Anthony Yeh](https://github.com/enisoc)'s talk at Percona Live 2015 provided an overview of Vitess as well as an explanation of how Vitess has evolved to live in a containerized world with Kubernetes and Docker. - - - -## Google I/O 2014 - Scaling with Go: YouTube's Vitess - -In this talk, [Sugu Sougoumarane](https://github.com/sougou) from the Vitess team talks about how Vitess solved YouTube's scalability problems as well as about tips and techniques used to scale with Go.

- -{{< youtube id="midJ6b1LkA0" autoplay="false" >}} diff --git a/data/resources.yaml b/data/resources.yaml new file mode 100644 index 000000000..4f4ad09c4 --- /dev/null +++ b/data/resources.yaml @@ -0,0 +1,290 @@ +resources: + # Use this template when adding new resources: + # + # - (optional) youtube: enter youtube ID here + # (optional) url: enter absolute link for resource + # title: "enter title here" + # date: YYYY + # type: video | slides | podcast | article + # (optional) thumbnail_url: enter absolute link of thumbnail for resource + # + # Note: To generate "thumbnail_url", visit https://embed.ly/docs/explore/extract + # and enter the link to the resource. Once you do that, select any thumbnail url of choice to use. + + - youtube: uRB-Qni_bCM + title: "Vitess: Introduction, New Features and the Vinted User Story - Florent Poinsard, Deepthi Sigireddi, PlanetScale & Kazimieras Aliulis, Vinted" + date: 2024 + type: video + - url: "https://www.infoq.com/podcasts/distributed-database-architecture-deepthi-sigireddi/" + title: "Distributed Database Architecture in the Cloud Native Era - Deepthi Sigireddi, PlanetScale" + date: 2024 + type: podcast + - youtube: _Xl24s_0mZs + title: "Vitess at GitHub - Arthur Schreiber, GitHub" + date: 2023 + type: video + - youtube: Nl2d1cnNNQo + title: "Continuous and Automated Performance Benchmarking for Your Database - Florent Poinsard, PlanetScale" + date: 2023 + type: video + - youtube: 85KIra7c2Iw + title: "MySQL and Vitess (and Kubernetes) at HubSpot - Jean-François Gagné & Swetha Narayanaswamy, HubSpot" + date: 2023 + type: video + - youtube: C2DsT1_zK_4 + title: "Introduction to Vitess and Real World Usage - Arthur Schreiber, GitHub & Florent Poinsard, PlanetScale" + date: 2023 + type: video + - youtube: _ba9tbivT28 + title: "Scaling Databases at Activision - Greg Smith & Vladimir Kovacik, Activision/Blizzard" + date: 2023 + type: video + - url: "https://ftp.fau.de/fosdem/2023/K.3.201/life_query_vitess.webm" + title: "Life of a Query in Vitess - Harshit Gangal, PlanetScale" + date: 2023 + type: video + - url: "https://www.mysql.com/news-and-events/events/preFOSDEM_MySQL_Days_2023/preFOSDEM_MySQL_Days_-_How_Vitess_achieves_Consensus_with_Replicated_MySQL.pdf" + title: "How Vitess achieves Consensus with Replicated MySQL - Deepthi Sigireddi, PlanetScale" + date: 2023 + type: slides + - youtube: upmByX8uD6E + title: "One VTOrc To Rule Them All – High Availability In a Distributed Database System - Deepthi Sigireddi & Manan Gupta, PlanetScale" + date: 2022 + type: video + - youtube: cPQuj4eTCdY + title: "Vitess: Introduction and New Features - Deepthi Sigireddi, Matt Lord & Rohit Nayak, PlanetScale" + date: 2022 + type: video + - youtube: HgSlmzC7O-E + title: "Scaling Databases with Vitess - Harshit Gangal & Manan Gupta, PlanetScale" + date: 2022 + type: video + - youtube: ltoJ8gxs0YU + title: "Vitess VReplication: Standing on the Shoulders of a MySQL Giant - Matt Lord, PlanetScale" + date: 2022 + type: video + - url: "https://video.fosdem.org/2022/D.mysql/relational_model_dev.webm" + title: "The relational model in the modern development age - Shlomi Noach, PlanetScale" + date: 2022 + type: video + - url: "https://se-radio.net/2022/05/episode-510-deepthi-sigireddi-on-how-vitess-scales-mysql/" + title: "How Vitess Scales MySQL - Deepthi Sigireddi, PlanetScale" + date: 2022 + type: podcast + - youtube: fLullHPddvg + title: "Continuous Performance Benchmarking for Vitess - Alkin Tezuysal, Florent Poinsard & Manan Gupta, PlanetScale" + date: 2021 + type: video + - youtube: uKdMR89mfdE + title: "Vitess: Introduction and New Features - Deepthi Sigireddi & Alkin Tezuysal, PlanetScale; Andrew Mason & Malcolm Akinje, Slack Corp." + date: 2021 + type: video + - youtube: Bllc-u_cCGA + title: "Deploying a Sharded Vitess Sandbox Cluster in Public Cloud Kubernetes in 10 Minutes - Jordan Moldow, Box" + date: 2021 + type: video + - youtube: fbI6wIIKs50 + title: "Scaling MySQL @LinkedIn with Vitess - Apoorv Purohit and Karthik Appigatla, LinkedIn" + date: 2021 + type: video + - youtube: 0a4xqQ3JYjw + title: "Integrating Best of Breed Open Source Tools to Vitess: Orchestrator - Alkin Tezuysal, PlanetScale" + date: 2021 + type: video + - youtube: kB7ziLxXft4 + title: "Revertible, Recoverable Schema Migrations in Vitess - Shlomi Noach, PlanetScale" + date: 2021 + type: video + - youtube: Cwpu0y119I0 + title: "Introduction to Vitess - Deepthi Sigireddi & Alkin Tezuysal, PlanetScale with David McKay @rawkode" + date: 2021 + type: video + - youtube: 8e3IC-lAgXs + title: "All Things Vitess, MySQL, and Sailing Passion - Alkin Tezuysal, PlanetScale" + date: 2021 + type: video + - url: "http://bofh.nikhef.nl/events/FOSDEM/2021/D.mysql/vitess.webm" + title: "Open Source Database Infrastructure with Vitess - Shlomi Noach, PlanetScale" + date: 2021 + type: video + - url: "http://bofh.nikhef.nl/events/FOSDEM/2021/D.mariadb/mariadb_shard.webm" + title: "How to shard MariaDB like a Pro? - Alkin Tezuysal, PlanetScale" + date: 2021 + type: video + - youtube: uNpZA5fz5o8 + title: "Keynote: CNCF Projects Update - CNCF" + date: 2020 + type: video + - youtube: Nqzhgzg5WCw + title: "Vitess: Introduction and New Features - Sugu Sougoumarane & Deepthi Sigireddi, PlanetScale" + date: 2020 + type: video + - youtube: k51L0xdClGQ + title: "Codename VIFL - How to Migrate MySQL Database Clusters to Vitess - Guido Iaquinti & Rafael Chacon , Slack" + date: 2020 + type: video + - youtube: iQYZ0dRe7O8 + title: "Vitess Online Schema Migration Automation - Shlomi Noach, PlanetScale" + date: 2020 + type: video + - youtube: FaFzrVqkueI + title: "Transactional microservices with Vitess - coordination without state -Dan Kozlowski" + date: 2020 + type: video + - youtube: TZb6m5ACIsA + title: "Query Planning for a Sharded System like Vitess - Sugu Sougoumarane, CTO, PlanetScale" + date: 2020 + type: video + - youtube: WRNftOqRVVY + title: "Vitess Intro: How to Migrate a MySQL Database to Vitess - Sugu Sougoumarane & Morgan Tocker" + date: 2020 + type: video + - youtube: 6--4bQKMNF4 + title: "Zero Downtime Data Relocation with Vitess - Liz van Dijk & Deepthi Sigireddi, PlanetScale" + date: 2020 + type: video + - youtube: NulLc7DxXg8 + title: "Multicloud Vitess over Network Service Mesh - Tim Swanson, Cisco & John Watson, PlanetScale" + date: 2020 + type: video + - youtube: JVHi2oN3lxM + title: "A demo of the new Vitess-native Orchestrator - Sugu Sougoumarane, CTO, PlanetScale" + date: 2020 + type: video + - youtube: kHPSp8coQ5g + title: "Unbounded scale: Using Vitess for scaling write intensive workloads - Morgan Tocker, PlanetScale; Daniel Guzman Burgos, Percona" + date: 2020 + type: video + - youtube: W8VbiXo39Ik + title: "Lizz van Dijk demonstrates how to migrate from a regular MySQL release to Vitess." + date: 2020 + type: video + - url: "/ViewerJS/#../files/2020-lizz-prefosdem.pdf" + title: "Lizz van Dijk presents an introduction to Vitess for MySQL users." + date: 2020 + type: slides + - url: "https://www.infoq.com/presentations/vitess/" + title: "Sugu Sougoumarane gives an overview of the salient features of Vitess." + date: 2019 + type: video + - youtube: aTItjMJE17c + title: "Scaling Resilient Systems: A Journey into Slack's Database Service - Rafael Chacon & Guido Iaquinti, Slack" + date: 2019 + type: video + - youtube: OCS45iy5v1M + title: "How to Migrate a MySQL Database to Vitess - Sugu Sougoumarane & Morgan Tocker, PlanetScale" + date: 2019 + type: video + - youtube: 469NOldFOgw + title: "Building a Database as a Service on Kubernetes - Abhi Vaidyanatha & Lucy Burns, PlanetScale" + date: 2019 + type: video + - youtube: z63dtNj6ctY + title: "Vitess: Stateless Storage in the Cloud - Sugu Sougoumarane, PlanetScale" + date: 2019 + type: video + - youtube: -Hz6LFJu1cY + title: "Geo-partitioning with Vitess - Deepthi Sigireddi & Jitendra Vaidya, PlanetScale" + date: 2019 + type: video + - youtube: KpygSD-v_ws + title: "Gone in 60 Minutes: Migrating 20 TB from AKS to GKE in an Hour with Vitess - Derek Perkins, Nozzle" + date: 2019 + type: video + - url: "/ViewerJS/#../files/2019-sugu-highload.pdf" + title: "Overview of Vitess at Highload - Sugu Sougoumarane" + date: 2019 + type: slides + - url: "/ViewerJS/#../files/2019-jiten-utah.pdf" + title: "How you can extend Vitess to create jurisdiction-aware database clusters - Jiten Vaidya" + date: 2019 + type: slides + - url: "/ViewerJS/#../files/2019-paris-cncf.pdf" + title: "Sugu Sougoumarane and Morgan Tocker present a three hour Vitess workshop on Kubernetes." + date: 2019 + type: slides + - url: "/ViewerJS/#../files/2019-morgan-percona-eu.pdf" + title: "My First 90 Days with VitessL - Morgan Tocker" + date: 2019 + type: slides + - url: "/ViewerJS/#../files/2019-sugu-percona-eu.pdf" + title: "Sharded MySQL on Kubernetes - Sugu Sougoumarane." + date: 2019 + type: slides + - url: "/ViewerJS/#../files/2019-deepthi-vitess-meetup.pdf" + title: "Vitess: New and Coming Soon! - Deepthi Sigireddi" + date: 2019 + type: slides + - url: "/ViewerJS/#../files/2019-rafael-vitess-meetup.pdf" + title: "Deploying multi-cell Vitess - Rafael Chacon" + date: 2019 + type: slides + - youtube: 1cWWlaqlia8 + title: "Vitess at Pinterest - David Weitzman, Pinterest" + date: 2019 + type: video + - youtube: B1Nrtptjtcs + title: "No more Regrets - Sugu Sougoumarane" + date: 2019 + type: video + - url: "https://anchor.fm/cloud-native-show/episodes/Vitess-at-scale---how-Nozzle-io-runs-MySQL-on-Kubernetes-e4m5lo" + title: "Vitess at scale - how Nozzle.io runs MySQL on Kubernetes - Derek Perkins" + date: 2019 + type: podcast + - youtube: E6H4bgJ3Z6c + title: "Vitess: Sharded MySQL on Kubernetes - Sugu Sougoumarane" + date: 2019 + type: video + - youtube: qww4UVNG3Io + title: "How JD.Com runs the World's Largest Vitess - Xuhaihua & Jin Ke Xie, PlanetScale" + date: 2019 + type: video + - youtube: bhzJJF82mFc + title: "OLTP or OLAP: why not both? - Jiten Vaidya, PlanetScale" + date: 2019 + type: video + - youtube: H4B5zLBfGN8 + title: "Vitess Intro - Deepthi Sigireddi & Sugu Sougoumarane, PlanetScale" + date: 2019 + type: video + - youtube: OZl4HrB9p-8 + title: "Vitess Deep Dive - Jiten Vaidya & Dan Kozlowski, PlanetScale" + date: 2019 + type: video + - youtube: v7oxiVmGXp4 + title: "Vitess: Running Sharded MySQL on Kubernetes - Sugu Sougoumarane, PlanetScale" + date: 2019 + type: video + - url: "/ViewerJS/#../files/20181002-ameet-velocity-slides.pdf" + title: "Smooth scaling: Slack’s journey toward a new database - Ameet Kotkian, Slack" + date: 2018 + type: slides + - url: "/ViewerJS/#../files/2017-demmer-percona.pdf" + title: "Migrating to Vitess at (Slack) Scale - Michael Demmer, Slack" + date: 2017 + type: slides + - youtube: 6yOjF7qhmyY + title: "Vitess Deep Dive sessions" + date: 2017 + type: video + - url: "/ViewerJS/#../files/percona-2016.pdf" + title: "Vitess: The complete story - Sugu & Anthony, PlanetScale" + date: 2016 + type: slides + - url: "/ViewerJS/#../files/coreos-meetup-2016-01-27.pdf" + title: "YouTube Vitess: Anatomy of a Distributed Database on Kubernetes - Anthony Yeh" + date: 2016 + type: slides + - url: "/ViewerJS/#../files/openworld-2015-vitess.pdf" + title: "YouTube Vitess: Cloud-Native MySQL - Anthony Yeh" + date: 2015 + type: slides + - url: "/ViewerJS/#../files/percona-2015-vitess-and-kubernetes.pdf" + title: "YouTube Vitess: Scaling MySQL in the cloud with Vitess and Kubernetes - Anthony Yeh" + date: 2015 + type: slides + - youtube: midJ6b1LkA0 + title: "Scaling with Go: YouTube's Vitess - Sugu Sougoumarane, PlanetScale" + date: 2015 + type: video + \ No newline at end of file diff --git a/layouts/_default/index.searchindex.json b/layouts/_default/index.searchindex.json new file mode 100644 index 000000000..6d48eee2d --- /dev/null +++ b/layouts/_default/index.searchindex.json @@ -0,0 +1,5 @@ +{{- $searchindex := slice -}} +{{- range $resources := $.Site.Data.resources.resources -}} + {{- $searchindex = $searchindex | append (dict "title" $resources.title "youtube" $resources.youtube "url" $resources.url "thumbnail_url" $resources.thumbnail_url "type" $resources.type "year" $resources.date ) -}} +{{- end -}} +{{- $searchindex | jsonify -}} diff --git a/layouts/learning-resources/list.html b/layouts/learning-resources/list.html new file mode 100644 index 000000000..079c5b96f --- /dev/null +++ b/layouts/learning-resources/list.html @@ -0,0 +1,84 @@ +{{ define "title" }} The Vitess Docs | {{ .Title }} {{ end }} {{ define "main" +}} +
+
+ {{ partial "docs/sidebar.html" . }} +
+ +
+ {{ partial "navbar.html" . }} + +
+ {{ partial "docs/header.html" . }} + +
+ {{ .Content }} + +
+
+

Filter resources accordingly

+
+ +
+
+ {{ partial "learning-resources/filter-panel.html" . }} +
+ +
+ +
+ {{ partial "learning-resources/filter-panel.html" . }} +
+
+ + +
+
+ +
+ + {{ $resources := $.Site.Data.resources.resources }} {{ $years := slice + }} {{ range $resources }} {{ $years = $years | append .date }} {{ $years = uniq $years }} {{ end }} {{ range $years + }} {{ $year := . }} +
+

{{ . }}

+ +
+
+
+ {{ range $resources }} {{ if eq .date + $year }} {{ partial "learning-resources/resource.html" . }} {{ end }} + {{ end }} +
+
+
+
+ {{ end }} +
+ + {{ partial "learning-resources/template-container.html" . }} +
+
+ +
+ {{ partial "docs/next-prev-navigation.html" . }} +
+
+ + {{ partial "docs/footer.html" . }} +
+
+{{ end }} diff --git a/layouts/partials/javascript.html b/layouts/partials/javascript.html index bcd54a8dd..1559f9112 100644 --- a/layouts/partials/javascript.html +++ b/layouts/partials/javascript.html @@ -268,3 +268,176 @@ }); } + + + diff --git a/layouts/partials/learning-resources/filter-panel.html b/layouts/partials/learning-resources/filter-panel.html new file mode 100644 index 000000000..ba9d66160 --- /dev/null +++ b/layouts/partials/learning-resources/filter-panel.html @@ -0,0 +1,33 @@ +
+
+
Type
+
+ + +
+
+ + +
+
+ + +
+
+
+
Year
+ {{ $resources := $.Site.Data.resources.resources }} + {{ $years := slice }} + {{ range $resources }} + {{ $years = $years | append .date }} + {{ $years = uniq $years }} + {{ end }} + {{ range $years }} + {{ $year := . }} +
+ + +
+ {{ end }} +
+
diff --git a/layouts/partials/learning-resources/resource.html b/layouts/partials/learning-resources/resource.html new file mode 100644 index 000000000..68377c8cc --- /dev/null +++ b/layouts/partials/learning-resources/resource.html @@ -0,0 +1,25 @@ +{{ $youtube := .youtube }} +{{ $youtube_url := print "https://www.youtube.com/watch?v=" $youtube }} +{{ $thumbnail := printf "https://i3.ytimg.com/vi/%s/0.jpg" $youtube }} + +{{ if .url }} +{{ $thumbnail = "/img/logos/vitess-horizontal.png" }} +{{ end }} + +{{ if .thumbnail_url }} +{{ $thumbnail = .thumbnail_url }} +{{ end }} + +{{ $url := .url | default $youtube_url }} +{{ $title := .title | default "Unnamed Resource" }} + +
+ {{ $title | markdownify }} +

{{ $title | markdownify }}

+ + {{ .type }} + + +
+ +
{{ partial "learning-resources/template-resource.html" . }}
diff --git a/layouts/partials/learning-resources/template-container.html b/layouts/partials/learning-resources/template-container.html new file mode 100644 index 000000000..46b2bf18b --- /dev/null +++ b/layouts/partials/learning-resources/template-container.html @@ -0,0 +1,26 @@ + +
+ +
+ +
+ +

+ +

+ +
+ +
+
+
{{ partial "learning-resources/template-resource.html" . }}
+
+
+
+
diff --git a/layouts/partials/learning-resources/template-resource.html b/layouts/partials/learning-resources/template-resource.html new file mode 100644 index 000000000..621324688 --- /dev/null +++ b/layouts/partials/learning-resources/template-resource.html @@ -0,0 +1,12 @@ +