标签: in-memory-database

有没有人有FastDB(C++内存数据库)的经验?

FastDB是一个开源的内存数据库,它与C++紧密集成(它支持类似SQL的查询语言,其中表是类,行是对象).与大多数IMDB一样,它适用于以读取访问模式为主的应用程序.算法和数据结构针对完全在主存储器(RAM)中读写数据的系统进行了优化.它应该非常快,甚至与其他内存数据库相比,但我无法在线找到任何基准测试.

我正在考虑将FastDB用于时间序列数据,在一个项目中,1)亚毫秒级的随机访问读取延迟,以及2)每秒数百万行的顺序读取吞吐量将是非常好的.

我找不到很多关于FastDB第一手经验的参考资料; 这里有人用它吗?你能指出FastDB的任何基准测试,特别是那些考虑读取延迟和吞吐量的基准测试吗?

c++ sql database performance in-memory-database

7
推荐指数
1
解决办法
6296
查看次数

R Shiny in Memory Application或noSQL

我正在使用R的闪亮框架运行一个小型Web应用程序.该工具没有那么多.它只是过滤来自UI的给定参数的数据帧.我现在遇到的问题如下.如果用户通过http访问应用程序,则需要很长时间才能启动应用程序.因为我加载的数据global.R相当大(~5GB).初次启动后,应用程序运行顺畅,同时在给定时间内重新访问(应用程序似乎完全在内存中,持续几分钟).由于我有足够的可用内存,并且我的数据不会因用户交互而改变,我问自己是否可以将完整的应用程序保留在内存中.有可能强迫这个吗?我的服务器正在运行centOS 6.此外,问题不在于文件系统,硬盘等. - 我创建了一个ram磁盘来加载数据,但性能提升是微不足道的.所以在处理数据时,瓶颈似乎是R.

现在我有两个想法,可以解决这个问题.

  • 正如我所提到的,是否有可能将完整的应用程序保留在内存中?
  • 不要将数据保存为R对象,而是使用快速的noSQL DB,例如内存中的Redis

愿你们中的一个人在加载更大的数据时有一些经验.如果可以进行讨论,我将感激不尽.如果可能的话,我想避免像Redis这样的外部软件尽可能地保持一切.

一切顺利,

马里奥

r nosql in-memory-database redis shiny

7
推荐指数
1
解决办法
456
查看次数

SQL Server 是否支持内存数据库?

我基本上有一个测试场景,我在那里

  1. 创建数据库
  2. 用一些数据填充它
  3. 执行要测试的业务逻辑,修改数据。我不拥有业务逻辑实现或数据库架构。我必须测试已经存在的东西。
  4. 断言数据已按预期更改
  5. 删除数据库

SQL Server 是否仅支持内存中的类似内容,以便我可以通过删除 #1 和 #5 来加快速度?显然我不需要坚持。

sql-server integration-testing database-testing in-memory-database

7
推荐指数
1
解决办法
3989
查看次数

未创建 EntityFrameworkCore SQLite 内存数据库表

对于集成测试,我使用EntityFrameworkCore SQLite内存数据库并根据 Microsoft 文档创建其架构,但是当我尝试播种数据时,会抛出表不存在的异常。

鼠标悬停文档DbContext.Database.EnsureCreated();

确保上下文的数据库存在。如果存在,则不执行任何操作。如果它不存在,则创建数据库及其所有模式。如果数据库存在,则不会采取任何措施来确保它与此上下文的模型兼容。

我已经读到EntityFrameworkCore内存中的数据库只存在于打开的连接时才存在,所以我尝试显式创建一个var connection = new SqliteConnection("DataSource=:memory:");实例并将下面的代码包装在一个using(connection) {}块中并传递连接实例options.UseSqlite(connection);,但DbContext.Database.EnsureCreated();仍然没有创建任何数据库-对象

