我目前正在尝试选择数据库供应商.
我只是在寻找其他数据库开发人员的个人意见.
我的问题特别针对那些:
1)使用了支持复制到磁盘(混合)的主内存数据库(MMDB)(即ExtremeDB)
要么
2)使用了Versant对象数据库和/或客观数据库和/或Progress ObjectStore
问题是:如果你可以根据你的经验推荐一个适合我的应用程序的数据库供应商.
我的应用程序是一个商业实时(读取:高性能)面向对象的C++ GIS类应用程序,我们需要进行大量的lat/lon搜索(即给定一个区域,找到该区域内的所有匹配目标. ..R-Tree索引).
我想要存储到数据库中的数据类型都被建模为对象,它们使用std :: list和std :: vector,所以自然,Object Database似乎有意义.我已经阅读了足够多的文章来说服自己,传统的RDBMS可能不是我真正想要的
但是,就性能而言,
输入数据以大约40 MB/s的速度馈入系统.
因此,系统也将以每秒大约350次插入的速率插入数据库(每个对象从64KB到128KB),
根据我的理解,我在这里列出的所有对象数据库都使用缓存来存储数据库对象.ExtremeDB声称,因为它专为内存而设计,它可以避免缓存逻辑等的开销.通过googling查看更多内容:主内存与RAM-Disk数据库:基于Linux的基准测试
所以..我只是有点困惑.可以在实时系统中使用对象DB吗?它是否像MMDB一样"快"?
我正在寻找一些STL,boost或类似的容器,使用相同的方式在数据库中使用索引来搜索记录,使用如下查询:
select * from table1 where field1 starting with 'X';
Run Code Online (Sandbox Code Playgroud)
要么
select * from table1 where field1 like 'X%';
Run Code Online (Sandbox Code Playgroud)
我想过使用std :: map,但我不能,因为我需要搜索"以某些文本开头"的字段,而不是那些"等于"的字段.除此之外,我需要它在多个字段上工作(例如,每个"记录"有6个字段),所以我需要为每个字段分别使用一个std :: map.
我可以创建一个排序的矢量或列表并使用二进制搜索(通过读取中间的元素并查看它是否多于或小于'X',在每个步骤中打破2中的集合),但我想知道是否有一些准备好的 - 制造的容器,我可以使用而无需重新发明轮子?
我在内存数据库中使用HSQL用于我的应用程序的测试目的并使用SQL Server作为主数据库,现在在进行测试时,HSQL数据库正在填充我在SQL Server中的相同数据,现在我正在尝试测试特定的从数据库检索数据的服务(如果直接运行服务,它将查询MS服务器,如果从测试调用,它将查询HSQL数据库)
我在运行查询时能够看到来自MS Server的数据,但如果在其上运行相同的查询,则HSQL Db不会返回任何数据.我的预感是HSQL DB没有填充数据,有没有办法可以查看我在HSQL DB中的表格以及如何在HSQLDB中填充数据,我希望看到数据和我没有任何gui客户端可以查看如何填充HSQL数据库以及哪些数据在哪个表中.我们是否拥有相同的良好客户端,如何使用它连接到HSQL数据库?我如何才能真正看到HSQL Cover下发生的事情,而不仅仅是假设HSQL正在使用SQL Server中的内容正确填充?
任何建议都会有很长的路要走?
使用ns命令我在控制台中创建了许多命名空间.我现在有问题.我创建了超过5个名称空间,我已经忘记了它们!我想看看我创建的命名空间的数量及其各自的名称.
是否有任何命令可以找出Hazelcast中创建的命名空间的数量?请帮忙.!
我一直在研究内存数据库的概念。关于那条的文章说,
内存数据库系统是一种将数据完全存储在主内存中的数据库管理系统。
他们讨论了此概念的优缺点。
我的问题是,如果这些数据库管理系统完全将数据存储在主存储器中,
停电后所有数据都消失了吗???
或有什么方法可以保护数据???
我想知道我的理解是否正确:
embedded:数据库,如果我的应用程序启动,则会启动;如果应用程序关闭,则会关闭. 我不是指嵌入式空间中使用的数据库.
内存:数据库可以在任何服务器上; 无论我的应用程序在哪里运行.就是这样,这些使用主存.
我遇到了异常
Microsoft.EntityFrameworkCore.Database.Transaction.AmbientTransactionWarning:已检测到环境事务
但我不知道如何解决这个异常。当我调用SaveChanges()inside时,我的代码失败了TransactionScope。可能是因为TransactionScope本身是内部SQLite context交易,但是如何处理这个问题呢?
我想测试的方法
它使用 TransactionScope,因为我想确定,Request当我与他一起操作时,加载的对象(类)不会改变。
public void Handle(Create cmd)
{
// Wrap via transaction
using (var transaction = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.RepeatableRead }))
{
// Load request object from repository.
Request request = _repository.Find(cmd.RequestId);
// Create detail object
var detail = new Detail(requestId: cmd.RequestId);
// Add created detail object into Request object
request.CreateDetail(detail);
// Save request into repository.
_repository.SaveChanges(); // <--- HERE IS THE …Run Code Online (Sandbox Code Playgroud) 我想用我的成绩来缓存redis在Laravel做这个
$result = Cache::remember('orders_cache', 10, function () use ($orders) {
return $orders;
});
return $result;
Run Code Online (Sandbox Code Playgroud)
当我进入我的 Redis-Cli 并执行 时KEYS *,我在orders_cache那里看不到密钥。我已经设置了cache_driver给redis我.env,我也跑了命令php artisan config:cache。我还使用 composer 安装了 predis 包。
我的开发环境是:
对此的任何帮助将不胜感激。TIA
我们正在寻找一个可以支持索引的内存数据库中的开源.
用例是我们有很多项目会在很大程度上增长.每个项目都有一些我们需要查询的字段.目前,我们将数据存储在应用程序的内存中.但是随着数据的增加,我们必须考虑分发/分片数据库.
我们已经看了几个选项
可以使用 Redis集群,但它没有索引或SQL查询等概念.
Apache Ignite既可以在内存中,也可以分发,也可以提供SQL查询.但是,问题是ignite会将所有查询激活到所有主节点,因此最终结果将比这些查询中最慢的结果慢.这似乎是一个问题,因为许多节点中的非执行/慢节点可能会真正减慢应用程序的速度.进一步点燃,从主服务器完成读取并且不使用从服务器,因此难以扩展查询.增加节点将产生负面影响,因为查询的数量将增加,甚至会更慢.
我们对其他解决方案持开放态度,但想知道多查询是否会成为一个问题(如hazelcast).
对于我们的用例,理想的解决方案是内存数据库,其索引可以通过增加从站的数量来读取.使其分布/分片将导致多个查询,我们不情愿,因为一个错误的节点可能会降低整个系统的速度.