首页 > 其他分享 >前端大量复杂数据存储探索

前端大量复杂数据存储探索

时间:2023-10-20 20:55:05浏览次数:36  
标签:存储 const 探索 前端 db key put 数据库 store

引入

最近有需求做一个在B端的长期数据储存方案,主要是需要将大量数据结构化储存,避免每一次启动都去服务端重复拉取数据
第一个想到的前端持久化数据存储方案理所当然想到localstorage,但是它有一个最大5M的空间限制,这大小远远不够,因此我们将视线转移到前端数据库,半年前我接的有看到过sqlite.js这样的东西,于是我们很快找到了它
sql.js
从官网示例关键代码来看

const initSqlJs = require('sql.js');
// or if you are in a browser:
// const initSqlJs = window.initSqlJs;

const SQL = await initSqlJs({
  // Required to load the wasm binary asynchronously. Of course, you can host it wherever you want
  // You can omit locateFile completely when running in node
  locateFile: file => `https://sql.js.org/dist/${file}`
});

// Create a database
const db = new SQL.Database();
// NOTE: You can also use new SQL.Database(data) where
// data is an Uint8Array representing an SQLite database file

似乎第12行非常重要,它也表明了 data is an Unit8Array,那么意味着它并不能完成数据长期化储存,它的任务是当一个引擎,在内存中操作SQL,那么我们再去思考,有没有什么东西可以储存这个data呢?
顺水摸鱼就摸到了IndexedDB,这好像也是一个前两年很火的东西,一样的我们去MDN看看
IndexedDB - Web API 接口参考 | MDN (mozilla.org) https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API
看官网介绍:IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。该 API 使用索引实现对数据的高性能搜索。虽然 Web Storage 在存储较少量的数据很有用,但对于存储更大量的结构化数据来说力不从心。而 IndexedDB 提供了这种场景的解决方案。本页面 MDN IndexedDB 的主要引导页 - 这里,我们提供了完整的 API 参考和使用指南,浏览器支持细节,以及关键概念的一些解释的链接。
好家伙,似乎IndexedDB直接就从底层支持了索引,可以处理复杂结构化数据,那么我们仔细看看接口

IndexDB

先看概念

概念

IndexedDB 是一个事务型数据库系统,类似于基于 SQL 的 RDBMS。然而,不像 RDBMS 使用固定列表,IndexedDB 是一个基于 JavaScript 的面向对象数据库。IndexedDB 允许你存储和检索用键索引的对象;可以存储结构化克隆算法支持的任何对象。你只需要指定数据库模式,打开与数据库的连接,然后检索和更新一系列事务。
说人话:类似于MongoDB那样的文档类型数据库,但是支持事务

同步

IndexedBD是完全异步的,同步的API已经被移除,但是如果开发者有需求并且需求够多(

标签:存储,const,探索,前端,db,key,put,数据库,store
From: https://www.cnblogs.com/yeuoly/p/17777982.html

相关文章

  • Vue前端框架
    Vue渐进式javacript框架插件可选安装-谷歌访问助手这是一个谷歌浏览器上的插件安装必安插件(文件夹)下的google-access-helper-2.3.0(文件夹)复制到你想放的文件夹下(安装后不可以挪动位置)建议D盘下,弄一个专门按软件的文件夹打开谷歌浏览器-扩展程序-开......
  • 前端工程化基础
    下载安装node.jsnpminstallvue@latest创建项目:vueui编译运行项目:npmrunservevue组件结构(.vue文件)三个标签组成:<template>:模板部分,生成html代码<script>:原生js代码,控制模板中数据的来源以及行为<style>:控制css样式部分开发网页时很少碰main.js与index.html而......
  • 在客户端存储登录令牌 token 步骤
    原理:  是服务器创建的对象(一般存储当前登录用户的编号);加密为定长字符串;发送给客户端;客户端存储起来;等待下一次请求时,提交自己的身份令牌;服务器读取该令牌,解密从而获取其中的用户信息一-类似于银行卡客户端在登录成功后保存令牌:  uni.setStorageSync(userToken'......
  • 墨水屏技术在贴片厂的创新应用探索
    墨水屏技术在贴片厂的创新应用探索随着科技的不断发展,墨水屏标签在各个领域的应用越来越广泛。在贴片厂,墨水屏标签的应用也日益增多,它不仅提高了生产效率,还降低了成本,提高了产品质量。本文将详细介绍墨水屏标签在国内某知名品牌贴片厂的应用场景、优势以及如何实现应用。应用产品型......
  • CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属
    CSS3是用于为HTML文档添加样式和布局的最新版本的层叠样式表(CascadingStyleSheets)。下面是一些常用的CSS3属性及其详细解释:border-radius:设置元素的边框圆角的半径。可以使用四个值设置四个不同的圆角半径,也可以只使用一个值来设置统一的圆角。box-shadow:创建一个元素的阴影效果......
  • HTML5+CSS3+移动web 前端开发入门笔记(一)
    千古前端图文教程千古前端图文教程git的使用Git是一个分布式版本控制系统,它的作用主要包括以下几个方面:版本管理:Git可以跟踪文件的修改历史,记录每次提交的内容、时间和作者等信息。通过Git,开发人员可以轻松地查看和比较不同版本之间的差异,回滚到历史版本或者创建新的分支。多人协作......
  • 庆祝国际数学日,探索科学女皇数学的魅力
    ❤️作者主页:小虚竹❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP10......
  • 项目依赖库的规范探索
    二方库名称说明一方库指项目内的各个模块,一般不会被项目组外所使用,通常使用的是最新版本二方库指公司内部公共库,会被公司的各个项目组所使用,而且每个项目组所依赖的版本不一定一致,需要严格管理版本三方库一般代指公司外部的公共库,由公司外的开发团队进行版本维......
  • 【前端开发】跨标签页广播通信教程,可方便新窗口修改原窗口实时更新
    日常业务开发中我们常常会碰到如下的场景,即两个标签页之间的通信问题。我们在第一个标签页如何执行操作后在第二个标签页获取到信息。 BroadcastChannelAPI为我们提供了一种快捷且高效的途径创建useTagMessage.ts文件//跨标签页通信方案‘Msg’即通道名称,可以是任何你想......
  • Mysql三大存储引擎
    1、MyISAM(对事务支持不好,容易产生死锁)在5.5版本以前是数据库的默认存储引擎。MyISAM不支持事务和外键,适用于对事务完整性没有要求或者以select、insert为主的应用 2、InnoDB(对事务支持好)InnoDB提供了具有提交、回滚和崩溃恢复能力的事务安全。对比MyISAM写的......