尝试学习一些关于PDO的知识并正在学习本教程.它有以下代码片段:
<?php
try
{
$db = new PDO('sqlite::memory');
echo "SQLite created in memory.";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到以下异常消息:
SQLSTATE [HY000] [14]无法打开数据库文件
那是什么意思?我怎样才能让它发挥作用?我能够连接到MySQL数据库和常规SQLite数据库文件.所以我知道至少有些东西在起作用......
我在Windows 7 64位上使用Apache 2.2.11和PHP 5.3.0(最新的WampServer安装).phpinfo()报告我启用了SQLite Library 3.6.15的pdo_sqlite.
我读到一些数据库可以在内存中使用,但无法想到有人想要使用此功能的原因.我总是使用数据库来保存数据和内存缓存以便快速访问.
我在Python上对大型数据库进行一些查询,以从数据库中获取一些统计信息.我希望这些统计数据在内存中,以便其他程序可以使用它们而无需访问数据库.
我正在考虑如何构造它们,并且在尝试设置一些复杂的嵌套字典之后,我意识到一个好的表示形式将是一个SQL表.但是,我不想将数据存储回持久数据库.是否有支持使用SQL语法查询数据的SQL数据库的内存实现?
有没有人知道一个适用于.NET 4/EF 4的良好内存数据库?具体来说,我正在考虑单元测试,这样每个设置都可以轻松创建数据库,并使用默认值填充它,每次拆卸都可以快速破坏它.
我听说SQLite 还不支持.NET 4,其他人在使用它作为SQLServer的替代品时遇到了麻烦(这是应用程序将在发布模式下运行的).
在过去,我使用了DevExpress XPO ORM,它有一个内置的内存数据库,可以很好地进行单元测试.
我在ubuntu上启动了redis服务器,方法是在终端上输入:$ redis-server
这导致以下> http://paste.ubuntu.com/12688632/
aruns ~ $ redis-server
27851:C 05 Oct 15:16:17.955 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
27851:M 05 Oct 15:16:17.957 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
27851:M 05 Oct 15:16:17.957 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
27851:M 05 Oct 15:16:17.958 # Current maximum open files is 4096. …Run Code Online (Sandbox Code Playgroud) 我正在使用EF Core内存数据库,我正在尝试对使用事务的方法运行单元测试:
using (var transaction = await _context.Database.BeginTransactionAsync())
{
_context.Update(item);
result = await _context.SaveChangesAsync();
// some other stuff
transaction.Commit();
}
Run Code Online (Sandbox Code Playgroud)
但是,我从测试运行器中收到此错误:
System.InvalidOperationException:警告为"InMemoryEventId.TransactionIgnoredWarning"的错误异常:内存存储不支持事务.请参阅 http://go.microsoft.com/fwlink/?LinkId=800142要禁止此异常,请使用DbContextOptionsBuilder.ConfigureWarnings API.重写DbContext.OnConfiguring方法或在应用程序服务提供程序上使用AddDbContext时,可以使用ConfigureWarnings.
如何抑制该错误?
在Apache Kafka 0.9和0.10的新功能调查期间,我们使用了KStreams和KTables.有一个有趣的事实是,Kafka在内部使用RocksDB.请参阅Kafka Streams简介:流处理变得简单.RocksDB不是用JVN兼容语言编写的,因此需要仔细处理部署,因为它需要额外的共享库(取决于操作系统).
这里有一些简单的问题:
我试图搜索答案,但我只看到隐含的原因,RocksDB在每秒大约数百万次操作范围内的操作非常快.
另一方面,我看到一些用Java编码的数据库,也许端到端他们可以做到这一点,而且他们不会通过JNI.
java-native-interface in-memory-database key-value-store rocksdb apache-kafka-streams
如果我使用内存数据库而不是PostgreSQL,我的集成测试会运行得更快.我使用JPA(Hibernate),我需要一个内存数据库,它很容易切换到使用JPA,易于设置和可靠.它需要支持JPA和Hibernate(或者如果你愿意的话,反之亦然),因为我不想采用我的数据访问代码进行测试.
根据上述要求,哪个数据库是最佳选择?
我可以看到像Klarna和Whatsapp这样的两家大公司正在使用Mnesia作为他们的内存数据库(不确定他们如何将数据保持在Mnesia的2GB限制).我的问题是:为什么公司喜欢这些,可能更多我不知道,使用Mnesia而不是Riak或couchDB,两者都是Erlang,两个数据库都支持更快的内存数据库,更好的无痛持久性和更多功能.我在这里想念一下吗?
我有一个不断访问的SQL表,但很少变化.
表由UserID分区,每个用户在表中有许多记录.
我想保存数据库资源并将此表移近某种内存缓存中的应用程序.
在进程中,缓存过于占用内存,因此需要在应用程序外部进行缓存.
像Redis这样的Key Value商店由于与Redis之间序列化和反序列化表的开销而被证明是低效的.
我正在寻找可以将这个表(或数据分区)存储在内存中的东西,但是让我只查询我需要的信息,而不需要为每次读取序列化和反序列化大块数据.
是否有任何东西可以在内存数据库表中提供Out of Process,它支持高速缓存的查询?
搜索显示Apache Ignite可能是一个可能的选择,但我正在寻找更明智的建议.