Skytable is heavily multithreaded enabling incredible vertical scalability and you can witness it for yourself by running benchmarks (or looking at ones that we publish). Clustering and replication are on track to be released soon.
-
Implementations on track
Clustering and replication are right on track and we're expecting to deliver them by May, 2024. We'd also like to note that
+
Implementations on track
Clustering and replication are right on track and we're expecting to deliver them by early Q1'25. We'd also like to note that
clustering is too important to ignore so you can be assured that we're hard at work on it.
Skytable will use atleast as many threads as the number of logical CPUs present on the host. At this moment it is not possible to limit multithreading because multithreading is a part of Skytable's design principles and every attempt is made to exploit available CPU cores to the fullest.
diff --git a/assets/js/ff78723e.071aa9ae.js b/assets/js/ff78723e.8f92fda2.js
similarity index 73%
rename from assets/js/ff78723e.071aa9ae.js
rename to assets/js/ff78723e.8f92fda2.js
index 9343c044a..d40896267 100644
--- a/assets/js/ff78723e.071aa9ae.js
+++ b/assets/js/ff78723e.8f92fda2.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5425],{955:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=t(4848),a=t(8453);const s={id:"architecture",title:"Architecture"},r=void 0,o={id:"architecture",title:"Architecture",description:"Skytable is a modern NoSQL database that prioritises performance, scalability and reliability while providing a rich and powerful querying interface.",source:"@site/docs/c.architecture.md",sourceDirName:".",slug:"/architecture",permalink:"/architecture",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{id:"architecture",title:"Architecture"},sidebar:"docs",previous:{title:"Client drivers",permalink:"/libraries"},next:{title:"BlueQL",permalink:"/blueql/"}},l={},d=[{value:"Fundamental differences from relational systems",id:"fundamental-differences-from-relational-systems",level:2},{value:"Data model",id:"data-model",level:2},{value:"A space is like a database",id:"a-space-is-like-a-database",level:3},{value:"A model is like a table",id:"a-model-is-like-a-table",level:3},{value:"Query language",id:"query-language",level:2},{value:"Transactions",id:"transactions",level:2},{value:"Storage",id:"storage",level:2},{value:"Scalability",id:"scalability",level:2},{value:"Networking",id:"networking",level:2},{value:"Backwards compatibility",id:"backwards-compatibility",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Skytable is a modern NoSQL database that prioritises performance, scalability and reliability while providing a rich and powerful querying interface.\nWe are generally targetting an audience that wants to build high performance, large-scale, low latency applications, such as social networking services,\nauth services, adtech and such. Skytable is designed to work with both ",(0,i.jsx)(n.strong,{children:"structured and semi-structured data"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Our goal is to provide you with a powerful and solid foundation for your application with no gimmicks \u2014 just a solid core. That's why, every component in\nSkytable has been engineered from the ground up, from scratch."}),"\n",(0,i.jsx)(n.p,{children:"And all of that, without you having to be an expert, and with the least maintenance that you can expect."}),"\n",(0,i.jsx)(n.h2,{id:"fundamental-differences-from-relational-systems",children:"Fundamental differences from relational systems"}),"\n",(0,i.jsx)(n.p,{children:"BlueQL kind of looks and feels like using SQL with a relational database but that doesn't make Skytable's internals the same, with the most important\ndistinction being the fact that Skytable has a NoSQL engine! But Skytable's evaluation and execution of queries is fundamentally different from SQL\ncounterparts and even NoSQL engines. Here are some key differences:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["All DML queries are point queries and ",(0,i.jsx)(n.strong,{children:"not"})," range queries:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"This means that they will either return atleast one row or error"}),"\n",(0,i.jsxs)(n.li,{children:["If you intend to do a multi-row query, then it won't work unless you add ",(0,i.jsx)(n.code,{children:"ALL"}),". ",(0,i.jsx)(n.code,{children:"ALL"})," by itself indicates that you're applying (or selecting) a large range and can be inefficient"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Multi-row DML queries are slow and inefficient and are discouraged"}),"\n",(0,i.jsxs)(n.li,{children:["You can ",(0,i.jsx)(n.strong,{children:"only"})," query on the primary index, once again because of speed (and the problem with scaling multiple indexes) with a fixed set of operators."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Remember, in NoSQL systems we denormalize."})," Hence, no ",(0,i.jsx)(n.code,{children:"JOIN"}),"s or foreign keys as with many other NoSQL systems"]}),"\n",(0,i.jsxs)(n.li,{children:["A different transactional model:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All DDL and DCL queries are ACID transactions"}),"\n",(0,i.jsxs)(n.li,{children:["However, DML transactions are not ACID and instead are efficiently batched and are automatically made part of a batch\ntransaction. The engine decides ",(0,i.jsx)(n.em,{children:"when"})," it will execute them, for example based on the pressure on cache. That's because our\nfocus is to maximize throughput"]}),"\n",(0,i.jsxs)(n.li,{children:["All these differences mean that ",(0,i.jsx)(n.strong,{children:"DDL and DCL transactions are ACID transactions"})," while ",(0,i.jsxs)(n.strong,{children:["DML queries are ACI and ",(0,i.jsx)(n.em,{children:"eventually"})," D"]})," (we call it a ",(0,i.jsx)(n.em,{children:"delayed durability transaction"}),"). This delay however can be adjusted to make sure that the DML\nqueries ",(0,i.jsx)(n.em,{children:"emulate"})," ACID transactions but that defeats the point of the eventually durable system which aims to heavily increase throughput."]}),"\n",(0,i.jsx)(n.li,{children:"The idea of eventually durable transactions relies on the idea that hardware failure even though prominent is still rare,\nthanks to the extreme hard work that cloud vendors put into reliability engineering. If you plan to run on unreliable hardware, then the delay setting (reliability service) is what you need to change."}),"\n",(0,i.jsxs)(n.li,{children:["For extremely unreliable hardware on the other hand, we're working on a new storage driver ",(0,i.jsx)(n.code,{children:"rtsyncblock"})," that is expected to be released in Q1'24"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"The transactional engine powering DDL and DCL queries might often choose to demote a transaction to a virtual transaction which makes sure that the transaction is obviously durable but not necessarily actually executed but is eventually executed. If the system crashes, the engine will still be able to actually execute the transaction (even if it crashed halfway)"}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"We believe you can now hopefully see how Skytable's workings are fundamentally different from traditional engines. And, we know\nthat you might have a lot of questions! If you do, please reach out. We're here to help."})}),"\n",(0,i.jsx)(n.h2,{id:"data-model",children:"Data model"}),"\n",(0,i.jsxs)(n.p,{children:["Just like SQL has ",(0,i.jsx)(n.code,{children:"DATABASE"}),"s, Skytable has ",(0,i.jsx)(n.code,{children:"SPACE"}),"s which are collections of what we call data containers like tables.\nIn Skytable lingo, we don't call them tables but call them ",(0,i.jsx)(n.code,{children:"MODEL"}),"s which enable you to ",(0,i.jsx)(n.em,{children:"define your data model"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["While a ",(0,i.jsx)(n.code,{children:"MODEL"})," is the only data container for now, many more are set to come. Now is a good time to ",(0,i.jsx)(n.a,{href:"https://discord.gg/QptWFdx",children:"join our discord server"})," where you can directly chat with the developers working on Skytable and all our awesome community members."]})}),"\n",(0,i.jsxs)(n.h3,{id:"a-space-is-like-a-database",children:["A ",(0,i.jsx)(n.code,{children:"space"})," is like a ",(0,i.jsx)(n.code,{children:"database"})]}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.code,{children:"space"})," in Skytable is a collection of ",(0,i.jsx)(n.code,{children:"model"}),"s and other objects, and settings. It is different from a traditional SQL\nDatabase (that is created with SQL's ",(0,i.jsx)(n.code,{children:"CREATE DATABASE"}),") because it is not meant for tables only, but many other things."]}),"\n",(0,i.jsxs)(n.p,{children:['Spaces have "space local" settings that can be set for the space (and will be respected by all its ',(0,i.jsx)(n.code,{children:"models"})," and other items). You'll learn more about this in the section on DDL."]}),"\n",(0,i.jsxs)(n.h3,{id:"a-model-is-like-a-table",children:["A ",(0,i.jsx)(n.code,{children:"model"})," is like a ",(0,i.jsx)(n.code,{children:"table"})]}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.code,{children:"model"})," in Skytable is like a ",(0,i.jsx)(n.code,{children:"table"})," in SQL but is vastly different because of certain concepts such as:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"DML queries are point and not range queries by default"}),"\n",(0,i.jsx)(n.li,{children:"Restrictions on indexes"}),"\n",(0,i.jsxs)(n.li,{children:["Settings (which can't be created in traditional ",(0,i.jsx)(n.code,{children:"table"}),"s)"]}),"\n",(0,i.jsx)(n.li,{children:"Semi-structured data: with collection types in columns such as lists and dictionaries that violates some of the ideas of\ntraditional schema enforcement"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"query-language",children:"Query language"}),"\n",(0,i.jsxs)(n.p,{children:["Skytable has its own query language BlueQL",(0,i.jsx)("sup",{children:"TM"})," which takes a lot of inspiration from SQL but makes several different (and sometimes vastly different) design choices, focused on clarity, speed, simplicity and most importantly, security."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, Skytable's BlueQL",(0,i.jsx)("sup",{children:"TM"})," ",(0,i.jsx)(n.em,{children:"only"})," allows the parameterization of queries. All the queries you ran previously with strings and numbers directly were only possible because the REPL client smartly does the paramterization behind the scenes. This is done for security. You'll learn more about BlueQL next."]}),"\n",(0,i.jsx)(n.h2,{id:"transactions",children:"Transactions"}),"\n",(0,i.jsx)(n.p,{children:"Skytable's DDL and DCL queries are all ACID transactions. However, DML queries use an AOF-style storage driver that periodically\nrecords, analyses and then intelligently syncs the changes to disk. We're working on making ACID transactions widely available\nacross DML queries as well."}),"\n",(0,i.jsx)(n.h2,{id:"storage",children:"Storage"}),"\n",(0,i.jsx)(n.p,{children:"Skytable's storage engine is collectively called the Skytable Disk Storage Subsystem or SDSS for short. The storage engine uses\nseveral different storage drivers, using ones appropriate for the task. We do not use RocksDB or any other engine but we\nimplement everything in house, engineering them piece by piece."}),"\n",(0,i.jsx)(n.admonition,{title:"Features on track",type:"info",children:(0,i.jsxs)(n.p,{children:["At this point, Skytable is primarily in-memory which means that while it uses disk storage for durability, most data is stored in-memory. ",(0,i.jsx)(n.strong,{children:"This is going to change in the near future as the team is working on building a custom log-based engine."})," As you might understand, this is not an everyday task and as we incorporate new ideas it will take some time. But if you're seeing this in 2024, you can expect us to ship something by early 2025."]})}),"\n",(0,i.jsx)(n.p,{children:"DDL and DCL transactions use a log-based append-only driver while DML queries use a custom log-based append-only driver that is able to intelligently handle concurrent changes. The team will implement new and updated storage drivers from time to time but you do not have to worry about anything, due to our promise for backwards compatibility (see below)."}),"\n",(0,i.jsx)(n.h2,{id:"scalability",children:"Scalability"}),"\n",(0,i.jsx)(n.p,{children:"Skytable is heavily multithreaded enabling incredible vertical scalability and you can witness it for yourself by running benchmarks (or looking at ones that we publish). Clustering and replication are on track to be released soon."}),"\n",(0,i.jsx)(n.admonition,{title:"Implementations on track",type:"info",children:(0,i.jsx)(n.p,{children:"Clustering and replication are right on track and we're expecting to deliver them by May, 2024. We'd also like to note that\nclustering is too important to ignore so you can be assured that we're hard at work on it."})}),"\n",(0,i.jsx)(n.p,{children:"Skytable will use atleast as many threads as the number of logical CPUs present on the host. At this moment it is not possible to limit multithreading because multithreading is a part of Skytable's design principles and every attempt is made to exploit available CPU cores to the fullest."}),"\n",(0,i.jsx)(n.h2,{id:"networking",children:"Networking"}),"\n",(0,i.jsx)(n.p,{children:"Skytable uses its own in-house Skyhash protocol for client-server communication. It is built on top of TCP, enabling any programming language that has a\nTCP client to use it without issues. There are three phases in the connection:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Handshake: All auth data, compatibility information and other data is exchanged at this step"}),"\n",(0,i.jsx)(n.li,{children:"Connection mode selection: based on the handshake parameters a connection mode is chosen and the server responds with the chosen exchange mode"}),"\n",(0,i.jsx)(n.li,{children:"Data exchange: This is where the real querying happens"}),"\n",(0,i.jsxs)(n.li,{children:["Termination: there is no special step; just a ",(0,i.jsx)(n.code,{children:"TCP FIN"})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["You can ",(0,i.jsx)(n.a,{href:"protocol",children:"read more about the protocol here"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"backwards-compatibility",children:"Backwards compatibility"}),"\n",(0,i.jsx)(n.p,{children:"We make the promise to you that no matter what changes in Skytable, you will always be able to:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Upgrade from one version to another without data loss or too many hoops"}),"\n",(0,i.jsx)(n.li,{children:"Export data from Skytable at any time"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"More technically:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"For minor/patch releases"}),": The minor/patch is just in the name but it indicates that no data migration effort is needed. ",(0,i.jsx)(n.strong,{children:"No minor releases ever need data migration, and any migration is done automatically"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"For major releases"}),": Major releases generally introduce breaking changes (just like the upgrade from ",(0,i.jsx)(n.code,{children:"0.7.x"})," to ",(0,i.jsx)(n.code,{children:"0.8.0"})," is a largely breaking change). ",(0,i.jsx)(n.strong,{children:"Major releases will either automatically upgrade the data files or require you to use a migration tool that is shipped with the bundle"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Definitions (closely following semantic versioning):","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"A major release"})," is something like ",(0,i.jsx)(n.code,{children:"1.0.0"})," to ",(0,i.jsx)(n.code,{children:"2.0.0"})," or ",(0,i.jsx)(n.code,{children:"0.8.0"})," to ",(0,i.jsx)(n.code,{children:"0.9.0"})," (in development versions, 0.8.0 to 0.9.0 is considered a major version\nbump)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"A minor release"})," is something like ",(0,i.jsx)(n.code,{children:"1.0.0"})," to ",(0,i.jsx)(n.code,{children:"1.1.0"})," or ",(0,i.jsx)(n.code,{children:"0.8.0"})," to ",(0,i.jsx)(n.code,{children:"0.8.1"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"A patch release"})," is something like ",(0,i.jsx)(n.code,{children:"1.0.0"})," to ",(0,i.jsx)(n.code,{children:"1.0.1"})," or ",(0,i.jsx)(n.code,{children:"0.8.0"})," to ",(0,i.jsx)(n.code,{children:"0.8.1"})," (note that in development versions there is no distinction between a minor and patch release)"]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(6540);const a={},s=i.createContext(a);function r(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5425],{955:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=t(4848),a=t(8453);const s={id:"architecture",title:"Architecture"},r=void 0,o={id:"architecture",title:"Architecture",description:"Skytable is a modern NoSQL database that prioritises performance, scalability and reliability while providing a rich and powerful querying interface.",source:"@site/docs/c.architecture.md",sourceDirName:".",slug:"/architecture",permalink:"/architecture",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{id:"architecture",title:"Architecture"},sidebar:"docs",previous:{title:"Client drivers",permalink:"/libraries"},next:{title:"BlueQL",permalink:"/blueql/"}},l={},d=[{value:"Fundamental differences from relational systems",id:"fundamental-differences-from-relational-systems",level:2},{value:"Data model",id:"data-model",level:2},{value:"A space is like a database",id:"a-space-is-like-a-database",level:3},{value:"A model is like a table",id:"a-model-is-like-a-table",level:3},{value:"Query language",id:"query-language",level:2},{value:"Transactions",id:"transactions",level:2},{value:"Storage",id:"storage",level:2},{value:"Scalability",id:"scalability",level:2},{value:"Networking",id:"networking",level:2},{value:"Backwards compatibility",id:"backwards-compatibility",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Skytable is a modern NoSQL database that prioritises performance, scalability and reliability while providing a rich and powerful querying interface.\nWe are generally targetting an audience that wants to build high performance, large-scale, low latency applications, such as social networking services,\nauth services, adtech and such. Skytable is designed to work with both ",(0,i.jsx)(n.strong,{children:"structured and semi-structured data"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Our goal is to provide you with a powerful and solid foundation for your application with no gimmicks \u2014 just a solid core. That's why, every component in\nSkytable has been engineered from the ground up, from scratch."}),"\n",(0,i.jsx)(n.p,{children:"And all of that, without you having to be an expert, and with the least maintenance that you can expect."}),"\n",(0,i.jsx)(n.h2,{id:"fundamental-differences-from-relational-systems",children:"Fundamental differences from relational systems"}),"\n",(0,i.jsx)(n.p,{children:"BlueQL kind of looks and feels like using SQL with a relational database but that doesn't make Skytable's internals the same, with the most important\ndistinction being the fact that Skytable has a NoSQL engine! But Skytable's evaluation and execution of queries is fundamentally different from SQL\ncounterparts and even NoSQL engines. Here are some key differences:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["All DML queries are point queries and ",(0,i.jsx)(n.strong,{children:"not"})," range queries:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"This means that they will either return atleast one row or error"}),"\n",(0,i.jsxs)(n.li,{children:["If you intend to do a multi-row query, then it won't work unless you add ",(0,i.jsx)(n.code,{children:"ALL"}),". ",(0,i.jsx)(n.code,{children:"ALL"})," by itself indicates that you're applying (or selecting) a large range and can be inefficient"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Multi-row DML queries are slow and inefficient and are discouraged"}),"\n",(0,i.jsxs)(n.li,{children:["You can ",(0,i.jsx)(n.strong,{children:"only"})," query on the primary index, once again because of speed (and the problem with scaling multiple indexes) with a fixed set of operators."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Remember, in NoSQL systems we denormalize."})," Hence, no ",(0,i.jsx)(n.code,{children:"JOIN"}),"s or foreign keys as with many other NoSQL systems"]}),"\n",(0,i.jsxs)(n.li,{children:["A different transactional model:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All DDL and DCL queries are ACID transactions"}),"\n",(0,i.jsxs)(n.li,{children:["However, DML transactions are not ACID and instead are efficiently batched and are automatically made part of a batch\ntransaction. The engine decides ",(0,i.jsx)(n.em,{children:"when"})," it will execute them, for example based on the pressure on cache. That's because our\nfocus is to maximize throughput"]}),"\n",(0,i.jsxs)(n.li,{children:["All these differences mean that ",(0,i.jsx)(n.strong,{children:"DDL and DCL transactions are ACID transactions"})," while ",(0,i.jsxs)(n.strong,{children:["DML queries are ACI and ",(0,i.jsx)(n.em,{children:"eventually"})," D"]})," (we call it a ",(0,i.jsx)(n.em,{children:"delayed durability transaction"}),"). This delay however can be adjusted to make sure that the DML\nqueries ",(0,i.jsx)(n.em,{children:"emulate"})," ACID transactions but that defeats the point of the eventually durable system which aims to heavily increase throughput."]}),"\n",(0,i.jsx)(n.li,{children:"The idea of eventually durable transactions relies on the idea that hardware failure even though prominent is still rare,\nthanks to the extreme hard work that cloud vendors put into reliability engineering. If you plan to run on unreliable hardware, then the delay setting (reliability service) is what you need to change."}),"\n",(0,i.jsxs)(n.li,{children:["For extremely unreliable hardware on the other hand, we're working on a new storage driver ",(0,i.jsx)(n.code,{children:"rtsyncblock"})," that is expected to be released in Q1'24"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"The transactional engine powering DDL and DCL queries might often choose to demote a transaction to a virtual transaction which makes sure that the transaction is obviously durable but not necessarily actually executed but is eventually executed. If the system crashes, the engine will still be able to actually execute the transaction (even if it crashed halfway)"}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"We believe you can now hopefully see how Skytable's workings are fundamentally different from traditional engines. And, we know\nthat you might have a lot of questions! If you do, please reach out. We're here to help."})}),"\n",(0,i.jsx)(n.h2,{id:"data-model",children:"Data model"}),"\n",(0,i.jsxs)(n.p,{children:["Just like SQL has ",(0,i.jsx)(n.code,{children:"DATABASE"}),"s, Skytable has ",(0,i.jsx)(n.code,{children:"SPACE"}),"s which are collections of what we call data containers like tables.\nIn Skytable lingo, we don't call them tables but call them ",(0,i.jsx)(n.code,{children:"MODEL"}),"s which enable you to ",(0,i.jsx)(n.em,{children:"define your data model"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["While a ",(0,i.jsx)(n.code,{children:"MODEL"})," is the only data container for now, many more are set to come. Now is a good time to ",(0,i.jsx)(n.a,{href:"https://discord.gg/QptWFdx",children:"join our discord server"})," where you can directly chat with the developers working on Skytable and all our awesome community members."]})}),"\n",(0,i.jsxs)(n.h3,{id:"a-space-is-like-a-database",children:["A ",(0,i.jsx)(n.code,{children:"space"})," is like a ",(0,i.jsx)(n.code,{children:"database"})]}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.code,{children:"space"})," in Skytable is a collection of ",(0,i.jsx)(n.code,{children:"model"}),"s and other objects, and settings. It is different from a traditional SQL\nDatabase (that is created with SQL's ",(0,i.jsx)(n.code,{children:"CREATE DATABASE"}),") because it is not meant for tables only, but many other things."]}),"\n",(0,i.jsxs)(n.p,{children:['Spaces have "space local" settings that can be set for the space (and will be respected by all its ',(0,i.jsx)(n.code,{children:"models"})," and other items). You'll learn more about this in the section on DDL."]}),"\n",(0,i.jsxs)(n.h3,{id:"a-model-is-like-a-table",children:["A ",(0,i.jsx)(n.code,{children:"model"})," is like a ",(0,i.jsx)(n.code,{children:"table"})]}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.code,{children:"model"})," in Skytable is like a ",(0,i.jsx)(n.code,{children:"table"})," in SQL but is vastly different because of certain concepts such as:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"DML queries are point and not range queries by default"}),"\n",(0,i.jsx)(n.li,{children:"Restrictions on indexes"}),"\n",(0,i.jsxs)(n.li,{children:["Settings (which can't be created in traditional ",(0,i.jsx)(n.code,{children:"table"}),"s)"]}),"\n",(0,i.jsx)(n.li,{children:"Semi-structured data: with collection types in columns such as lists and dictionaries that violates some of the ideas of\ntraditional schema enforcement"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"query-language",children:"Query language"}),"\n",(0,i.jsxs)(n.p,{children:["Skytable has its own query language BlueQL",(0,i.jsx)("sup",{children:"TM"})," which takes a lot of inspiration from SQL but makes several different (and sometimes vastly different) design choices, focused on clarity, speed, simplicity and most importantly, security."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, Skytable's BlueQL",(0,i.jsx)("sup",{children:"TM"})," ",(0,i.jsx)(n.em,{children:"only"})," allows the parameterization of queries. All the queries you ran previously with strings and numbers directly were only possible because the REPL client smartly does the paramterization behind the scenes. This is done for security. You'll learn more about BlueQL next."]}),"\n",(0,i.jsx)(n.h2,{id:"transactions",children:"Transactions"}),"\n",(0,i.jsx)(n.p,{children:"Skytable's DDL and DCL queries are all ACID transactions. However, DML queries use an AOF-style storage driver that periodically\nrecords, analyses and then intelligently syncs the changes to disk. We're working on making ACID transactions widely available\nacross DML queries as well."}),"\n",(0,i.jsx)(n.h2,{id:"storage",children:"Storage"}),"\n",(0,i.jsx)(n.p,{children:"Skytable's storage engine is collectively called the Skytable Disk Storage Subsystem or SDSS for short. The storage engine uses\nseveral different storage drivers, using ones appropriate for the task. We do not use RocksDB or any other engine but we\nimplement everything in house, engineering them piece by piece."}),"\n",(0,i.jsx)(n.admonition,{title:"Features on track",type:"info",children:(0,i.jsxs)(n.p,{children:["At this point, Skytable is primarily in-memory which means that while it uses disk storage for durability, most data is stored in-memory. ",(0,i.jsx)(n.strong,{children:"This is going to change in the near future as the team is working on building a custom log-based engine."})," As you might understand, this is not an everyday task and as we incorporate new ideas it will take some time. But if you're seeing this in 2024, you can expect us to ship something by early 2025."]})}),"\n",(0,i.jsx)(n.p,{children:"DDL and DCL transactions use a log-based append-only driver while DML queries use a custom log-based append-only driver that is able to intelligently handle concurrent changes. The team will implement new and updated storage drivers from time to time but you do not have to worry about anything, due to our promise for backwards compatibility (see below)."}),"\n",(0,i.jsx)(n.h2,{id:"scalability",children:"Scalability"}),"\n",(0,i.jsx)(n.p,{children:"Skytable is heavily multithreaded enabling incredible vertical scalability and you can witness it for yourself by running benchmarks (or looking at ones that we publish). Clustering and replication are on track to be released soon."}),"\n",(0,i.jsx)(n.admonition,{title:"Implementations on track",type:"info",children:(0,i.jsx)(n.p,{children:"Clustering and replication are right on track and we're expecting to deliver them by early Q1'25. We'd also like to note that\nclustering is too important to ignore so you can be assured that we're hard at work on it."})}),"\n",(0,i.jsx)(n.p,{children:"Skytable will use atleast as many threads as the number of logical CPUs present on the host. At this moment it is not possible to limit multithreading because multithreading is a part of Skytable's design principles and every attempt is made to exploit available CPU cores to the fullest."}),"\n",(0,i.jsx)(n.h2,{id:"networking",children:"Networking"}),"\n",(0,i.jsx)(n.p,{children:"Skytable uses its own in-house Skyhash protocol for client-server communication. It is built on top of TCP, enabling any programming language that has a\nTCP client to use it without issues. There are three phases in the connection:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Handshake: All auth data, compatibility information and other data is exchanged at this step"}),"\n",(0,i.jsx)(n.li,{children:"Connection mode selection: based on the handshake parameters a connection mode is chosen and the server responds with the chosen exchange mode"}),"\n",(0,i.jsx)(n.li,{children:"Data exchange: This is where the real querying happens"}),"\n",(0,i.jsxs)(n.li,{children:["Termination: there is no special step; just a ",(0,i.jsx)(n.code,{children:"TCP FIN"})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["You can ",(0,i.jsx)(n.a,{href:"protocol",children:"read more about the protocol here"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"backwards-compatibility",children:"Backwards compatibility"}),"\n",(0,i.jsx)(n.p,{children:"We make the promise to you that no matter what changes in Skytable, you will always be able to:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Upgrade from one version to another without data loss or too many hoops"}),"\n",(0,i.jsx)(n.li,{children:"Export data from Skytable at any time"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"More technically:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"For minor/patch releases"}),": The minor/patch is just in the name but it indicates that no data migration effort is needed. ",(0,i.jsx)(n.strong,{children:"No minor releases ever need data migration, and any migration is done automatically"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"For major releases"}),": Major releases generally introduce breaking changes (just like the upgrade from ",(0,i.jsx)(n.code,{children:"0.7.x"})," to ",(0,i.jsx)(n.code,{children:"0.8.0"})," is a largely breaking change). ",(0,i.jsx)(n.strong,{children:"Major releases will either automatically upgrade the data files or require you to use a migration tool that is shipped with the bundle"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Definitions (closely following semantic versioning):","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"A major release"})," is something like ",(0,i.jsx)(n.code,{children:"1.0.0"})," to ",(0,i.jsx)(n.code,{children:"2.0.0"})," or ",(0,i.jsx)(n.code,{children:"0.8.0"})," to ",(0,i.jsx)(n.code,{children:"0.9.0"})," (in development versions, 0.8.0 to 0.9.0 is considered a major version\nbump)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"A minor release"})," is something like ",(0,i.jsx)(n.code,{children:"1.0.0"})," to ",(0,i.jsx)(n.code,{children:"1.1.0"})," or ",(0,i.jsx)(n.code,{children:"0.8.0"})," to ",(0,i.jsx)(n.code,{children:"0.8.1"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"A patch release"})," is something like ",(0,i.jsx)(n.code,{children:"1.0.0"})," to ",(0,i.jsx)(n.code,{children:"1.0.1"})," or ",(0,i.jsx)(n.code,{children:"0.8.0"})," to ",(0,i.jsx)(n.code,{children:"0.8.1"})," (note that in development versions there is no distinction between a minor and patch release)"]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(6540);const a={},s=i.createContext(a);function r(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.7a31173a.js b/assets/js/runtime~main.1643fdb4.js
similarity index 99%
rename from assets/js/runtime~main.7a31173a.js
rename to assets/js/runtime~main.1643fdb4.js
index 491fc605d..f5a7c531f 100644
--- a/assets/js/runtime~main.7a31173a.js
+++ b/assets/js/runtime~main.1643fdb4.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,b,f,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,b,f)=>{if(!c){var d=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,b,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var d={};a=a||[null,c({}),c([]),c(c)];for(var t=2&b&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,r.d(f,d),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({168:"0f669020",204:"43cf645b",284:"1c5bdcc0",295:"b34fd168",322:"b1d9ab1e",329:"55771474",491:"6a9eda4d",503:"2ef51344",623:"670c12fe",651:"f6ca6b97",698:"bef7336c",705:"d03628f5",832:"362a08a0",839:"bf86ff3c",893:"939cc5d6",957:"c141421f",1010:"3e832dc9",1071:"18abd1b1",1135:"00849eb8",1245:"588b3e90",1288:"1573eefc",1312:"85c21da9",1313:"b8a88df5",1496:"a9f8d366",1511:"3e753cd6",1535:"733fd614",1567:"22dd74f7",1597:"3593a311",1648:"1b355885",1691:"d0914994",1736:"0a6d04ec",1778:"e85ca7bd",1807:"859ae2ee",1881:"6bddfb77",1932:"cdce02d4",1938:"b56621c4",1958:"b09b582c",1969:"7232540e",2020:"7535d00c",2041:"bcfce1ff",2138:"1a4e3797",2151:"55bac7f1",2289:"49ec188d",2340:"e22dd37b",2355:"1136c95f",2372:"8ba0b14e",2384:"448d8494",2395:"cd573875",2440:"997887a4",2487:"9abe0306",2554:"f0a7be2b",2825:"89fd9e76",2849:"7eca411d",2881:"2773c291",2883:"d2c557a5",2885:"bf5678db",2893:"e82058ca",2912:"778292f0",2954:"c414bc73",3017:"6abe9687",3030:"6727d074",3087:"f8837ada",3213:"8cfdc86d",3216:"5158272a",3234:"87ff70ad",3239:"b73968e4",3276:"d8d94b5c",3336:"c4e30bec",3361:"c377a04b",3465:"a33ba820",3466:"d94d4c87",3487:"13dac574",3582:"5edea9bf",3701:"88f07c05",3723:"c75f9093",3782:"7123b015",3822:"59b54398",3823:"efd8aafa",3839:"6b8fde54",3863:"fd366d10",3922:"894aac81",3935:"29b06e33",4011:"ee01c0d2",4088:"3ba08586",4100:"5fb694b3",4244:"f7fdec3a",4291:"749d1be8",4365:"6bb47aa3",4370:"49ec685e",4391:"d95065c8",4420:"c0ceb000",4423:"1f1a3550",4426:"b572c5af",4437:"4733bf47",4560:"483085cf",4634:"d9ab0005",4670:"ae4c0ee2",4691:"ce5795f4",4709:"2e44b5ea",4757:"a21738db",4808:"f17273da",4810:"72032a86",4811:"ce097dff",4835:"6b87b92b",4846:"ec707320",4859:"e21c15d3",4918:"0efd896e",4963:"fd615c45",5023:"ea31ac95",5035:"a36d89ba",5044:"b5a8c0e1",5055:"ee40b307",5059:"bccbf329",5075:"1901b863",5196:"fd5230de",5211:"84ed2c91",5242:"955e0f14",5256:"ddd45ac8",5289:"92b9ac0d",5296:"5e3fdd1e",5333:"45483604",5385:"a1d1dd1b",5418:"760c21a9",5423:"f9345a93",5425:"ff78723e",5445:"e3704d3e",5452:"5c02a21c",5459:"b4a62d96",5468:"333ace74",5472:"f4cea0fd",5501:"1c3a2cc2",5527:"5a1b55cd",5534:"5b464c81",5536:"c0d85328",5574:"8d7b95e3",5579:"dc0829bf",5659:"735f4e8b",5715:"d862c92b",5717:"5a648b40",5718:"791af571",5723:"796c6854",5742:"aba21aa0",5839:"f000fa6c",5858:"108062f4",5868:"7ca8dcb0",5981:"45cfda70",6043:"10598b0c",6054:"20310182",6082:"077e182c",6209:"be23a2ab",6235:"884c101c",6309:"a73fd9a7",6321:"3f015f6c",6329:"68d9e37d",6349:"655ebc95",6466:"ba4c4c42",6584:"3a3d9827",6597:"d4aa3b2e",6615:"820321aa",6689:"6ebbc2a9",6715:"2673cc66",6728:"41cfe910",6750:"e9d57344",6776:"61483c77",6851:"f14e0d42",6944:"e1012b35",6969:"14eb3368",6972:"73bb290b",6980:"4748fea8",7054:"364843de",7098:"a7bd4aaa",7174:"59841b15",7181:"398ec6ec",7185:"3aec8d28",7296:"1190ec46",7328:"7f1a228f",7391:"bcc493bb",7444:"4575aa6b",7466:"283abc1e",7476:"0e046e27",7491:"6315f7a9",7533:"fa4df832",7538:"63e7d659",7606:"7041e121",7644:"a233450e",7670:"45762ba8",7702:"b478df71",7740:"38c0e729",7765:"0eed62d0",7783:"5499eab5",7800:"fd3065b9",7823:"acaa9510",7826:"c9ef35f2",7853:"393ba31b",7900:"a377b775",7983:"b6d05f96",8024:"b213ac14",8029:"1d32a22a",8152:"38b1a18c",8362:"718e3846",8401:"17896441",8467:"590f7409",8493:"00520511",8495:"c6da9900",8648:"a5572c7a",8658:"dff954e4",8694:"63d6513e",8787:"5d4750be",8791:"fea443f9",8792:"a482deb9",8804:"4cacf3e6",8847:"413b7f27",8898:"16d48d9c",8937:"858b8f4c",8958:"93201ccf",9048:"a94703ab",9054:"b41b7274",9122:"17a01669",9136:"4415fef0",9143:"9776f283",9191:"e6557b6f",9202:"3b39eb61",9256:"bf95a5e0",9338:"95f524cc",9357:"453d2cf9",9366:"0fe8a02a",9502:"72ce6c4c",9519:"17721d7a",9538:"f0a0c15c",9552:"cbe58da9",9554:"f6df46a6",9588:"a3713279",9624:"70010fe2",9647:"5e95c892",9659:"77510a09",9665:"a97a69dc",9684:"9b543a4a",9757:"105374d0",9770:"1cd70b93",9840:"82b53ec7",9864:"bcf25bf9",9894:"0d7f7339",9947:"9c1c0c58"}[e]||e)+"."+{168:"d25a5110",204:"3bd2f5af",284:"a37ea219",295:"485df26d",322:"a07193ef",329:"79395793",416:"5a82d981",491:"23dbd36a",503:"574761ce",623:"ef04c9dc",651:"59fa0b12",698:"cabd455a",705:"8866b5bc",832:"838b0688",839:"693e56cf",893:"40c0b766",957:"faee654a",1010:"9f7efd10",1071:"6d89ecea",1135:"8636179d",1245:"cba0b368",1288:"3de8ae49",1312:"f7c23beb",1313:"0b731b7f",1496:"1cf88bae",1511:"0c351a03",1535:"d4663737",1567:"95f0c2bd",1597:"74c6d222",1648:"a1270855",1691:"f84edd20",1736:"84bf22b8",1778:"f6c21911",1807:"e378cce9",1881:"a4b087e3",1932:"ec6ed67f",1938:"9774f52b",1958:"4373f965",1969:"ad7ff009",2020:"b0e18734",2041:"5731a8ac",2138:"b997a4ea",2151:"88d89c4e",2237:"03c1976d",2289:"1ddf7564",2340:"8daefdf6",2355:"b4471e99",2372:"3f61091f",2384:"2c5e2f28",2395:"b6153e9a",2440:"13acb4b8",2487:"03416d34",2554:"5058b793",2825:"7f3329da",2849:"2280c2b6",2881:"21c123eb",2883:"e2b4c9aa",2885:"89fbf3f5",2893:"eedc3c6a",2912:"36bf6a5b",2954:"04fa45a1",3017:"61c6281e",3030:"95612489",3087:"3b653be0",3213:"0d0031e6",3216:"781f76fc",3234:"96b1d246",3239:"0a4977f0",3276:"655ee956",3336:"3acf92be",3361:"bd732838",3465:"f986de47",3466:"99bd854c",3487:"0b60c243",3582:"75ccf611",3701:"4bc5c2e8",3723:"1245786d",3782:"3c3b4ab9",3822:"b61df74f",3823:"589d2c46",3839:"7a0d0ab2",3863:"414be1af",3922:"59c2d27e",3935:"a39d77e2",4011:"6d949b60",4088:"d0f4ba53",4100:"1d898480",4244:"dc979397",4291:"cba4908f",4365:"abeb749d",4370:"a8cece29",4391:"2d5d9274",4420:"26d4b8b3",4423:"551d319e",4426:"ea686c9a",4437:"cb5f0b61",4560:"2b8f6a2b",4634:"af84a087",4670:"42a661cc",4691:"1daed32b",4709:"bf2b42dc",4757:"5de55e65",4808:"57b0e988",4810:"059fb516",4811:"11b33431",4835:"e5e9ea7c",4846:"c6e8da1e",4859:"1f60f7a7",4918:"460fbc6a",4963:"0240e017",5023:"bcfbb029",5035:"a0a434ce",5044:"64227f3b",5055:"57eaf175",5059:"d1dba9aa",5075:"47be10be",5196:"949b9311",5211:"b0bd002d",5242:"160bc916",5256:"b9448509",5289:"4c73411f",5296:"22dc91c6",5333:"db44fe9c",5385:"a14a72dd",5418:"b320a423",5423:"dc64d462",5425:"071aa9ae",5445:"d6486515",5452:"a1e16ce8",5459:"ae1b4adc",5468:"e0fe1744",5472:"531f2cc7",5501:"8f64902d",5527:"ea0922ed",5534:"1adb5d84",5536:"af78df95",5574:"d77cde72",5579:"46ddf16d",5659:"b86d0e6d",5715:"c1f3e964",5717:"9af191f1",5718:"24dfb905",5723:"717c3f47",5742:"ed09cce9",5839:"d8ffab31",5858:"8b89cd67",5868:"08915c29",5981:"5536f522",6043:"1a909002",6054:"433ebfe9",6082:"c263834c",6209:"612e9629",6235:"d34e8cc7",6309:"8e47d530",6321:"65801514",6329:"65061572",6349:"3cbad3b3",6466:"024fc59a",6584:"fcbb2d81",6597:"a5e7e202",6615:"6451c663",6689:"3c7e5dd6",6715:"f3fb0b40",6728:"eba7c961",6750:"f640519e",6776:"477e2eb4",6851:"8e83ae2d",6944:"8c6febe9",6969:"4d27f5f2",6972:"9ebad8c4",6980:"46fbc30b",7054:"c74f29c3",7098:"29aa088f",7174:"7133b9fb",7181:"8508f7dc",7185:"85a972af",7296:"e3a537e1",7328:"f193ae4b",7391:"1717fbc1",7444:"c4b83ca0",7466:"ec525f11",7476:"4f470335",7491:"d07230bb",7533:"b0828b82",7538:"82491d14",7606:"6ede9807",7644:"ec3b5103",7670:"88eb170b",7702:"1baa57d6",7740:"99469a14",7765:"d05672fe",7783:"fb04a8fa",7800:"95182f68",7823:"d9d088d1",7826:"80346936",7853:"d53a881c",7900:"8287d003",7983:"c3b4d691",8024:"0456a911",8029:"c5a04b0a",8152:"5c62980a",8362:"a14c24cb",8401:"66bbdd1f",8467:"b718e4f0",8493:"d1dbc001",8495:"e4bf9175",8648:"d27440b6",8658:"9604adde",8694:"1bb728ea",8787:"a515579c",8791:"447ad865",8792:"68eb394a",8804:"767f5a3c",8847:"59b11c31",8898:"6fcd74a5",8913:"64e5ee35",8937:"dd3f7e68",8958:"8a20905f",9048:"a4bd031d",9054:"474220fe",9122:"deb2817c",9136:"db41fcaa",9143:"34571fbc",9191:"b5601052",9202:"05a2f845",9256:"d62f460e",9338:"62924258",9357:"afa14f88",9366:"a3df22d4",9462:"d587a550",9502:"d642963a",9519:"c92c2d1c",9538:"21904a78",9552:"4986d2b6",9554:"04a8f185",9588:"866fe6ac",9624:"009dc0f3",9647:"1c5eed15",9659:"9889eb19",9665:"0b152b5c",9684:"aad5bc2b",9757:"87194896",9770:"a0a3f8bd",9840:"f264ab06",9864:"bc7412db",9894:"46858e9f",9947:"0ee45e93"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},f="docs:",r.l=(e,a,c,d)=>{if(b[e])b[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401",20310182:"6054",45483604:"5333",55771474:"329","0f669020":"168","43cf645b":"204","1c5bdcc0":"284",b34fd168:"295",b1d9ab1e:"322","6a9eda4d":"491","2ef51344":"503","670c12fe":"623",f6ca6b97:"651",bef7336c:"698",d03628f5:"705","362a08a0":"832",bf86ff3c:"839","939cc5d6":"893",c141421f:"957","3e832dc9":"1010","18abd1b1":"1071","00849eb8":"1135","588b3e90":"1245","1573eefc":"1288","85c21da9":"1312",b8a88df5:"1313",a9f8d366:"1496","3e753cd6":"1511","733fd614":"1535","22dd74f7":"1567","3593a311":"1597","1b355885":"1648",d0914994:"1691","0a6d04ec":"1736",e85ca7bd:"1778","859ae2ee":"1807","6bddfb77":"1881",cdce02d4:"1932",b56621c4:"1938",b09b582c:"1958","7232540e":"1969","7535d00c":"2020",bcfce1ff:"2041","1a4e3797":"2138","55bac7f1":"2151","49ec188d":"2289",e22dd37b:"2340","1136c95f":"2355","8ba0b14e":"2372","448d8494":"2384",cd573875:"2395","997887a4":"2440","9abe0306":"2487",f0a7be2b:"2554","89fd9e76":"2825","7eca411d":"2849","2773c291":"2881",d2c557a5:"2883",bf5678db:"2885",e82058ca:"2893","778292f0":"2912",c414bc73:"2954","6abe9687":"3017","6727d074":"3030",f8837ada:"3087","8cfdc86d":"3213","5158272a":"3216","87ff70ad":"3234",b73968e4:"3239",d8d94b5c:"3276",c4e30bec:"3336",c377a04b:"3361",a33ba820:"3465",d94d4c87:"3466","13dac574":"3487","5edea9bf":"3582","88f07c05":"3701",c75f9093:"3723","7123b015":"3782","59b54398":"3822",efd8aafa:"3823","6b8fde54":"3839",fd366d10:"3863","894aac81":"3922","29b06e33":"3935",ee01c0d2:"4011","3ba08586":"4088","5fb694b3":"4100",f7fdec3a:"4244","749d1be8":"4291","6bb47aa3":"4365","49ec685e":"4370",d95065c8:"4391",c0ceb000:"4420","1f1a3550":"4423",b572c5af:"4426","4733bf47":"4437","483085cf":"4560",d9ab0005:"4634",ae4c0ee2:"4670",ce5795f4:"4691","2e44b5ea":"4709",a21738db:"4757",f17273da:"4808","72032a86":"4810",ce097dff:"4811","6b87b92b":"4835",ec707320:"4846",e21c15d3:"4859","0efd896e":"4918",fd615c45:"4963",ea31ac95:"5023",a36d89ba:"5035",b5a8c0e1:"5044",ee40b307:"5055",bccbf329:"5059","1901b863":"5075",fd5230de:"5196","84ed2c91":"5211","955e0f14":"5242",ddd45ac8:"5256","92b9ac0d":"5289","5e3fdd1e":"5296",a1d1dd1b:"5385","760c21a9":"5418",f9345a93:"5423",ff78723e:"5425",e3704d3e:"5445","5c02a21c":"5452",b4a62d96:"5459","333ace74":"5468",f4cea0fd:"5472","1c3a2cc2":"5501","5a1b55cd":"5527","5b464c81":"5534",c0d85328:"5536","8d7b95e3":"5574",dc0829bf:"5579","735f4e8b":"5659",d862c92b:"5715","5a648b40":"5717","791af571":"5718","796c6854":"5723",aba21aa0:"5742",f000fa6c:"5839","108062f4":"5858","7ca8dcb0":"5868","45cfda70":"5981","10598b0c":"6043","077e182c":"6082",be23a2ab:"6209","884c101c":"6235",a73fd9a7:"6309","3f015f6c":"6321","68d9e37d":"6329","655ebc95":"6349",ba4c4c42:"6466","3a3d9827":"6584",d4aa3b2e:"6597","820321aa":"6615","6ebbc2a9":"6689","2673cc66":"6715","41cfe910":"6728",e9d57344:"6750","61483c77":"6776",f14e0d42:"6851",e1012b35:"6944","14eb3368":"6969","73bb290b":"6972","4748fea8":"6980","364843de":"7054",a7bd4aaa:"7098","59841b15":"7174","398ec6ec":"7181","3aec8d28":"7185","1190ec46":"7296","7f1a228f":"7328",bcc493bb:"7391","4575aa6b":"7444","283abc1e":"7466","0e046e27":"7476","6315f7a9":"7491",fa4df832:"7533","63e7d659":"7538","7041e121":"7606",a233450e:"7644","45762ba8":"7670",b478df71:"7702","38c0e729":"7740","0eed62d0":"7765","5499eab5":"7783",fd3065b9:"7800",acaa9510:"7823",c9ef35f2:"7826","393ba31b":"7853",a377b775:"7900",b6d05f96:"7983",b213ac14:"8024","1d32a22a":"8029","38b1a18c":"8152","718e3846":"8362","590f7409":"8467","00520511":"8493",c6da9900:"8495",a5572c7a:"8648",dff954e4:"8658","63d6513e":"8694","5d4750be":"8787",fea443f9:"8791",a482deb9:"8792","4cacf3e6":"8804","413b7f27":"8847","16d48d9c":"8898","858b8f4c":"8937","93201ccf":"8958",a94703ab:"9048",b41b7274:"9054","17a01669":"9122","4415fef0":"9136","9776f283":"9143",e6557b6f:"9191","3b39eb61":"9202",bf95a5e0:"9256","95f524cc":"9338","453d2cf9":"9357","0fe8a02a":"9366","72ce6c4c":"9502","17721d7a":"9519",f0a0c15c:"9538",cbe58da9:"9552",f6df46a6:"9554",a3713279:"9588","70010fe2":"9624","5e95c892":"9647","77510a09":"9659",a97a69dc:"9665","9b543a4a":"9684","105374d0":"9757","1cd70b93":"9770","82b53ec7":"9840",bcf25bf9:"9864","0d7f7339":"9894","9c1c0c58":"9947"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)c.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>b=e[a]=[c,f]));c.push(b[2]=f);var d=r.p+r.u(a),t=new Error;r.l(d,(c=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var f=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",t.name="ChunkLoadError",t.type=f,t.request=d,b[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var b,f,d=c[0],t=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(a&&a(c);n{"use strict";var e,a,c,b,f,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,b,f)=>{if(!c){var d=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,b,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var d={};a=a||[null,c({}),c([]),c(c)];for(var t=2&b&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,r.d(f,d),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({168:"0f669020",204:"43cf645b",284:"1c5bdcc0",295:"b34fd168",322:"b1d9ab1e",329:"55771474",491:"6a9eda4d",503:"2ef51344",623:"670c12fe",651:"f6ca6b97",698:"bef7336c",705:"d03628f5",832:"362a08a0",839:"bf86ff3c",893:"939cc5d6",957:"c141421f",1010:"3e832dc9",1071:"18abd1b1",1135:"00849eb8",1245:"588b3e90",1288:"1573eefc",1312:"85c21da9",1313:"b8a88df5",1496:"a9f8d366",1511:"3e753cd6",1535:"733fd614",1567:"22dd74f7",1597:"3593a311",1648:"1b355885",1691:"d0914994",1736:"0a6d04ec",1778:"e85ca7bd",1807:"859ae2ee",1881:"6bddfb77",1932:"cdce02d4",1938:"b56621c4",1958:"b09b582c",1969:"7232540e",2020:"7535d00c",2041:"bcfce1ff",2138:"1a4e3797",2151:"55bac7f1",2289:"49ec188d",2340:"e22dd37b",2355:"1136c95f",2372:"8ba0b14e",2384:"448d8494",2395:"cd573875",2440:"997887a4",2487:"9abe0306",2554:"f0a7be2b",2825:"89fd9e76",2849:"7eca411d",2881:"2773c291",2883:"d2c557a5",2885:"bf5678db",2893:"e82058ca",2912:"778292f0",2954:"c414bc73",3017:"6abe9687",3030:"6727d074",3087:"f8837ada",3213:"8cfdc86d",3216:"5158272a",3234:"87ff70ad",3239:"b73968e4",3276:"d8d94b5c",3336:"c4e30bec",3361:"c377a04b",3465:"a33ba820",3466:"d94d4c87",3487:"13dac574",3582:"5edea9bf",3701:"88f07c05",3723:"c75f9093",3782:"7123b015",3822:"59b54398",3823:"efd8aafa",3839:"6b8fde54",3863:"fd366d10",3922:"894aac81",3935:"29b06e33",4011:"ee01c0d2",4088:"3ba08586",4100:"5fb694b3",4244:"f7fdec3a",4291:"749d1be8",4365:"6bb47aa3",4370:"49ec685e",4391:"d95065c8",4420:"c0ceb000",4423:"1f1a3550",4426:"b572c5af",4437:"4733bf47",4560:"483085cf",4634:"d9ab0005",4670:"ae4c0ee2",4691:"ce5795f4",4709:"2e44b5ea",4757:"a21738db",4808:"f17273da",4810:"72032a86",4811:"ce097dff",4835:"6b87b92b",4846:"ec707320",4859:"e21c15d3",4918:"0efd896e",4963:"fd615c45",5023:"ea31ac95",5035:"a36d89ba",5044:"b5a8c0e1",5055:"ee40b307",5059:"bccbf329",5075:"1901b863",5196:"fd5230de",5211:"84ed2c91",5242:"955e0f14",5256:"ddd45ac8",5289:"92b9ac0d",5296:"5e3fdd1e",5333:"45483604",5385:"a1d1dd1b",5418:"760c21a9",5423:"f9345a93",5425:"ff78723e",5445:"e3704d3e",5452:"5c02a21c",5459:"b4a62d96",5468:"333ace74",5472:"f4cea0fd",5501:"1c3a2cc2",5527:"5a1b55cd",5534:"5b464c81",5536:"c0d85328",5574:"8d7b95e3",5579:"dc0829bf",5659:"735f4e8b",5715:"d862c92b",5717:"5a648b40",5718:"791af571",5723:"796c6854",5742:"aba21aa0",5839:"f000fa6c",5858:"108062f4",5868:"7ca8dcb0",5981:"45cfda70",6043:"10598b0c",6054:"20310182",6082:"077e182c",6209:"be23a2ab",6235:"884c101c",6309:"a73fd9a7",6321:"3f015f6c",6329:"68d9e37d",6349:"655ebc95",6466:"ba4c4c42",6584:"3a3d9827",6597:"d4aa3b2e",6615:"820321aa",6689:"6ebbc2a9",6715:"2673cc66",6728:"41cfe910",6750:"e9d57344",6776:"61483c77",6851:"f14e0d42",6944:"e1012b35",6969:"14eb3368",6972:"73bb290b",6980:"4748fea8",7054:"364843de",7098:"a7bd4aaa",7174:"59841b15",7181:"398ec6ec",7185:"3aec8d28",7296:"1190ec46",7328:"7f1a228f",7391:"bcc493bb",7444:"4575aa6b",7466:"283abc1e",7476:"0e046e27",7491:"6315f7a9",7533:"fa4df832",7538:"63e7d659",7606:"7041e121",7644:"a233450e",7670:"45762ba8",7702:"b478df71",7740:"38c0e729",7765:"0eed62d0",7783:"5499eab5",7800:"fd3065b9",7823:"acaa9510",7826:"c9ef35f2",7853:"393ba31b",7900:"a377b775",7983:"b6d05f96",8024:"b213ac14",8029:"1d32a22a",8152:"38b1a18c",8362:"718e3846",8401:"17896441",8467:"590f7409",8493:"00520511",8495:"c6da9900",8648:"a5572c7a",8658:"dff954e4",8694:"63d6513e",8787:"5d4750be",8791:"fea443f9",8792:"a482deb9",8804:"4cacf3e6",8847:"413b7f27",8898:"16d48d9c",8937:"858b8f4c",8958:"93201ccf",9048:"a94703ab",9054:"b41b7274",9122:"17a01669",9136:"4415fef0",9143:"9776f283",9191:"e6557b6f",9202:"3b39eb61",9256:"bf95a5e0",9338:"95f524cc",9357:"453d2cf9",9366:"0fe8a02a",9502:"72ce6c4c",9519:"17721d7a",9538:"f0a0c15c",9552:"cbe58da9",9554:"f6df46a6",9588:"a3713279",9624:"70010fe2",9647:"5e95c892",9659:"77510a09",9665:"a97a69dc",9684:"9b543a4a",9757:"105374d0",9770:"1cd70b93",9840:"82b53ec7",9864:"bcf25bf9",9894:"0d7f7339",9947:"9c1c0c58"}[e]||e)+"."+{168:"d25a5110",204:"3bd2f5af",284:"a37ea219",295:"485df26d",322:"a07193ef",329:"79395793",416:"5a82d981",491:"23dbd36a",503:"574761ce",623:"ef04c9dc",651:"59fa0b12",698:"cabd455a",705:"8866b5bc",832:"838b0688",839:"693e56cf",893:"40c0b766",957:"faee654a",1010:"9f7efd10",1071:"6d89ecea",1135:"8636179d",1245:"cba0b368",1288:"3de8ae49",1312:"f7c23beb",1313:"0b731b7f",1496:"1cf88bae",1511:"0c351a03",1535:"d4663737",1567:"95f0c2bd",1597:"74c6d222",1648:"a1270855",1691:"f84edd20",1736:"84bf22b8",1778:"f6c21911",1807:"e378cce9",1881:"a4b087e3",1932:"ec6ed67f",1938:"9774f52b",1958:"4373f965",1969:"ad7ff009",2020:"b0e18734",2041:"5731a8ac",2138:"b997a4ea",2151:"88d89c4e",2237:"03c1976d",2289:"1ddf7564",2340:"8daefdf6",2355:"b4471e99",2372:"3f61091f",2384:"2c5e2f28",2395:"b6153e9a",2440:"13acb4b8",2487:"03416d34",2554:"5058b793",2825:"7f3329da",2849:"2280c2b6",2881:"21c123eb",2883:"e2b4c9aa",2885:"89fbf3f5",2893:"eedc3c6a",2912:"36bf6a5b",2954:"04fa45a1",3017:"61c6281e",3030:"95612489",3087:"3b653be0",3213:"0d0031e6",3216:"781f76fc",3234:"96b1d246",3239:"0a4977f0",3276:"655ee956",3336:"3acf92be",3361:"bd732838",3465:"f986de47",3466:"99bd854c",3487:"0b60c243",3582:"75ccf611",3701:"4bc5c2e8",3723:"1245786d",3782:"3c3b4ab9",3822:"b61df74f",3823:"589d2c46",3839:"7a0d0ab2",3863:"414be1af",3922:"59c2d27e",3935:"a39d77e2",4011:"6d949b60",4088:"d0f4ba53",4100:"1d898480",4244:"dc979397",4291:"cba4908f",4365:"abeb749d",4370:"a8cece29",4391:"2d5d9274",4420:"26d4b8b3",4423:"551d319e",4426:"ea686c9a",4437:"cb5f0b61",4560:"2b8f6a2b",4634:"af84a087",4670:"42a661cc",4691:"1daed32b",4709:"bf2b42dc",4757:"5de55e65",4808:"57b0e988",4810:"059fb516",4811:"11b33431",4835:"e5e9ea7c",4846:"c6e8da1e",4859:"1f60f7a7",4918:"460fbc6a",4963:"0240e017",5023:"bcfbb029",5035:"a0a434ce",5044:"64227f3b",5055:"57eaf175",5059:"d1dba9aa",5075:"47be10be",5196:"949b9311",5211:"b0bd002d",5242:"160bc916",5256:"b9448509",5289:"4c73411f",5296:"22dc91c6",5333:"db44fe9c",5385:"a14a72dd",5418:"b320a423",5423:"dc64d462",5425:"8f92fda2",5445:"d6486515",5452:"a1e16ce8",5459:"ae1b4adc",5468:"e0fe1744",5472:"531f2cc7",5501:"8f64902d",5527:"ea0922ed",5534:"1adb5d84",5536:"af78df95",5574:"d77cde72",5579:"46ddf16d",5659:"b86d0e6d",5715:"c1f3e964",5717:"9af191f1",5718:"24dfb905",5723:"717c3f47",5742:"ed09cce9",5839:"d8ffab31",5858:"8b89cd67",5868:"08915c29",5981:"5536f522",6043:"1a909002",6054:"433ebfe9",6082:"c263834c",6209:"612e9629",6235:"d34e8cc7",6309:"8e47d530",6321:"65801514",6329:"65061572",6349:"3cbad3b3",6466:"024fc59a",6584:"fcbb2d81",6597:"a5e7e202",6615:"6451c663",6689:"3c7e5dd6",6715:"f3fb0b40",6728:"eba7c961",6750:"f640519e",6776:"477e2eb4",6851:"8e83ae2d",6944:"8c6febe9",6969:"4d27f5f2",6972:"9ebad8c4",6980:"46fbc30b",7054:"c74f29c3",7098:"29aa088f",7174:"7133b9fb",7181:"8508f7dc",7185:"85a972af",7296:"e3a537e1",7328:"f193ae4b",7391:"1717fbc1",7444:"c4b83ca0",7466:"ec525f11",7476:"4f470335",7491:"d07230bb",7533:"b0828b82",7538:"82491d14",7606:"6ede9807",7644:"ec3b5103",7670:"88eb170b",7702:"1baa57d6",7740:"99469a14",7765:"d05672fe",7783:"fb04a8fa",7800:"95182f68",7823:"d9d088d1",7826:"80346936",7853:"d53a881c",7900:"8287d003",7983:"c3b4d691",8024:"0456a911",8029:"c5a04b0a",8152:"5c62980a",8362:"a14c24cb",8401:"66bbdd1f",8467:"b718e4f0",8493:"d1dbc001",8495:"e4bf9175",8648:"d27440b6",8658:"9604adde",8694:"1bb728ea",8787:"a515579c",8791:"447ad865",8792:"68eb394a",8804:"767f5a3c",8847:"59b11c31",8898:"6fcd74a5",8913:"64e5ee35",8937:"dd3f7e68",8958:"8a20905f",9048:"a4bd031d",9054:"474220fe",9122:"deb2817c",9136:"db41fcaa",9143:"34571fbc",9191:"b5601052",9202:"05a2f845",9256:"d62f460e",9338:"62924258",9357:"afa14f88",9366:"a3df22d4",9462:"d587a550",9502:"d642963a",9519:"c92c2d1c",9538:"21904a78",9552:"4986d2b6",9554:"04a8f185",9588:"866fe6ac",9624:"009dc0f3",9647:"1c5eed15",9659:"9889eb19",9665:"0b152b5c",9684:"aad5bc2b",9757:"87194896",9770:"a0a3f8bd",9840:"f264ab06",9864:"bc7412db",9894:"46858e9f",9947:"0ee45e93"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},f="docs:",r.l=(e,a,c,d)=>{if(b[e])b[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401",20310182:"6054",45483604:"5333",55771474:"329","0f669020":"168","43cf645b":"204","1c5bdcc0":"284",b34fd168:"295",b1d9ab1e:"322","6a9eda4d":"491","2ef51344":"503","670c12fe":"623",f6ca6b97:"651",bef7336c:"698",d03628f5:"705","362a08a0":"832",bf86ff3c:"839","939cc5d6":"893",c141421f:"957","3e832dc9":"1010","18abd1b1":"1071","00849eb8":"1135","588b3e90":"1245","1573eefc":"1288","85c21da9":"1312",b8a88df5:"1313",a9f8d366:"1496","3e753cd6":"1511","733fd614":"1535","22dd74f7":"1567","3593a311":"1597","1b355885":"1648",d0914994:"1691","0a6d04ec":"1736",e85ca7bd:"1778","859ae2ee":"1807","6bddfb77":"1881",cdce02d4:"1932",b56621c4:"1938",b09b582c:"1958","7232540e":"1969","7535d00c":"2020",bcfce1ff:"2041","1a4e3797":"2138","55bac7f1":"2151","49ec188d":"2289",e22dd37b:"2340","1136c95f":"2355","8ba0b14e":"2372","448d8494":"2384",cd573875:"2395","997887a4":"2440","9abe0306":"2487",f0a7be2b:"2554","89fd9e76":"2825","7eca411d":"2849","2773c291":"2881",d2c557a5:"2883",bf5678db:"2885",e82058ca:"2893","778292f0":"2912",c414bc73:"2954","6abe9687":"3017","6727d074":"3030",f8837ada:"3087","8cfdc86d":"3213","5158272a":"3216","87ff70ad":"3234",b73968e4:"3239",d8d94b5c:"3276",c4e30bec:"3336",c377a04b:"3361",a33ba820:"3465",d94d4c87:"3466","13dac574":"3487","5edea9bf":"3582","88f07c05":"3701",c75f9093:"3723","7123b015":"3782","59b54398":"3822",efd8aafa:"3823","6b8fde54":"3839",fd366d10:"3863","894aac81":"3922","29b06e33":"3935",ee01c0d2:"4011","3ba08586":"4088","5fb694b3":"4100",f7fdec3a:"4244","749d1be8":"4291","6bb47aa3":"4365","49ec685e":"4370",d95065c8:"4391",c0ceb000:"4420","1f1a3550":"4423",b572c5af:"4426","4733bf47":"4437","483085cf":"4560",d9ab0005:"4634",ae4c0ee2:"4670",ce5795f4:"4691","2e44b5ea":"4709",a21738db:"4757",f17273da:"4808","72032a86":"4810",ce097dff:"4811","6b87b92b":"4835",ec707320:"4846",e21c15d3:"4859","0efd896e":"4918",fd615c45:"4963",ea31ac95:"5023",a36d89ba:"5035",b5a8c0e1:"5044",ee40b307:"5055",bccbf329:"5059","1901b863":"5075",fd5230de:"5196","84ed2c91":"5211","955e0f14":"5242",ddd45ac8:"5256","92b9ac0d":"5289","5e3fdd1e":"5296",a1d1dd1b:"5385","760c21a9":"5418",f9345a93:"5423",ff78723e:"5425",e3704d3e:"5445","5c02a21c":"5452",b4a62d96:"5459","333ace74":"5468",f4cea0fd:"5472","1c3a2cc2":"5501","5a1b55cd":"5527","5b464c81":"5534",c0d85328:"5536","8d7b95e3":"5574",dc0829bf:"5579","735f4e8b":"5659",d862c92b:"5715","5a648b40":"5717","791af571":"5718","796c6854":"5723",aba21aa0:"5742",f000fa6c:"5839","108062f4":"5858","7ca8dcb0":"5868","45cfda70":"5981","10598b0c":"6043","077e182c":"6082",be23a2ab:"6209","884c101c":"6235",a73fd9a7:"6309","3f015f6c":"6321","68d9e37d":"6329","655ebc95":"6349",ba4c4c42:"6466","3a3d9827":"6584",d4aa3b2e:"6597","820321aa":"6615","6ebbc2a9":"6689","2673cc66":"6715","41cfe910":"6728",e9d57344:"6750","61483c77":"6776",f14e0d42:"6851",e1012b35:"6944","14eb3368":"6969","73bb290b":"6972","4748fea8":"6980","364843de":"7054",a7bd4aaa:"7098","59841b15":"7174","398ec6ec":"7181","3aec8d28":"7185","1190ec46":"7296","7f1a228f":"7328",bcc493bb:"7391","4575aa6b":"7444","283abc1e":"7466","0e046e27":"7476","6315f7a9":"7491",fa4df832:"7533","63e7d659":"7538","7041e121":"7606",a233450e:"7644","45762ba8":"7670",b478df71:"7702","38c0e729":"7740","0eed62d0":"7765","5499eab5":"7783",fd3065b9:"7800",acaa9510:"7823",c9ef35f2:"7826","393ba31b":"7853",a377b775:"7900",b6d05f96:"7983",b213ac14:"8024","1d32a22a":"8029","38b1a18c":"8152","718e3846":"8362","590f7409":"8467","00520511":"8493",c6da9900:"8495",a5572c7a:"8648",dff954e4:"8658","63d6513e":"8694","5d4750be":"8787",fea443f9:"8791",a482deb9:"8792","4cacf3e6":"8804","413b7f27":"8847","16d48d9c":"8898","858b8f4c":"8937","93201ccf":"8958",a94703ab:"9048",b41b7274:"9054","17a01669":"9122","4415fef0":"9136","9776f283":"9143",e6557b6f:"9191","3b39eb61":"9202",bf95a5e0:"9256","95f524cc":"9338","453d2cf9":"9357","0fe8a02a":"9366","72ce6c4c":"9502","17721d7a":"9519",f0a0c15c:"9538",cbe58da9:"9552",f6df46a6:"9554",a3713279:"9588","70010fe2":"9624","5e95c892":"9647","77510a09":"9659",a97a69dc:"9665","9b543a4a":"9684","105374d0":"9757","1cd70b93":"9770","82b53ec7":"9840",bcf25bf9:"9864","0d7f7339":"9894","9c1c0c58":"9947"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)c.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>b=e[a]=[c,f]));c.push(b[2]=f);var d=r.p+r.u(a),t=new Error;r.l(d,(c=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var f=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",t.name="ChunkLoadError",t.type=f,t.request=d,b[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var b,f,d=c[0],t=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(a&&a(c);nBenchmarking | Skytable
-
+
diff --git a/blueql/dcl/index.html b/blueql/dcl/index.html
index 96dd5c2a4..4f5d404d5 100644
--- a/blueql/dcl/index.html
+++ b/blueql/dcl/index.html
@@ -4,7 +4,7 @@
DCL | Skytable
-
+
diff --git a/blueql/ddl/index.html b/blueql/ddl/index.html
index a1a196a0d..afac0eb3f 100644
--- a/blueql/ddl/index.html
+++ b/blueql/ddl/index.html
@@ -4,7 +4,7 @@
DDL | Skytable
-
+
diff --git a/blueql/dml/index.html b/blueql/dml/index.html
index 3d2fd5aa1..8eaea17d9 100644
--- a/blueql/dml/index.html
+++ b/blueql/dml/index.html
@@ -4,7 +4,7 @@
DML | Skytable
-
+
diff --git a/blueql/index.html b/blueql/index.html
index 12e1bb38b..b1885006f 100644
--- a/blueql/index.html
+++ b/blueql/index.html
@@ -4,7 +4,7 @@
BlueQL | Skytable
-
+
diff --git a/blueql/overview/index.html b/blueql/overview/index.html
index c64fc56b8..d5f6415dc 100644
--- a/blueql/overview/index.html
+++ b/blueql/overview/index.html
@@ -4,7 +4,7 @@
Overview | Skytable
-
+
diff --git a/deployment/index.html b/deployment/index.html
index 4a0df491f..939a2df67 100644
--- a/deployment/index.html
+++ b/deployment/index.html
@@ -4,7 +4,7 @@
Deployment | Skytable
-
+
diff --git a/index.html b/index.html
index c39397303..91def9065 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
Introduction | Skytable
-
+
diff --git a/installation/index.html b/installation/index.html
index ce218b318..138791d3d 100644
--- a/installation/index.html
+++ b/installation/index.html
@@ -4,7 +4,7 @@
Installation | Skytable
-
+
diff --git a/libraries/index.html b/libraries/index.html
index 831cff38b..e67b1ce42 100644
--- a/libraries/index.html
+++ b/libraries/index.html
@@ -4,7 +4,7 @@
Client drivers | Skytable
-
+
diff --git a/limits/index.html b/limits/index.html
index f4b183610..e854a499f 100644
--- a/limits/index.html
+++ b/limits/index.html
@@ -4,7 +4,7 @@
Limits | Skytable
-
+
diff --git a/protocol/errors/index.html b/protocol/errors/index.html
index d18489ac3..8c8004c72 100644
--- a/protocol/errors/index.html
+++ b/protocol/errors/index.html
@@ -4,7 +4,7 @@
Error Index | Skytable
-
+
diff --git a/protocol/index.html b/protocol/index.html
index 8db1a0bc0..d9553c4e3 100644
--- a/protocol/index.html
+++ b/protocol/index.html
@@ -4,7 +4,7 @@
Skyhash 2: Overview | Skytable
-
+
diff --git a/protocol/specification/index.html b/protocol/specification/index.html
index 84d5609ae..35d1b2a2d 100644
--- a/protocol/specification/index.html
+++ b/protocol/specification/index.html
@@ -4,7 +4,7 @@
Specification | Skytable
-
+
diff --git a/querying/index.html b/querying/index.html
index 5363f1275..7bc81e782 100644
--- a/querying/index.html
+++ b/querying/index.html
@@ -4,7 +4,7 @@
Querying | Skytable
-
+
diff --git a/resources/migration/index.html b/resources/migration/index.html
index 66d217500..4be78a939 100644
--- a/resources/migration/index.html
+++ b/resources/migration/index.html
@@ -4,7 +4,7 @@
Migrating from an older release | Skytable
-
+
diff --git a/resources/platform-support/index.html b/resources/platform-support/index.html
index 569a4acc1..7eaa50171 100644
--- a/resources/platform-support/index.html
+++ b/resources/platform-support/index.html
@@ -4,7 +4,7 @@
Platform Support | Skytable
-
+
diff --git a/resources/useful-links/index.html b/resources/useful-links/index.html
index c7c3771f6..65a7c91e1 100644
--- a/resources/useful-links/index.html
+++ b/resources/useful-links/index.html
@@ -4,7 +4,7 @@
Useful links | Skytable
-
+
diff --git a/search/index.html b/search/index.html
index 883f940d1..8283b9635 100644
--- a/search/index.html
+++ b/search/index.html
@@ -4,7 +4,7 @@
Search the documentation | Skytable
-
+
diff --git a/system/backup-and-restore/index.html b/system/backup-and-restore/index.html
index d77a43aa5..a75673f68 100644
--- a/system/backup-and-restore/index.html
+++ b/system/backup-and-restore/index.html
@@ -4,7 +4,7 @@
Backup and restore | Skytable
-
+
diff --git a/system/configuration/index.html b/system/configuration/index.html
index 894c5de8b..6f165d98b 100644
--- a/system/configuration/index.html
+++ b/system/configuration/index.html
@@ -4,7 +4,7 @@
Configuration | Skytable
-
+
diff --git a/system/disk-usage/index.html b/system/disk-usage/index.html
index 34e372839..97e44156e 100644
--- a/system/disk-usage/index.html
+++ b/system/disk-usage/index.html
@@ -4,7 +4,7 @@
Disk usage | Skytable
-
+
diff --git a/system/global-management/index.html b/system/global-management/index.html
index f8b207682..bf34a66f3 100644
--- a/system/global-management/index.html
+++ b/system/global-management/index.html
@@ -4,7 +4,7 @@
Global management | Skytable
-
+
diff --git a/system/index.html b/system/index.html
index 317a1b93c..179fd11fa 100644
--- a/system/index.html
+++ b/system/index.html
@@ -4,7 +4,7 @@
System administration | Skytable
-
+
diff --git a/system/recovery/index.html b/system/recovery/index.html
index 9aee19f8c..dc3212509 100644
--- a/system/recovery/index.html
+++ b/system/recovery/index.html
@@ -4,7 +4,7 @@
Data recovery | Skytable
-
+
diff --git a/system/user-management/index.html b/system/user-management/index.html
index 4f10bc89a..1a5f3b362 100644
--- a/system/user-management/index.html
+++ b/system/user-management/index.html
@@ -4,7 +4,7 @@
User management | Skytable
-
+
diff --git a/using-the-repl/index.html b/using-the-repl/index.html
index d571bcde8..6f81c89a3 100644
--- a/using-the-repl/index.html
+++ b/using-the-repl/index.html
@@ -4,7 +4,7 @@
Using the REPL | Skytable
-
+
diff --git a/versions/index.html b/versions/index.html
index bdc4a7df2..4c4b5d4ca 100644
--- a/versions/index.html
+++ b/versions/index.html
@@ -4,7 +4,7 @@
All versions | Skytable
-
+