- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要存储和访问金融市场烛台信息。
我需要储存的蜡烛棒数量开始看起来惊人(巨大)。有 1000 多个市场,每个市场都有很多交易对,每一对都有很多时间框架,每个时间框架都是一组蜡烛,如下所示。例如,下面的数组可以用于每小时价格数据或每日价格数据。
我需要在任何给定时间向多个用户提供此信息,因此需要存储它并以某种方式使其可用。
数据看起来像这样:
[
{
time: 1528761600,
openPrice: 100,
closePrice: 20,
highestPrice: 120,
lowesetPrice:10
},
{
time: 1528761610,
openPrice: 100,
closePrice: 20,
highestPrice: 120,
lowesetPrice:10
},
{
time: 1528761630,
openPrice: 100,
closePrice: 20,
highestPrice: 120,
lowesetPrice:10
}
]
数据的消费者将主要是一个复杂的基于 Javascript 的图表应用程序,但其他消费者将是节点代码,也许还有其他后端代码。
我目前最好的想法是将烛台保存在 Redis 中,尽管我也考虑过使用 noSQL 数据库。我在这两个方面都不是很有经验,所以我不能 100% 确定 Redis 是正确的选择。它似乎是性能最高的选项,但可能更难使用,因为我必须学习很多东西,而且我不相信 Redis 使用的保存和检索方法会使这变得非常容易,因为,我将需要不断地向每个数组添加蜡烛。
我目前在想:
从 candle stick api 进行初始提取,然后:
这种方法的缺点:
每次创建新蜡烛时,我都必须解析 json,添加任何新蜡烛条并进行字符串化并保存。
这种方法的优点:
我可以使用 Javascript 来管理数组并确保它已排序等
我不得不说,这两种方法都让我觉得将数据放在关系数据库中更加痛苦。我想非 SQL 数据库也可能更容易,但我没有使用它们的经验,所以我不能肯定地说。
如您所知,我有点迷茫,不了解我在这里的经历,并且希望有人能给我任何建议。
谢谢:)
最佳答案
您的数据非常规则 - 每个烛台基本上有 1 个 64 位长的时间戳和 4 个 32 位数字的价格。这使得它非常适合 bitfield .
这是我将如何存储它 -
这样,您的内存为 (30*5 + 24*5) * 16 字节 = 每个符号 4320 字节 + 每个键的恒定开销。
您不需要存储时间戳(见下文)。另外,我假设用 4 个字节来存储价格。您可以通过消除小数点将其存储为整数。
要插入每小时价格,请找到当前时间(比如 07:00)。如果将位域视为 4 字节整数数组,则必须跳过 7 * 4 = 28 个整数。然后,您将价格插入位置 28、29、30、31(基于 0 的索引)。
因此,要在 07:00 存储 AAPL 的价格,您需要运行命令
bitfield AAPL:hourly_prices set i32 28 <open price> i32 29 <close price> i32 30 <highest price> i32 31 <lowest price>
您也可以对每日价格执行类似的操作。
如果您正在构建图表库,您很可能希望返回给定时间范围内多个交易品种的数据。假设您想提取过去 7 天的每日价格,您的逻辑将是 -
如果你在管道中运行它,它会非常快。
通常,您会根据交易品种的某些属性进行过滤。例如,“显示过去 5 天排名前 10 位的科技公司的图表”。
符号本身就是关系数据。我建议将其存储在关系数据库中。只需从关系数据库中获取符号名称作为列表,然后从 Redis 中获取股票价格。
关于redis - 在 Redis/NoSQL 或关系数据库中存储大量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51776115/
我正在运行一个辅助角色,并检查 Azure 上托管的存储中是否存在数据。当我将连接字符串用于经典类型的存储时,我的代码可以正常工作,但是当我连接到 V2 Azure 存储时,它会抛出此异常。 “远程服
在我的应用程序的主页上,我正在进行 AJAX 调用以获取应用程序各个部分所需的大量数据。该调用如下所示: var url = "/Taxonomy/GetTaxonomyList/" $.getJSO
大家好,我正在尝试将我的商店导入我的 Vuex Route-Gard。 路由器/auth-guard.js import {store} from '../store' export default
我正在使用 C# 控制台应用程序 (.NET Core 3.1) 从 Azure Blob 存储读取大量图像文件并生成这些图像的缩略图。新图像将保存回 Azure,并将 Blob ID 存储在我们的数
我想将 Mlflow 设置为具有以下组件: 后端存储(本地):在本地使用 SQLite 数据库存储 Mlflow 实体(run_id、params、metrics...) 工件存储(远程):使用 Az
我正在使用 C# 控制台应用程序 (.NET Core 3.1) 从 Azure Blob 存储读取大量图像文件并生成这些图像的缩略图。新图像将保存回 Azure,并将 Blob ID 存储在我们的数
我想将 Mlflow 设置为具有以下组件: 后端存储(本地):在本地使用 SQLite 数据库存储 Mlflow 实体(run_id、params、metrics...) 工件存储(远程):使用 Az
我的 Windows 计算机上的本地文件夹中有一些图像。我想将所有图像上传到同一容器中的同一 blob。 我知道如何使用 Azure Storage SDKs 上传单个文件BlockBlobServi
我尝试发出 GET 请求来获取我的 Azure Blob 存储帐户的帐户详细信息,但每次都显示身份验证失败。谁能判断形成的 header 或签名字符串是否正确或是否存在其他问题? 代码如下: cons
这是用于编写 JSON 的 NeutralinoJS 存储 API。是否可以更新 JSON 文件(推送数据),而不仅仅是用新的 JS 对象覆盖数据。怎么做到的??? // Javascript
我有一个并行阶段设置,想知道是否可以在嵌套阶段之前运行脚本,所以像这样: stage('E2E-PR-CYPRESS') { when { allOf {
我想从命令行而不是从GUI列出VirtualBox VM的详细信息。我对存储细节特别感兴趣。 当我在GUI中单击VM时,可以看到包括存储部分在内的详细信息: 但是到目前为止,我还没有找到通过命令行执行
我有大约 3500 个防洪设施,我想将它们表示为一个网络来确定流动路径(本质上是一个有向图)。我目前正在使用 SqlServer 和 CTE 来递归检查所有节点及其上游组件,只要上游路径没有 fork
谁能告诉我 jquery data() 在哪里存储数据以及何时删除以及如何删除? 如果我用它来存储ajax调用结果,会有性能问题吗? 例如: $("body").data("test", { myDa
有人可以建议如何为 Firebase 存储中的文件设置备份。我能够备份数据库,但不确定如何为 firebase 存储中的文件(我有图像)设置定期备份。 最佳答案 如何进行 Firebase 存储的本地
我最近开始使用 firebase 存储和 firebase 功能。现在我一直在开发从功能到存储的文件上传。 我已经让它工作了(上传完成并且文件出现在存储部分),但是,图像永远保持这样(永远在右侧加载)
我想只允许用户将文件上传到他们自己的存储桶中,最大文件大小为 1MB,仍然允许他们删除文件。我添加了以下内容: match /myusers/{userId}/{allPaths=**} { al
使用生命周期管理策略将容器的内容从冷访问层移动到存档。我正在尝试以下策略,希望它能在一天后将该容器中的所有文件移动到存档层,但事实并非如此在职的。我设置了选择标准“一天未使用后”。 这是 json 代
对于连接到 Azure 存储端点,有 http 和 https 两个选项。 第一。 https 会带来开销,可能是 5%-10%,但我不支付同一个数据中心的费用。 第二。 http 更快,但 Auth
有人可以帮我理解这一点吗?我创建了Virtual Machine in Azure running Windows Server 2012 。我注意到 Azure 自动创建了一个存储帐户。当我进入该存
我是一名优秀的程序员,十分优秀!