FastDB是一个开源的内存数据库,它与C++紧密集成(它支持类似SQL的查询语言,其中表是类,行是对象).与大多数IMDB一样,它适用于以读取访问模式为主的应用程序.算法和数据结构针对完全在主存储器(RAM)中读写数据的系统进行了优化.它应该非常快,甚至与其他内存数据库相比,但我无法在线找到任何基准测试.
我正在考虑将FastDB用于时间序列数据,在一个项目中,1)亚毫秒级的随机访问读取延迟,以及2)每秒数百万行的顺序读取吞吐量将是非常好的.
我找不到很多关于FastDB第一手经验的参考资料; 这里有人用它吗?你能指出FastDB的任何基准测试,特别是那些考虑读取延迟和吞吐量的基准测试吗?
我正在使用R的闪亮框架运行一个小型Web应用程序.该工具没有那么多.它只是过滤来自UI的给定参数的数据帧.我现在遇到的问题如下.如果用户通过http访问应用程序,则需要很长时间才能启动应用程序.因为我加载的数据global.R相当大(~5GB).初次启动后,应用程序运行顺畅,同时在给定时间内重新访问(应用程序似乎完全在内存中,持续几分钟).由于我有足够的可用内存,并且我的数据不会因用户交互而改变,我问自己是否可以将完整的应用程序保留在内存中.有可能强迫这个吗?我的服务器正在运行centOS 6.此外,问题不在于文件系统,硬盘等. - 我创建了一个ram磁盘来加载数据,但性能提升是微不足道的.所以在处理数据时,瓶颈似乎是R.
现在我有两个想法,可以解决这个问题.
愿你们中的一个人在加载更大的数据时有一些经验.如果可以进行讨论,我将感激不尽.如果可能的话,我想避免像Redis这样的外部软件尽可能地保持一切.
一切顺利,
马里奥
我基本上有一个测试场景,我在那里
SQL Server 是否仅支持内存中的类似内容,以便我可以通过删除 #1 和 #5 来加快速度?显然我不需要坚持。
sql-server integration-testing database-testing in-memory-database
对于集成测试,我使用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
有没有办法使用sqlite3 CLI工具将整个SQLite数据库加载到内存中以获得更快的结果?谢谢!
当我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
我正在设计一个用于动态报告的数据 REST API。基本上,您将数据传递给它(以及操作数据的函数),它会返回一个 HTML,其中包含应用于数据的函数。通常,这些功能是过滤、分组、聚合、排序(常规 RDBMS 提供的功能)。我正在考虑为此使用内存数据库。通过这样做,我将简单地利用 DB 提供的功能,而不必自己实现。
但是,这需要服务加载数据(可能是批量加载),然后运行动态构造的一系列查询 - 作为每个服务调用的一部分。
要加载到数据库中的数据(输入)最多可以有 100K 行。当然不是百万!
但是服务可以被不同的线程访问(每个线程都会将它们的数据集加载到数据库中并并发读取)。当然,jdbc 连接将被合并,表将在每个事务结束时被截断。
我在问自己,我是否过火并试图利用内存数据库?我自己(并且经常听到)关于内存数据库(尤其是 H2 和 HSQL)仅在集成测试的上下文中使用过它。
很想听听你的意见。
我们正在考虑在我们的应用程序中使用缓存系统来进行数据查找.这些数据很少会发生变化.我发现用出来了Redis,GemFire/ Geode,VoltDB,Aerospike,Hazlecast和其他几个.我入围了Geode和Redis.两者都是key-value内存商店.
Redis(基于C语言)似乎更容易使用并支持数据类型,如列表,散列,集合,排序集等.它还有一些很好的客户端,可用Java,NodeJS,C#等.它支持多个节点(master -奴隶).
Geode(基于Java)似乎有更多的功能,因为它的存在可以追溯到很久以前.它具有存储数据的区域概念.它有Java,C#,C++等客户端.它具有制作系统的定位器和服务器.它支持分布式服务器/节点(非共享/无单点故障).
我搜索互联网,但在读/写速度,内存使用,磁盘I/O转储,扩展,安全性方面找不到这两者之间的任何比较.有没有人遇到过这样的情况?
我只想在为 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
我正在 django 2.1 中开发一个应用程序,其中我必须通过模态上传不确定数量的音频,然后将信息传递给启动模态的视图。但是,在填写主视图表单之前,不应将这些音频存储在数据库中。然后我想到了这些解决方案:
首先,我考虑将其保存为会话属性,但 FileField 的内容不是 JSON 可序列化的,这不起作用。
其次,我考虑了 LocalStorage 属性,但如果文件超过大小,我就会遇到问题。
第三,我考虑过获取文件路径然后创建音频,但在我阅读时,这是一种不好的做法,只有在磁盘上创建文件时才能获得,也就是说,如果它在 TemporaryUploadedFile 中,但我的文件应该更轻超过一个 1MB
为此,我可以选择将所有加载的小于 2.5MB 的文件存储在 InMemoryUploadedFile 中,但我不知道如何获取它们。有谁知道这是怎么做的?或者我还能如何保存临时音频列表?