标签: in-memory-database

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

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

wholeDatabase.serialize(outputStream);
newCopyOftheDatabase.loadFrom(inputStream);
Run Code Online (Sandbox Code Playgroud)

或者DB可能只使用我在初始化时给出的byte []:

byte[] memory = new byte[10 *1024*1024];
new InMemoryDatabase(memory);
Run Code Online (Sandbox Code Playgroud)

数据库不会太大,低几十MB,但我不能写文件,所以我需要在关闭VM之前(并定期进行备份)将所有内容流出机器.

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

java database memory-management hsqldb in-memory-database

2
推荐指数
1
解决办法
2101
查看次数

使用SmartFoxServer实现Hazelcast

我是游戏服务器开发人员.我正在使用hazelcast为我的游戏服务器(SmartfoxServer 2x)直接避免请求数据库.但我想知道如何使用hazelcast来获得最佳性能:

  1. 始终在访问缓存时创建新的hazelcast客户端实例,然后将其关闭.要么
  2. 创建hazelcast客户端实例池,然后重用.在应用程序结束前不要关闭 要么
  3. 仅创建一个hazelcast客户端实例,在应用程序结束之前永远不会关闭.要么
  4. 将我的实时服务器作为hazelcast成员.

什么是正确的方法?我的系统服务于大约5000 CCU.

我的游戏是一种纸牌游戏 - 基于回合制.每场比赛大约2分钟,最多4名球员.当它结束时,我必须记录每个交易(货币变化)和用户的新货币价值.使用5000 ccu,在最坏的情况下,同时必须记录(5000/4)*(4 + 4)= 10000个条目.它不能直接使用mysql查询(慢),但使用hazelcast,它是可能的,对吧?但我是Hazelcast技术的新手,所以我不知道解决我的问题的正确方法是什么.

预先感谢,

java in-memory-database smartfoxserver hazelcast

2
推荐指数
1
解决办法
376
查看次数

我可以将MongoDB配置为内存中吗?

我对使用能够提供高性能的数据库感兴趣,并且预期群集需要大规模水平扩展。

我们正在研究使用MongoDB,有人知道我是否可以在InMemory中使用它(即出于性能原因在RAM中使用)?

特纳克斯

mongodb in-memory-database

2
推荐指数
3
解决办法
7839
查看次数

“具有此类的id,在调用save()之前必须手动分配该类的id”

在内存测试中编写休眠模式时出现异常。

org.hibernate.id.IdentifierGenerationException:此类的ID必须在调用save()之前手动分配:

@Entity
public Account{
     @Id
     String num;
}
Run Code Online (Sandbox Code Playgroud)

首先,此pojo的id是String,我无法更改它,我无权访问数据库并更改pojo,我所能做的就是创建内存中测试。

然后,在保存此pojo之前,我填充了该pojo中的每个字段,但仍然会引发此异常。并且由于进行了内存中测试,因此内存中的DB为空,因此那里没有冲突ID。

任何想法,还有什么会导致此异常?

java hibernate in-memory-database

2
推荐指数
1
解决办法
1万
查看次数

如何在Apache Ignite中启用Visor命令行?

我通过Maven Dependency通过eclipse启动了Apache Ignite服务器,有人能告诉我如何通过visor命令监控缓存吗?如何通过Maven设置Apache Ignite时启用它?提前致谢

datagrid gridgain in-memory-database ignite

2
推荐指数
1
解决办法
1297
查看次数

如何在Apache Ignite 2.0上存储堆数据

CacheConfiguration<String, JSONObject> conf = new CacheConfiguration<String, JSONObject>();
conf.setName("ABC");
conf.setWriteThrough(true);
conf.setReadThrough(true);
conf.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED);
conf.setOffHeapMaxMemory(0);
Run Code Online (Sandbox Code Playgroud)

这是我在ignite 1.9中的缓存配置,但是当我将Apache Ignite从1.9升级到2.0时,我在最后两行配置时遇到错误.

caching gridgain in-memory-database ignite

2
推荐指数
1
解决办法
664
查看次数

在python中使用数据库名称创建内存中的sqlite数据库

我想创建多个内存中的 sqlite 数据库,并用 python 命名。

在 sqlite 命令行中,可以使用以下语法来做到这一点:

':memory:' AS database_name
Run Code Online (Sandbox Code Playgroud)

但是当在 python 连接字符串中使用它时,如下所示:

