我刚刚发现" 有没有人发布过不同的内存RDBMS之间的详细比较?" 这与我的问题有关.
它包括很多东西.
然而,它的价格超出了大多数人的需求(41,500.00美元/处理器).
那么有什么替代品,有什么优点和缺点.
(如果它改变了你的答案,我正在使用.NET)
我希望能够利用GIT(及其工作流程)的优势,但没有磁盘访问的成本 - 我只想利用GIT的分布式版本控制功能来生成像memcached和GIT.(最好是在.NET中)
那里有野兽吗?
是否有任何可以在嵌入模式下运行的Java数据库,其中一些表存储在内存中,同时从磁盘加载其他表?H2和JavaDB似乎是Java DB的两个领导者,我知道它们都有内存模式,但它们是否会让你将整个数据库加载到内存中,还是可以逐个表决?
出于测试目的,我想使用SQL脚本和CSV文件创建和填充一些表.
所以我创建了一个像这样的SQL脚本:
CREATE TABLE T_FOO (
...
) as select * from CSVREAD('classpath:/foo.csv');
Run Code Online (Sandbox Code Playgroud)
该foo.csv文件存在,位于src/test/resources.
当这个脚本在Eclipse上运行时(其中src/test/resources定义为源目录,因此包含在类路径中),我收到以下错误:
Caused by: java.io.FileNotFoundException: resource /foo.csv
at org.h2.store.fs.FileSystemDisk.openFileInputStream(FileSystemDisk.java:388)
at org.h2.util.IOUtils.openFileInputStream(IOUtils.java:708)
at org.h2.tools.Csv.initRead(Csv.java:317)
at org.h2.tools.Csv.readResultSet(Csv.java:217)
at org.h2.tools.Csv.read(Csv.java:193)
... 49 more
Run Code Online (Sandbox Code Playgroud)
我做错了什么?如何正确使用classpath:协议加载CSV文件?
如果我把文件的完整路径(如... CSVREAD('C:\my-project\src\test\resources\foo.csv');),那么它的工作原理.但这不是我想做的原因:)
请注意,我使用最新版本的H2(1.3.153),因为我想使用该classpath:协议加载我的文件.
我想知道是否有一个可以处理MDX 的内存 OLAP服务器.
我找到了维基百科的文章.但它没有说明内存功能......
我所知道的唯一一个是Mondrian,它也是上面wiki文章中提到的两个开源解决方案之一.
到目前为止,我刚刚和蒙德里安合作了......我不认为Mondrian是一个真正的内存OLAP服务器.
原因如下:
它有一个内存缓存,其中包含查询结果.但是他们的第一次执行需要很长时间,必须从RDBMS加载.(http://mondrian.pentaho.com/documentation/faq.php#Scalability)
我认为最好的方法是:
在Cache中加载所有的事实和维度表,然后对这个内存中的数据执行每个查询.
AFAIK,甲骨文将在今年发布12c企业版,有可能在内存中拥有一些(或所有)表.这将加速OLAP服务器,它只使用SQL查询RDBMS-fact-tables.
...但企业版非常昂贵......
我想听听其他一些意见.
最好的问候,
丹尼斯.
我们有一个系统通过调用另一个返回一组Java对象的系统上的接口来执行"粗略搜索".一旦我们收到搜索结果,我需要能够根据描述属性状态的某些标准进一步过滤生成的Java对象(例如,从初始对象返回所有对象,其中xy> z && ab == c).
每次用于过滤对象集的标准部分是用户可配置的,我的意思是用户将能够选择要匹配的值和范围,但是他们可以从中选择的属性将是固定集.
对于每次搜索,数据集可能包含<= 10,000个对象.搜索将由应用程序用户群手动执行,每天不超过2000次(大约).值得一提的是,结果集中的所有对象都是已知的域对象类,它们具有描述其结构和关系的Hibernate和JPA注释.
在我的头脑中,我可以想到3种方法:
选项1似乎涉及很多网络中的物理数据库(Oracle 10g),可能会导致大量的网络和磁盘活动.还需要将每次搜索的结果与其他结果集隔离,以确保不同的搜索不会相互干扰.
选项2原则上似乎是一个好主意,因为它允许我在内存中进行更精细的查询,并且不需要结果数据的持久性,只有在搜索完成后才会丢弃.Gut的感觉是,这可能也非常高效,但可能会导致更大的内存开销(这很好,因为我们可以非常灵活地调整JVM获得的内存量).
选项3可能非常高效,但是我想避免这样做,因为我们编写的任何代码都需要经过仔细的测试,以至于实现灵活且足够强大的时间可能会令人望而却步.
我没有时间对所有3个想法进行原型设计,因此我正在寻找人们对上述3个选项的评论,以及我未考虑过的任何进一步的想法,以帮助我确定哪个想法可能是最合适的.我目前正倾向于选项2(在内存数据库中),所以很想听到有人在内存中查询POJO的经验.
希望我已经详细描述了这种情况,但是不要犹豫,询问是否需要任何进一步的信息来更好地理解这种情况.
干杯,
埃德
System.InvalidOperationException:
只有在上下文使用关系数据库提供程序时才能使用特定于关系的方法。
在InMemoryDatabase用于测试用例时出现上述错误?
var msaContextOptions = new DbContextOptionsBuilder<MSA.DAL.MsaDbContext>()
.UseInMemoryDatabase(databaseName: "Get results")
.ConfigureWarnings(w => w.Ignore(InMemoryEventId.TransactionIgnoredWarning))
.Options;
Run Code Online (Sandbox Code Playgroud) 我在 s3 存储桶中有一个小的 sqlite 数据库(110kb)。每次运行python应用程序时,我都想连接到该数据库。
一个选项是每次运行python应用程序时下载数据库并像往常一样连接它。但我想知道是否存在一种通过内存连接到该 sqlite 数据库的方法,使用S3FileSystem和open。我正在使用sqlite3库和 python 3.6
我基本上有一个测试场景,我在那里
SQL Server 是否仅支持内存中的类似内容,以便我可以通过删除 #1 和 #5 来加快速度?显然我不需要坚持。
sql-server integration-testing database-testing in-memory-database