Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将Redux与超大数据集和IndexedDB集成

如何将Redux与超大数据集和IndexedDB集成
EN

Stack Overflow用户
提问于 2015-11-30 06:41:05
回答 1查看 11.2K关注 0票数 36

我有一个应用程序,它使用同步API来获得其数据,并要求将所有数据存储在本地。数据集本身非常大,我不愿意将其存储在内存中,因为它可以包含数千条记录。由于我不认为实际的数据结构是相关的,让我们假设我正在构建一个需要离线访问的电子邮件客户端,并且我希望我的存储机制是IndexedDB (异步)。

我知道一个简单的解决方案是不将数据结构作为状态对象的一部分,只使用所需的数据填充状态(例如,在触发EMAIL_OPEN操作时将电子邮件内容存储在状态中)。这很简单,特别是使用redux-thunk。

然而,这意味着我需要折衷两件事:

  1. 用户数据不再是“应用程序状态”的一部分,尽管事实上它是。由于同步行为很复杂,而且从应用程序状态机中删除它会损害redux概念的优雅(据我所理解的方式)
  2. 我真的很喜欢redux体系结构,希望我的所有逻辑都通过它,而不仅仅是视图状态。

关于如何将redux与非内存状态属性一起使用,有什么最佳实践吗?我发现最难理解的事情是redux依赖于同步API,所以我不能用异步状态对象替换我的状态对象(除非我完全删除redux并用我自己的异步实现和连接器替换它)。

我用谷歌找不到答案,但如果在这个主题上已经有很好的资源,我也很乐意被指出。

更新:问题已经回答,但我想更好地解释我是如何实现它的,以防有人遇到它:

其主要思想是使用redux reducers维护客户端和服务器的更改列表,并使用连接器侦听这些更改列表以更新IDB,并使用客户端更改更新服务器:

  1. 当客户端进行更改时,使用reducers更新客户端更改列表。
  2. 当服务器发送更新时,使用reducers更新服务器更改列表。
  3. A连接器侦听存储,并在状态更改时更新IDB。还要维护modified.
  4. When更新服务器的项目的内部列表,使用已修改的项目列表从IDB中提取增量并发送到服务器。
  5. 当访问数据时,使用常规操作从IDB中提取(例如使用redux-thunk)

这种方法唯一的警告是,因为实际状态存储在IDB中,所以我们确实失去了拥有一个状态对象的一些价值(而且更难倒带/快进状态)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-01 22:33:43

我认为你的第一个预感是正确的。如果(!)你不能把所有东西都储存在商店里,你必须在商店里储存更少的东西。但我相信我可以让这个解决方案听起来更好:

IndexedDB只是成为另一个端点,就像您使用的任何服务器应用程序接口一样。当您从服务器获取数据时,您将其转发到IndexedDB,然后从那里填充您的存储。只要它不会变得太大或太陈旧,商店就会得到它需要的东西,并缓存它。

这真的与Facebook使用他们的API没有什么不同。商店里永远不会有一个用户的所有数据。引用是使用ID实现的,这些ID在需要时加载。

你可以把你所有的逻辑都放在redux中。只需像往常一样为用户操作和数据更改创建操作,获取所需的数据并对其进行处理。接口仍然完全由用户数据定义,因为在需要时,您始终在存储中有需要的信息,以获取其剩余部分。它只是有点压缩,也就是说,你只保存消息总数或邮箱的ID,直到用户导航到它。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33992812

复制
相关文章
如何将Redux与React Hooks一起使用
React Redux在2019年6月11日发布的7.1版中提供了对Hooks的支持。这意味着我们可以在函数组件中将Redux与Hooks一起使用,而不是使用高阶组件(HOC)。
前端知否
2020/03/23
7.1K0
如何将Redux与React Hooks一起使用
IndexedDB
IndexedDB 是一个比较复杂的 API,涉及不少概念。它把不同的实体,抽象成一个个对象接口。学习这个 API,就是学习它的各种对象接口。
jinghong
2020/05/12
9020
IndexedDB使用与出坑指南
本文通过对IndexedDB的使用方法和使用场景进行相关介绍,对常见的问题进行解答。
黄Java
2018/09/18
8K1
IndexedDB使用与出坑指南
IndexedDB 基础
这一篇,由于在自己项目中采用的前端存储 —— IndexedDB,所以这一篇就介绍一些关于 IndexedDB 的知识。
1ess
2021/10/29
6170
IndexedDB 教程
IndexedDB 是一个基于 JavaScript 的面向对象的事务型数据库。有了 LocalStorage 和 Cookies,为什么还要推出 indexedDB 呢?其实对于在浏览器里存储数据,可以使用 cookies 或 LocalStorage,但它们都是比较简单的技术,而 IndexedDB 提供了类似数据库风格的数据存储和使用方式。
老马
2018/08/20
1.6K0
深度学习中超大规模数据集的处理
在机器学习项目中,如果使用的是比较小的数据集,数据集的处理上可以非常简单:加载每个单独的图像,对其进行预处理,然后输送给神经网络。但是,对于大规模数据集(例如ImageNet),我们需要创建一次只访问一部分数据集的数据生成器(比如mini batch),然后将小批量数据传递给网络。其实,这种方法在我们之前的示例中也有所涉及,在使用数据增强技术提升模型泛化能力一文中,我就介绍了通过数据增强技术批量扩充数据集,虽然那里并没有使用到超大规模的数据集。Keras提供的方法允许使用磁盘上的原始文件路径作为训练输入,而不必将整个数据集存储在内存中。
云水木石
2019/07/02
1.5K0
深度学习中超大规模数据集的处理
React和Redux——状态管理Flux和Redux
在强调组件化的React中,我们需要以高内聚、低耦合的原则设计高可复用性的组件。因此渲染组件的数据由两部分组成,一个是由父组件传入的Props参数、一个是组件的内部状态State。Props参数可以是任何的Javascript对象,作为组件本身可以通过使用propTypes限制必须输入的参数和输入参数的类型以保证组件的可用性。State负责维护组件内部的状态,组件内部必要时可以通过触发父组件传递的回调函数传递信息给父组件或者将State以Props的形式传递给子组件。
lyndonxdlin
2018/07/05
1.9K0
Spring与Hibernate3集成
        Spring内置了一组DAO组件,可以针对JDBC、Hibernate、iBATIS等常见数据访问技术提供简化操作,让我们把精力集中在核心的数据操作上。
