问题标签 [in-memory-database]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4459 浏览

c++ - 如何创建 sqllite3 内存数据库?

sqlite3适当用途之一是“内存数据库”。对于我的 C++ 应用程序来说,这听起来像是一个非常有用的工具。有没有人有一个例子说明这是如何在 C 或 C++ 中完成的?我正在寻找一种规范的方法来将几个平面文件放入内存数据库中,然后进行一些连接。

0 投票
4 回答
2251 浏览

database - 内存数据库

我正在使用 SqlServer 来驱动 WPF 应用程序,我目前正在使用 NHibernate 并预读取所有数据,因此出于性能原因将其缓存。这适用于单个客户端应用程序,但我想知道是否有一个内存数据库可供我使用,以便我可以在同一台机器上的多个应用程序之间共享信息。理想情况下,这将位于我的 NHibernate 堆栈之下,因此我的代码不必更改。实际上,我希望将我的数据库从服务器上的传统格式移动到客户端上的内存数据库。

注意我只需要选择功能。

0 投票
3 回答
2323 浏览

java - 我可以持久化的内存中 Java 数据库(作为一个巨大的内存块)

我正在寻找一个用于 Java 的内存中关系 (SQL) 数据库(类似于 HSQLDB),我可以对其整个状态进行序列化。

或者数据库只使用我在初始化时给它的 byte[] :

数据库不会太大,只有几十 MB,但我无法写入文件,所以我需要在关闭 VM 之前将所有内容从机器上传输出去(并定期进行备份)。

我可以使用普通的(并且易于序列化的)Java 数据结构,如数组或映射而不是 DB,但我希望能够使用 SQL。

0 投票
2 回答
1486 浏览

rdbms - 主内存数据库与对象数据库

我目前正在尝试选择数据库供应商。

我只是从那里的数据库开发人员那里寻求一些个人意见。

我的问题特别针对以下人群:

1)之前使用过支持复制到磁盘(混合)的主内存数据库(MMDB)(即ExtremeDB

或者

2) 使用过Versant Object Database和/或Objectivity Database和/或Progress ObjectStore

问题确实是:如果您可以根据您的经验推荐适合我的应用程序的数据库供应商。

我的应用程序是一个商业实时(阅读:高性能)面向对象的 C++ GIS 类型的应用程序,我们需要在其中进行大量纬度/经度搜索(即给定一个区域,查找该区域内的所有匹配目标。 ..R-树索引)。

我想存储到数据库中的数据类型都被建模为对象,并且它们使用 std::list 和 std::vector,所以自然地,对象数据库似乎是有意义的。我已经阅读了足够多的文章来说服自己,传统的 RDBMS 可能不是我真正想要的

  1. 性能(用于动态长度数据(如列表/向量)的连接或多个表)
  2. 易于编程(阻抗不匹配)

不过,就性能而言,

  1. 输入数据以大约 40 MB/s 的速度输入系统。

  2. 因此,系统还将以大约每秒 350 次插入的速率插入数据库(其中每个对象从 64KB 到 128KB 不等),

  3. 数据库将始终通过多个线程进行搜索和更新。

据我了解,我在这里列出的所有对象数据库都使用缓存来存储数据库对象。ExtremeDB 声称,由于它是专为内存设计的,因此可以避免缓存逻辑等开销。通过谷歌搜索查看更多信息:主内存与 RAM 磁盘数据库:基于 Linux 的基准测试

所以..我只是有点困惑。对象数据库可以在实时系统中使用吗?它和 MMDB 一样“快”吗?

0 投票
5 回答
12763 浏览

database - 有没有人发表过不同内存 RDBMS 之间的详细比较?

有相当多的独立和不那么独立的研究比较了传统的 RDBMS,但我还没有设法在内存数据库中找到任何好的材料。我主要对专门用于 OLTP 的那些感兴趣。

到目前为止,我设法找到了有关 TimesTen 和 MySQL Cluster 的通用白皮书,但我还没有看到正面对比。还有其他替代品(例如来自 IBM),但更不容易获得的材料。

0 投票
2 回答
615 浏览

.net - 跨 AppDomain 边界可用的内存数据库

我想知道是否有内存数据库实现,可以跨多个 AppDomain 使用相同的内存数据库实例。

动机。像那里的许多人一样,我们对我们的客户端-服务器应用程序进行了集成测试。有几种测试模式,从最重的一种——现实生活场景,客户端、服务器和数据库都位于不同的机器上,到最轻量的一种,客户端和服务器只是同一个进程中的两个 AppDomain并且数据库是同一台机器上的 sqlite 文件。

自然,轻量级场景是最快的,开发人员经常使用它,而重度场景在每次构建时在我们的 CI 服务器上运行。

我的目标是通过使用内存数据库进一步加速轻量级场景。

问题。好的,所以 sqlite 有一个内存数据库选项,但是这样一个数据库:

  • 在与它的连接关闭后被处理掉。
  • 不能有两个打开的连接,新连接打开另一个数据库实例。

