{"id":123245,"date":"2025-04-02T21:05:07","date_gmt":"2025-04-02T19:05:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql"},"modified":"2025-04-02T21:05:07","modified_gmt":"2025-04-02T19:05:09","slug":"razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"V\u00fdvoj\u00e1\u0159i OrioleDB navrhli vylep\u0161it API pro alternativn\u00ed PostgreSQL enginy","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V\u00fdvoj\u00e1\u0159i OrioleDB analyzovali aktu\u00e1ln\u00ed stav n\u00edzko\u00farov\u0148ov\u00e9ho API pou\u017e\u00edvan\u00e9ho pro p\u0159\u00edstup roz\u0161\u00ed\u0159en\u00ed k tabulk\u00e1m a index\u016fm v PostgreSQL (Table\/Index Access Method (AM) API) a navrhli mo\u017enosti jeho vylep\u0161en\u00ed. Od doby, kdy bylo takov\u00e9 API zavedeno v PostgreSQL 12, mohli v\u00fdvoj\u00e1\u0159i vytv\u00e1\u0159et alternativn\u00ed datov\u00e9 \u00falo\u017ei\u0161t\u011b. Nicm\u00e9n\u011b, navzdory existenci tohoto API a zn\u00e1m\u00fdm omezen\u00edm zabudovan\u00e9ho \u00falo\u017ei\u0161t\u011b, st\u00e1le neexistuj\u00ed pln\u011b funk\u010dn\u00ed transak\u010dn\u00ed \u00falo\u017ei\u0161t\u011b realizovan\u00e1 v\u00fdhradn\u011b formou roz\u0161\u00ed\u0159en\u00ed.    <\/p>\n<p>Nej\u017e\u00e1dan\u011bj\u0161\u00edmi funkcemi pro alternativn\u00ed tabulkov\u00e9 enginy PostgreSQL jsou:  <\/p>\n<ul>\n<li class=\"l\"> Alternativn\u00ed implementace MVCC, nap\u0159\u00edklad \u00falo\u017ei\u0161t\u011b zalo\u017een\u00e9 na protokolu UNDO.\n<li class=\"l\"> Indexov\u011b organizovan\u00e9 tabulky, kde index nen\u00ed voliteln\u00fdm dopl\u0148kem k tabulce, kter\u00fd zrychluje dotazy, ale p\u0159edstavuje hlavn\u00ed datovou strukturu, ve kter\u00e9 jsou ulo\u017eena data tabulky.    <\/ul>\n<p>Zm\u011bny nezbytn\u00e9 v API Table\/Index AM pro podporu alternativn\u00edch implementac\u00ed MVCC jsou zva\u017eov\u00e1ny s ohledem na roz\u0161\u00ed\u0159en\u00ed OrioleDB, kter\u00e9 bylo vyvinuto k odstran\u011bn\u00ed zn\u00e1m\u00fdch nedostatk\u016f zabudovan\u00e9ho \u00falo\u017ei\u0161t\u011b PostgreSQL. Probl\u00e9m spo\u010d\u00edv\u00e1 v tom, \u017ee pro plnou integraci OrioleDB s PostgreSQL jsou vy\u017eadov\u00e1ny zm\u011bny v k\u00f3du PostgreSQL, co\u017e komplikuje zaveden\u00ed projektu a zd\u016fraz\u0148uje pot\u0159ebu modernizace st\u00e1vaj\u00edc\u00edho API Table AM.    <\/p>\n<p>API Table AM nenut\u00ed p\u0159\u00edmo zp\u016fsob implementace MVCC. Nicm\u00e9n\u011b, API Table AM a API Index AM p\u0159edpokl\u00e1daj\u00ed n\u00e1sleduj\u00edc\u00ed: ka\u017ed\u00fd TID (Tuple\/row Identifier) je bu\u010f indexov\u00e1n v\u0161emi indexy, nebo nen\u00ed indexov\u00e1n v\u016fbec. I kdy\u017e Index AM m\u00e1 n\u011bkolik odkaz\u016f na jeden TID (nap\u0159\u00edklad GIN), v\u0161echny tyto odkazy mus\u00ed odpov\u00eddat jedn\u00e9 a t\u00e9 sam\u00e9 indexovan\u00e9 hodnot\u011b.    <center><img decoding=\"async\" alt=\"V\u00fdvoj\u00e1\u0159i OrioleDB navrhli vylep\u0161it API pro alternativn\u00ed PostgreSQL enginy\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Tento princip byl kritizov\u00e1n za zvy\u0161ov\u00e1n\u00ed po\u010dtu operac\u00ed z\u00e1pisu (\u201ewrite amplification\u201c) \u2014 pokud se aktualizuje jeden indexovan\u00fd atribut, je t\u0159eba aktualizovat ka\u017ed\u00fd index v tabulce. Pro pln\u00e9 vyu\u017eit\u00ed v\u00fdhod protokolu UNDO nebo pro vybudov\u00e1n\u00ed jin\u00e9 metody \u00falo\u017ei\u0161t\u011b bez \u201ezes\u00edlen\u00ed z\u00e1pisu\u201c (nap\u0159\u00edklad metoda WARM) je nutn\u00e9 toto p\u0159edpoklad poru\u0161\u00ed.  <center><img decoding=\"async\" alt=\"V\u00fdvoj\u00e1\u0159i OrioleDB navrhli vylep\u0161it API pro alternativn\u00ed PostgreSQL enginy\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>Tabulka AM zalo\u017een\u00e1 na UNDO, kter\u00e1 toto p\u0159edpokl\u00e1d\u00e1n\u00ed nenaru\u0161\u00ed, p\u0159ipom\u00edn\u00e1 existuj\u00edc\u00ed metodu HOT (Heap-Only Tuples), s v\u00fdjimkou toho, \u017ee star\u00e9 verze \u0159et\u011bzc\u016f jsou uchov\u00e1v\u00e1ny v \u017eurn\u00e1lu UNDO a nemus\u00ed se vejdou na stejnou str\u00e1nku. Podle autor\u016f v\u0161ak tento p\u0159\u00ednos nen\u00ed dostate\u010dn\u00fd pro ospravedln\u011bn\u00ed existence samostatn\u00e9 Tabulky AM.    <\/p>\n<p>Praktick\u00e1 omezen\u00ed existuj\u00edc\u00edho API:    <\/p>\n<ul>\n<li class=\"l\"> B\u011bhem aktualizace \u0159\u00e1dku tabulky jsou indexy aktualizov\u00e1ny podle principu \u201ev\u0161echno nebo nic\u201c.\n<li class=\"l\"> Nedostatek v API Index AM mo\u017enosti bodov\u00e9ho odstran\u011bn\u00ed ur\u010dit\u00fdch k-tuplet\u016f. V sou\u010dasn\u00e9 dob\u011b je mo\u017en\u00e9 odstra\u0148ovat k-tuplety z index\u016f hromadn\u011b pomoc\u00ed metod ambulkdelete a amvacuumcleanup. Pokus o realizaci bodov\u00e9ho odstran\u011bn\u00ed prost\u0159ednictv\u00edm tohoto API by vedl k n\u00edzk\u00e9 \u00fa\u010dinnosti, proto\u017ee v\u011bt\u0161ina sou\u010dasn\u00fdch implementac\u00ed mus\u00ed prohled\u00e1vat cel\u00fd index. Krom\u011b toho API neumo\u017e\u0148uje ur\u010dit, kter\u00e9 z k-tuplet\u016f odkazuj\u00edc\u00edch na stejn\u00e9 TID by m\u011bly b\u00fdt odstran\u011bny. M\u016f\u017ee odstranit pouze v\u0161echny.\n<li class=\"l\"> Indexy aktu\u00e1ln\u011b odkazuj\u00ed na \u0159\u00e1dky tabulky podle \u010d\u00edsla bloku (32 bit\u016f) a \u010d\u00edsla posunu (16 bit\u016f). A pouze 11 bit\u016f \u010d\u00edsla posunu lze bezpe\u010dn\u011b p\u0159edat z TID tabulky do v\u0161ech metod p\u0159\u00edstupu k indexu. Alternativn\u00ed implementace MVCC mohou vy\u017eadovat uchov\u00e1v\u00e1n\u00ed dal\u0161\u00edho u\u017eite\u010dn\u00e9ho zat\u00ed\u017een\u00ed (payload) spolu s TID. Nap\u0159\u00edklad v OrioleDB je pot\u0159eba jeden nebo v\u00edce bit\u016f pro implementaci index\u016f \u201edelete-marking\u201c nebo \u00fapln\u00fdch informac\u00ed o viditelnosti.      <\/ul>\n<p>Byly navr\u017eeny dva zp\u016fsoby, jak p\u0159ekonat omezen\u00ed v praxi:  <\/p>\n<ul>\n<p>P\u0159\u00edstup 1: API Index AM nab\u00edz\u00ed mo\u017enosti pro alternativn\u00ed implementaci MVCC.    <\/p>\n<p>Zat\u00edmco Table AM nad\u00e1le odpov\u00edd\u00e1 za v\u0161echny komponenty MVCC, Index AM poskytuje pot\u0159ebn\u00e9 schopnosti pro alternativn\u00ed implementaci MVCC, a to: ukl\u00e1d\u00e1n\u00ed u\u017eivatelsk\u00e9ho u\u017eite\u010dn\u00e9ho zat\u00ed\u017een\u00ed (payload) spolu s TID, metodu bodov\u00e9ho maz\u00e1n\u00ed a dokonce i metodu bodov\u00e9 aktualizace (pokud TID v indexu nelze zm\u011bnit, u\u017eivatelsk\u00e9 u\u017eite\u010dn\u00e9 zat\u00ed\u017een\u00ed \u2013 m\u016f\u017ee). Krom\u011b toho, proto\u017ee je nutn\u00e9 dovolit n\u011bkolika tup\u016fm indexu odkazovat na stejn\u00e9 TID, metody API pou\u017e\u00edvan\u00e9 p\u0159i skenov\u00e1n\u00ed indexu tak\u00e9 pot\u0159ebuj\u00ed aktualizaci.    <\/p>\n<p>P\u0159\u00edstup 2: Indexy podporuj\u00edc\u00ed MVCC.    <\/p>\n<p>Alternativou by bylo povolit indexy podporuj\u00edc\u00ed MVCC. To znamen\u00e1, \u017ee \u201eexecutor\u201c (nebo mo\u017en\u00e1 Table AM) jednodu\u0161e vol\u00e1 metody insert() a delete() v Index AM, zat\u00edmco Index AM poskytuje mo\u017enost skenov\u00e1n\u00ed s ohledem na MVCC. To by v\u00fdrazn\u011b zjednodu\u0161ilo skenov\u00e1n\u00ed pomoc\u00ed pouze index\u016f (index-only). Dokonce cel\u00fd Table AM by se v takov\u00e9m p\u0159\u00edpad\u011b mohl st\u00e1t mezivrstvou, kter\u00e1 ukl\u00e1d\u00e1 data v indexu.    <\/p>\n<p>Na n\u00ed\u017ee uveden\u00e9m diagramu je uveden p\u0159\u00edklad. Hodnota indexu 2 je aktualizov\u00e1na transakc\u00ed 11 ze hodnoty &#171;A&#187; na hodnotu &#171;B&#187;. Proto je hodnota &#171;A&#187; ozna\u010dena jako xmax == 11 a hodnota &#171;B&#187; jako xmin == 11. Takto lze skenovat index 2 a z\u00edsk\u00e1vat pouze viditeln\u00e9 n-tice v souladu s MVCC bez kontrol hromady (heap). Odpady indexu 2 mohou b\u00fdt tak\u00e9 odstran\u011bny bez pou\u017eit\u00ed hromady.    <center><img decoding=\"async\" alt=\"V\u00fdvoj\u00e1\u0159i OrioleDB navrhli vylep\u0161it API pro alternativn\u00ed PostgreSQL enginy\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>P\u0159i zaveden\u00ed v\u0161ech vyjmenovan\u00fdch novinek do API indexov\u00fdch metod p\u0159\u00edstupu je nepravd\u011bpodobn\u00e9, \u017ee by se poda\u0159ilo sou\u010dasn\u011b p\u0159epracovat v\u0161echny indexy tak, aby podporovaly v\u0161echny nov\u00e9 mo\u017enosti. Realisti\u010dt\u011bj\u0161\u00ed je povolit n\u011bkolik implementac\u00ed pro jednu indexovou metodu p\u0159\u00edstupu. Nap\u0159\u00edklad krom\u011b b\u011b\u017en\u00e9ho B-stromu by roz\u0161\u00ed\u0159en\u00ed mohlo implementovat alternativn\u00ed B-strom s podporou MVCC uvnit\u0159 indexu a s podporou identifik\u00e1tor\u016f z\u00e1znam\u016f libovoln\u00e9 d\u00e9lky.    <center><img decoding=\"async\" alt=\"V\u00fdvoj\u00e1\u0159i OrioleDB navrhli vylep\u0161it API pro alternativn\u00ed PostgreSQL enginy\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Navrhuje se p\u0159ehodnotit nejen API Table AM, ale tak\u00e9 API Index AM, kter\u00e9 po mnoho let spolehliv\u011b slou\u017eilo komunit\u011b PostgreSQL. Krom\u011b toho se navrhuje rozd\u011blit Index AM na logickou vrstvu a vrstvu implementace. Tato p\u0159epracovan\u00e1 architektura umo\u017en\u00ed PostgreSQL podporovat r\u016fzn\u00e9 modely ukl\u00e1d\u00e1n\u00ed.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=62991\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f. \u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 PostgreSQL 12 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e API \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u044d\u0442\u043e\u0433\u043e API \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":123246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-123245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c API \u0434\u043b\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-04-02T19:05:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-04-02T19:05:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47V\u00fdvoj\u00e1\u0159i OrioleDB navrhli zlep\u0161it API pro alternativn\u00ed enginy PostgreSQL | ProHoster","description":"V\u00fdvoj\u00e1\u0159i OrioleDB analyzovali sou\u010dasn\u00fd stav n\u00edzko\u00farov\u0148ov\u00e9ho API, kter\u00e9 se pou\u017e\u00edv\u00e1 pro p\u0159\u00edstup roz\u0161\u00ed\u0159en\u00ed k tabulk\u00e1m a index\u016fm v PostgreSQL (Table\/Index Access Method (AM) API), a navrhli jeho zlep\u0161en\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c API \u0434\u043b\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 PostgreSQL | ProHoster","og:description":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e.","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2025-04-02T19:05:09+00:00","article:modified_time":"2025-04-02T19:05:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"123245","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 11:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 11:48:19","updated":"2026-01-23 11:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}