用户10175992
2022/11/15
7900
Spring与Hibernate3集成
在 redux 中集成 angular di 机制
最近一直在折腾redux相关的东西,算然说官方鼓励的使用方式是将redux和react一起使用,但并不影响我们在其他的mvvm框架中使用它。
littlelyon
2018/10/19
8480
IndexedDB详解
IndexedDB是一种在浏览器端存储数据的方式。既然称之为DB,是因为它丰富了客户端的查询方式,并且因为是本地存储,可以有效的减少网络对页面数据的影响。
程序那些事
2021/01/13
7300
JCIM|药物发现的超大型化合物数据集概述
2022年4月14日,美国国家癌症研究所 (NCI) 计算机辅助药物设计研究课题组的Wendy等人在JCIM杂志上发表综述,整理了当前用于药物研发的超大型数据库以及检索技术的情况。
智药邦
2022/06/08
1.3K0
JCIM|药物发现的超大型化合物数据集概述
TypeScript入门(与VUE2集成)
main.js改成main.ts配置vue.config.js的入口为main.ts
码客说
2022/03/02
9920
超大流量电商平台系统背后的持续集成与发布
摘要 发布作为应用上线前的最后一个步骤,一直以来都是运维做的比较频繁也是风险比较高的操作,发布系统不仅要做到提升发布效率,更重要的是保障发布过程中系统的稳定,减少因发布导致的故障。本次演讲主要讲述美联
IT大咖说
2018/04/04
9950
超大流量电商平台系统背后的持续集成与发布
indexedDB 基本使用
来源:党黎明 mr-dang.github.io/javascript/2017/12/09/indexedDB基本使用.html indexedDB 简介: indexedDB 是一种使用浏览器存储大量数据的方法。它创造的数据可以被查询,并且可以离线使用。 indexedDB 有以下特点: indexedDB 是 WebSQL 数据库的取代品 indexedDB遵循同源协议(只能访问同域中存储的数据,而不能访问其他域的) API包含异步API和同步API两种:多数情况下使用异步API; 同步API必须
企鹅号小编
2018/02/11
1.6K0
indexedDB 基本使用
Cookies、Local Storage、Session Storage、WebSQL 和 IndexedDB
本地存储,在浏览器中包括了 Cookies、Local Storage、Session Storage、WebSQL 和 IndexedDB 这 5 种形式的本地存储,它们之间的区别:
MickyInvQ
2020/09/27
1.2K0
初识浏览器数据库IndexedDB
indexedDB是一种使用浏览器存储大量数据的方法.它创造的数据可以被查询,并且可以离线使用. IndexedDB对于那些需要存储大量数据,或者是需要离线使用的程序是非常有效的解决方法. indexedDB也遵从同源协议(same-origin policy). 所以你只能访问同域中存储的数据,而不能访问其他域的。
美团骑手
2021/12/24
6990
react 和 redux 入门
本文作者:IMWeb 王少飞 原文出处:IMWeb社区 未经同意,禁止转载 react的核心思想:组件封装。 页面的所有元素都是可以封装成组件 react包含以下几个概念 1 组件 2 JS
IMWeb前端团队
2018/01/08
1.1K0
Redux 原理与实现
Redux 和 React 之间并没有什么关系,脱离了 React,Redux 也可以与其它的 js 库(甚至是原生 js)搭配使用,Redux 只是一个状态管理库,但它与 React 搭配时却很好用,使开发 React 应用更加简介。而使用 Redux 库时,需要先做“配置”,因为这些代码的书写是必不可少的。下面的图是 redux 的工作流:
多云转晴
2020/02/26
4.5K0
数据集 | 教育和COVID-19数据集
该数据集包含疫情期间有关全球学校关闭的信息,例如关闭状态和日期。它还包含在全球各个国家/地区的各级学校就读的学生人数。
数据科学人工智能
2022/03/30
3930
数据集 | 教育和COVID-19数据集
笔记:超大数据下最优抽样理论与方法
感谢 北京大学公共卫生学院生物统计系系列学术讲座 大数据统计学习理论与分布式计算及其应用 演讲者:周勇 教授
水煮麥楽雞
2022/11/20
5840

相似问题

如何将Redux与Firebase集成?

13

如何将ReactJS与Redux和Spring mVC集成

21

如何将Firebaseui auth与Redux集成

11

如何将Redux DevTools与ReactOnRails集成

18

将redux-offline与Angular 5集成

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档