con = sqlite3.connect("':memory:' AS database_name")
Run Code Online (Sandbox Code Playgroud)

得到错误。

我的问题是我们如何在内存数据库中创建多个具有访问它们的名称。

我们如何在 python 中做到这一点?

python sqlite connection-string in-memory-database

2
推荐指数
1
解决办法
2724
查看次数

Kafka 在有状态处理中验证消息

我有一个应用程序,多个用户可以发送 REST 操作来修改共享对象的状态。当一个对象被修改时,将会发生多个操作(数据库、审计、日志记录......)。

并非所有操作都有效,例如您无法在删除对象后对其进行修改。

使用 Kafka 我正在考虑以下架构:

  1. 剩余操作在 Kafka 主题中排队。
  2. 对同一对象的操作将针对同一分区。因此该对象的所有操作都将按顺序并由消费者处理
  3. 消费者正在监听分区并使用内存数据库验证操作
  4. 如果操作有效,则发送到“有效操作主题”,否则发送到“无效操作主题”
  5. 其他消费者(db、log、audit)正在监听“有效操作主题”

我不太确定第三点。我不喜欢保留所有对象的状态的想法。(我有数十亿个对象,即使一个对象的大小可以达到 10mb,我需要存储来验证其状态的也只是几 KB...

然而,这是一种常见的模式吗?否则如何验证某些操作的有效性?

另外,您将使用什么作为内存数据库?当然它必须具有高可用性、容错性并支持事务(读和写)。

streaming in-memory-database apache-kafka kafka-consumer-api apache-kafka-streams

2
推荐指数
1
解决办法
1161
查看次数

单元测试与集成测试:实体框架核心在内存中

我目前正在使用EF Core 2.0开发ASP.NET Core 2.0 Web API.我计划实现Repository + UnitOfWork模式,我已经创建了抽象,接口等.由于我遵循TDD方法,我想在继续执行之前在这些接口上编写测试.

我面临的问题主要与语义有关.我在我的解决方案中创建了两个项目,一个用于单元测试,一个用于集成测试.对我来说很明显,同样测试数据库的测试不是单元测试,因此应该放在IntegrationTests项目中.但事实是,我正在计划使用EntityFrameworkCore.InMemory提供程序,并为每个测试启动虚假的内存数据库.

所以每个测试都应该有这样的结构:

[TestClass]
public class GamesRepositoryTest
{
    AppDbContext _context;
    IGamesRepository _repository;

    public GamesRepositoryTest()
    {

    }

    [TestInitialize]
    public void Initialize()
    {
        DbContextOptionsBuilder<AppDbContext> builder = new DbContextOptionsBuilder<AppDbContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString());
        _context = new AppDbContext(builder.Options);
        _repository = new GamesRepository(_context);
    }

    [TestCleanup]
    public void Cleanup()
    {
        _context.Database.EnsureDeleted();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,EntityFrameworkCore.InMemory是否提供了足够的抽象级别,以便上面的类可以被认为是单元测试,还是应该将它放在IntegrationTests项目中?

c# unit-testing in-memory-database entity-framework-core asp.net-core

2
推荐指数
1
解决办法
1878
查看次数

在内存数据库中与.NET Core中的Moqing框架

我们将在下一个项目中实施TDD方法.所以我一直在使用ASP.NET Core中的NUnit进行单元测试.因为我是新手,所以我对一些事感到困惑.因此,我想与您分享这些问题,以便根据专家意见做出决定.

  1. Mocking数据库和内存数据库的优点和缺点是什么?
  2. 在哪种情况下,我们应该使用Mocking,在什么情况下我们应该使用InMemory数据库提供程序?
  3. 哪种方法更好,使用InMemory或使用Mocking?
  4. 我们可以在同一个项目中同时实施这两种方法吗?
  5. 对于集成测试,我们应该使用mocking还是In Memory?
  6. 在单元测试中使用内存数据库是一种更好的方法吗?
  7. 在测试业务层时,我们应该使用Mocking还是In-Memory数据库?
  8. 在测试MVC Controller时,我们应该使用Mocking还是In-Memory数据库?

请帮我找到这些问题的答案.可能是这样,有些问题是相似的,但是,我不想删除它们以便更好地理解你们.谢谢.

tdd unit-testing moq in-memory-database asp.net-core-mvc

2
推荐指数
1
解决办法
739
查看次数