不幸的是,我需要两个 - 一个用于测试暂存代码,它在客户端 AppDomain 中运行,另一个用于服务器端 DAL。

我意识到 sqlite 内存数据库工作方式背后的基本原理。我也意识到在两个 AppDomain 之间共享内存数据库的困难。如何在两个 AppDomain 之间共享内存缓冲区而不恢复到内存映射文件(而且我不想处理任何文件系统 API)?

我看到的唯一有效的解决方案是让两个 AppDomain 共享一个非托管内存缓冲区,其中缓冲区的句柄将从一个 AppDomain 传递到另一个。但是是否有任何支持此设置的内存数据库实现?

(一种低效的解决方案是将整个数据库从一个 AppDomain 传递到另一个 AppDomain,然后再返回)。

我的分析可能完全错误,我可能会错过一些简单的解决方案。无论如何,我想知道是否有人遇到过同样的问题以及他们是如何解决的。

附言

我真的很想避免使用任何类型的文件 API,比如内存映射文件。

0 投票
1 回答
469 浏览

database - 是否有任何支持计算列的内存数据库?

我们有一个 SQL 2005/2008 数据库,它有一个带有计算列的表。我们在 NHibernate 中使用计算列作为鉴别器,因此将它放在数据库中被证明是非常有用的。

为了获得更快集成测试的好处,我希望能够针对 SQLite 或 SQL CE 等内存数据库运行我们的集成测试。但我认为其中任何一个都不支持计算列。

我的问题还有其他解决方案吗?如果有更好的解决方案,我可以完全访问数据库并且可以修改它。我看到这篇文章建议使用视图而不是计算列,这是最好的选择吗?

0 投票
9 回答
6678 浏览

database - 我什么时候应该考虑使用内存数据库,需要注意什么问题?

我只是认为现在您的数据库服务器上通常有足够的 RAM 来缓存您的完整数据库,为什么几年前风靡一时的内存数据库专家 (例如TimesTen,另见Wikipedia 页面)没有被使用更多的?

似乎随着时间的推移,非基于磁盘的数据库的使用越来越少,例如,现在大多数应用程序都建立在传统的理性数据库之上。我本来预计会出现相反的情况,因为许多服务器的 RAM 越来越接近免费。

我在问这个,因为我刚刚阅读了 stack-overflow-architecture 并且页面上说

这很重要,因为 Stack Overflow 的数据库几乎完全在 RAM 中,而且连接的成本仍然太高。

但我认为如果使用“指针”和“集合”而不是普通的 btree,这将不是问题。Btree 是一种非常聪明的对磁盘访问速度进行限制的方法,例如,它们交换 CPU 使用率以减少磁盘使用率。但是我们现在有这么匹配的 ram。

但是我们仍然需要数据库,就像自己做的那样

  • 锁定
  • 死锁检测
  • 事务日志
  • 恢复
  • ETC

非常难。

@S.Lott,鉴于我们都花了很长时间选择索引、避免连接和调查数据库性能问题。肯定有更好的办法。几年前,我们被告知“内存数据库”是更好的方法。所以在我开始使用一个 etc 之前,我想知道为什么其他人没有更多地使用它们。

(我自己不太可能使用 TimesTen,因为它价格高(41,500.00 美元/处理器)而且我不喜欢与 Oracle 销售人员交谈——我宁愿花时间编写代码。)

也可以看看:

更新:

很久以前我问过这个问题,现在 Microsoft SQL Server 有“内存中 OLTP ”,这是一个集成到 SQL Server 引擎中的内存优化数据库引擎。它并不便宜,但对于某些工作负载来说似乎非常快。

0 投票
8 回答
17587 浏览

.net - 内存数据库中 TimesTen 的替代品

我刚刚发现“有没有人发布过不同内存 RDBMS 之间的详细比较?” 这与我的问题有关。

TimesTen(另请参阅是 oracle 的一个内存数据库

它有很多事情要做,包括。

  • 快速、一致的响应时间
  • 高交易吞吐量
  • 标准 SQL,无需应用程序重写
  • 持久和可恢复
  • 高可用性,无数据丢失

然而,它的价格超出了大多数人的承受能力(41,500.00 美元/处理器)。

那么有哪些替代方案,有哪些优点和缺点。

(如果它改变了你的答案,我正在使用.NET)

0 投票
1 回答
514 浏览

sqlite - SubSonic 3 存储库 - SQLite 内存

在我花时间修改 SubSonic 3 源之前,我想我想看看我是否遗漏了一些简单的东西。

是否可以在 SQLite In-Memory 数据库上使用 SubSonic 3 存储库进行迁移?我找不到强制 DbDataProvider 保持连接打开的方法,因此当连接关闭时 In-Memory SQLite 数据库不会消失。

我正在尝试的连接字符串的单元测试是......

我尝试在 IDataProvider 上设置“共享连接”,但连接似乎仍然关闭。

如果没有,我将更新 SubSonic 源并提交更改。

谢谢!