{"id":105408,"date":"2022-10-29T21:36:38","date_gmt":"2022-10-29T19:36:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere"},"modified":"2022-10-29T21:36:38","modified_gmt":"2022-10-29T19:36:38","slug":"v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/news\/v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere","title":{"rendered":"A SQLite t\u00e1mogat\u00e1st kapott a WASM-hez, lehet\u0151v\u00e9 t\u00e9ve a DBMS webb\u00f6ng\u00e9sz\u0151ben val\u00f3 haszn\u00e1lat\u00e1t.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Az SQLite fejleszt\u0151i egy olyan projektet val\u00f3s\u00edtanak meg, amely lehet\u0151v\u00e9 teszi a k\u00f6nyvt\u00e1r WebAssembly k\u00f6ztes k\u00f3dba val\u00f3 ford\u00edt\u00e1s\u00e1t, amely k\u00e9pes a webb\u00f6ng\u00e9sz\u0151ben futni \u00e9s alkalmas adatb\u00e1zis-kezel\u00e9sre webalkalmaz\u00e1sokban JavaScript nyelven. A WebAssembly t\u00e1mogat\u00e1s\u00e1hoz sz\u00fcks\u00e9ges k\u00f3d hozz\u00e1 lett adva a projekt f\u0151 t\u00e1rol\u00f3j\u00e1hoz. A WebSQL API-j\u00e1hoz, amely az SQLite-ra \u00e9p\u00fcl, k\u00e9pest a WASM SQLite teljesen elszigetelt a b\u00f6ng\u00e9sz\u0151t\u0151l, \u00e9s nem befoly\u00e1solja annak biztons\u00e1g\u00e1t (a Google \u00fagy d\u00f6nt\u00f6tt, hogy felhagy a WebSQL t\u00e1mogat\u00e1s\u00e1val a Chrome-ban, miut\u00e1n t\u00f6bb, az SQLite-ban fellelhet\u0151 sebezhet\u0151s\u00e9get fedeztek fel, amelyeket a WebSQL-on kereszt\u00fcl lehetett kihaszn\u00e1lni a b\u00f6ng\u00e9sz\u0151 elleni t\u00e1mad\u00e1sokhoz).    <\/p>\n<p>A projekt c\u00e9lja egy m\u0171k\u00f6d\u0151 JavaScript k\u00f6nt\u00f6s biztos\u00edt\u00e1sa, amely funkci\u00f3iban megegyezik az SQLite API-j\u00e1val. A webfejleszt\u0151k egy magas szint\u0171, objektumorient\u00e1lt interf\u00e9szt kapnak az adatok sql.js vagy Node.js st\u00edlus\u00fa kezel\u00e9s\u00e9re, egy alacsony szint\u0171 C API-t \u00e9s Web Worker mechanizmusra \u00e9p\u00fcl\u0151 API-t, amely lehet\u0151v\u00e9 teszi aszinkron kezel\u0151k l\u00e9trehoz\u00e1s\u00e1t, amelyeket k\u00fcl\u00f6n sz\u00e1lakban hajtanak v\u00e9gre. A Web Worker-alap\u00fa API f\u00f6l\u00f6tti sz\u00e1lkezel\u00e9s neh\u00e9zs\u00e9geinek elt\u00fcntet\u00e9se \u00e9rdek\u00e9ben egy Promise mechanizmuson alapul\u00f3 interf\u00e9sz v\u00e1ltozat is fejl\u0151dik.     <\/p>\n<p>Azok az adatok, amelyeket a webalkalmaz\u00e1sok a WASM-version SQLite-ben t\u00e1rolnak, a jelenlegi munkamenet keretein bel\u00fcl lokaliz\u00e1lhat\u00f3k (azaz a lapok \u00fajrat\u00f6lt\u00e9sekor elvesznek) vagy elmenthet\u0151k a kliens oldalon (azaz a munkamenetek k\u00f6z\u00f6tt megmaradnak). Az \u00e1lland\u00f3 t\u00e1rol\u00e1s \u00e9rdek\u00e9ben backend-ek k\u00e9sz\u00fcltek az adatok lok\u00e1lis f\u00e1jlrendszerben t\u00f6rt\u00e9n\u0151 elhelyez\u00e9s\u00e9re OPFS (Origin-Private FileSystem, a File System Access API b\u0151v\u00edtm\u00e9nye, ami jelenleg csak WebKit \u00e9s Chromium alap\u00fa b\u00f6ng\u00e9sz\u0151kben el\u00e9rhet\u0151) \u00e9s a lok\u00e1lis b\u00f6ng\u00e9sz\u0151 t\u00e1rol\u00f3k window.localStorage \u00e9s window.sessionStorage API-n kereszt\u00fcli haszn\u00e1lat\u00e1ra. Ha localStorage\/sessionStorage-t haszn\u00e1lnak, az adatok a megfelel\u0151 t\u00e1rol\u00f3kban kulcs\/\u00e9rt\u00e9k form\u00e1tumban jelennek meg, m\u00edg OPFS alkalmaz\u00e1sakor k\u00e9t lehet\u0151s\u00e9g \u00e1ll rendelkez\u00e9sre: virtu\u00e1lis f\u00e1jlrendszer szimul\u00e1l\u00e1sa WASMFS seg\u00edts\u00e9g\u00e9vel \u00e9s korl\u00e1tozott sqlite3_vfs implement\u00e1ci\u00f3, amely SQLite VFS r\u00e9teget k\u00edn\u00e1l OPFS alapj\u00e1n.        <\/p>\n<p>A SQLite WASM-reprezent\u00e1ci\u00f3j\u00e1nak elk\u00e9sz\u00edt\u00e9s\u00e9hez az Emscripten ford\u00edt\u00f3t haszn\u00e1lj\u00e1k (el\u00e9g a kiterjeszt\u00e9s elk\u00e9sz\u00edt\u00e9se ext\/wasm: '.\/configure --enable-all; make sqlite3.c; cd ext\/wasm; make'). Az outputban sqlite3.js \u00e9s sqlite3.wasm f\u00e1jlok keletkeznek, amelyeket be lehet illeszteni a JavaScript-projektbe (p\u00e9lda HTML \u00e9s JavaScript).<br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=58004\">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 SQLite \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414 \u0438\u0437 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 JavaScript. \u041a\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 WebAssembly \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 API WebSQL, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043b\u0435\u0436\u0438\u0442 SQLite, WASM SQLite \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-105408","post","type-post","status-publish","format-standard","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 SQLite \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414 \u0438\u0437 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430.\" \/>\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\/hu\/blog\/news\/v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\u0412 SQLite \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 WASM \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0423\u0411\u0414 \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 SQLite \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414 \u0438\u0437 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/news\/v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere\" \/>\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=\"2022-10-29T19:36:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-10-29T19:36:38+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\udd47A SQLite-ban bevezet\u00e9sre ker\u00fclt a WASM t\u00e1mogat\u00e1s, hogy az adatb\u00e1zis-kezel\u0151 webb\u00f6ng\u00e9sz\u0151ben haszn\u00e1lhat\u00f3 legyen | ProHoster","description":"Az SQLite fejleszt\u0151i a k\u00f6nyvt\u00e1r WebAssembly k\u00f6ztes k\u00f3dra val\u00f3 leford\u00edt\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9n dolgoznak, amely k\u00e9pes webb\u00f6ng\u00e9sz\u0151ben futni, \u00e9s alkalmas adatb\u00e1zisok kezel\u00e9s\u00e9re webalkalmaz\u00e1sokb\u00f3l.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/news\/v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\u0412 SQLite \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 WASM \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0423\u0411\u0414 \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 | ProHoster","og:description":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 SQLite \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 WebAssembly, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 web-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414 \u0438\u0437 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430.","og:url":"https:\/\/prohoster.info\/hu\/blog\/news\/v-sqlite-dobavlena-podderzhka-wasm-dlya-ispolzovaniya-subd-v-web-brauzere","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":"2022-10-29T19:36:38+00:00","article:modified_time":"2022-10-29T19:36:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/105408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=105408"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/105408\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=105408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=105408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=105408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}