public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<Startup>
{
    protected override IWebHostBuilder CreateWebHostBuilder()
    {
        return WebHost.CreateDefaultBuilder()
            .UseStartup<Startup>();
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
      using (var connection = new SqliteConnection("DataSource=MySharedInMemoryDb;mode=memory;cache=shared"))
      {
          connection.Open();
          builder.ConfigureServices(services =>
          {
              var serviceProvider = new ServiceCollection()
                  .AddEntityFrameworkSqlite()
                  .BuildServiceProvider();

              services.AddDbContext<MyDbContext>(options =>
              {
                  options.UseSqlite(connection);
                  options.UseInternalServiceProvider(serviceProvider);
              });

              var contextServiceProvider = services.BuildServiceProvider();

              // we need a scope …
Run Code Online (Sandbox Code Playgroud)

c# sqlite integration-testing in-memory-database entity-framework-core-2.2

7
推荐指数
1
解决办法
5828
查看次数

如何使用命令行工具sqlite3浏览内存中的SQLite数据库

有没有办法使用sqlite3 CLI工具将整个SQLite数据库加载到内存中以获得更快的结果?谢谢!

sqlite in-memory-database

6
推荐指数
2
解决办法
7118
查看次数

如何使用JDBC连接到Play Framework内存数据库?

当我db=mem在配置文件中进行开发时,我使用Play Framework附带的内存数据库.

如何使用JDBC连接到此数据库?而不是默认方式的JPA.

我在我的控制器中尝试过这种方法:

public static void addToDB() {
    try {
        Connection conn = DriverManager.getConnection("jdbc:h2:mem:play");
        Statement stmt = conn.createStatement();
        stmt.execute(sql);
        stmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误消息,我需要提供用户名和密码:

org.h2.jdbc.JdbcSQLException: Wrong user name or password [8004-149]
Run Code Online (Sandbox Code Playgroud)

如果我访问web控制台上使用/@db的用户名sa没有密码.


现在我通过/@db界面登录并创建了一个表users.

然后我在控制器方法中连接到数据库并使用此jdbc-string:jdbc:h2:mem:play:sa然后尝试插入表users但我收到此错误消息:

org.h2.jdbc.JdbcSQLException: Table "USERS" not found; SQL statement:
Run Code Online (Sandbox Code Playgroud)

我应该如何使用JDBC连接到Play Framework中的内存H2数据库?

database-connection jdbc h2 in-memory-database playframework

6
推荐指数
2
解决办法
4607
查看次数

H2 vs HSQLDB vs Derby | 报告应用程序的内存 RDBMS

我正在设计一个用于动态报告的数据 REST API。基本上,您将数据传递给它(以及操作数据的函数),它会返回一个 HTML,其中包含应用于数据的函数。通常,这些功能是过滤、分组、聚合、排序(常规 RDBMS 提供的功能)。我正在考虑为此使用内存数据库。通过这样做,我将简单地利用 DB 提供的功能,而不必自己实现。

但是,这需要服务加载数据(可能是批量加载),然后运行动态构造的一系列查询 - 作为每个服务调用的一部分。

要加载到数据库中的数据(输入)最多可以有 100K 行。当然不是百万!

但是服务可以被不同的线程访问(每个线程都会将它们的数据集加载到数据库中并并发读取)。当然,jdbc 连接将被合并,表将在每个事务结束时被截断。

我在问自己,我是否过火并试图利用内存数据库?我自己(并且经常听到)关于内存数据库(尤其是 H2 和 HSQL)仅在集成测试的上下文中使用过它。

很想听听你的意见。

derby h2 hsqldb in-memory-database

6
推荐指数
0
解决办法
4060
查看次数

缓存系统 - Redis vs Geode/GemFire

我们正在考虑在我们的应用程序中使用缓存系统来进行数据查找.这些数据很少会发生变化.我发现用出来了Redis,GemFire/ Geode,VoltDB,Aerospike,Hazlecast和其他几个.我入围了Geode和Redis.两者都是key-value内存商店.

Redis(基于C语言)似乎更容易使用并支持数据类型,如列表,散列,集合,排序集等.它还有一些很好的客户端,可用Java,NodeJS,C#等.它支持多个节点(master -奴隶).

Geode(基于Java)似乎有更多的功能,因为它的存在可以追溯到很久以前.它具有存储数据的区域概念.它有Java,C#,C++等客户端.它具有制作系统的定位器和服务器.它支持分布式服务器/节点(非共享/无单点故障).

我搜索互联网,但在读/写速度,内存使用,磁盘I/O转储,扩展,安全性方面找不到这两者之间的任何比较.有没有人遇到过这样的情况?

in-memory-database redis geode

6
推荐指数
1
解决办法
6835
查看次数

可在测试 Nodejs Express App 期间使用的内存数据库

我只想在为 Express API 运行单元测试用例时使用内存数据库。对于 Java Spring 中的实例,我们使用 H2 数据库进行测试,主要使用 mysql。

所以任何建议都是一样的。

另外,我如何更改 package.json ,以便在运行mocha节点时自动捕获内存数据库来存储值。就像在 Spring 中一样,我们将 application.properties 放在 test 文件夹中,然后 spring 会自动获取测试数据库设置。

unit-testing mocha.js in-memory-database node.js package.json

6
推荐指数
0
解决办法
1270
查看次数

如何获取InMemoryUploadedFile django中上传的文件

我正在 django 2.1 中开发一个应用程序,其中我必须通过模态上传不确定数量的音频,然后将信息传递给启动模态的视图。但是,在填写主视图表单之前,不应将这些音频存储在数据库中。然后我想到了这些解决方案:

首先,我考虑将其保存为会话属性,但 FileField 的内容不是 JSON 可序列化的,这不起作用。

其次,我考虑了 LocalStorage 属性,但如果文件超过大小,我就会遇到问题。

第三,我考虑过获取文件路径然后创建音频,但在我阅读时,这是一种不好的做法,只有在磁盘上创建文件时才能获得,也就是说,如果它在 TemporaryUploadedFile 中,但我的文件应该更轻超过一个 1MB

为此,我可以选择将所有加载的小于 2.5MB 的文件存储在 InMemoryUploadedFile 中,但我不知道如何获取它们。有谁知道这是怎么做的?或者我还能如何保存临时音频列表?

python django filefield in-memory-database

6
推荐指数
1
解决办法
8263
查看次数