起亚奥拉,
我有一个程序经常需要在包含约 50k 个节点的图上找到最快的路径(节点序列和总成本/长度)。每次运行,我需要数百万个最短路径请求。我刚刚完成了一个 OrientDB 实现,与我最初的非 graphDB 尝试(简单地崩溃)相比,它显着改善了计算时间。为了执行测试,我在一系列分布式机器上本地运行服务器。
但是,理论上,Neo4J 或其他类似平台会再次变得更快吗?我可以期望获得什么收益?例如,我可以在线主持这个过程吗?
恩加米希。
起亚奥拉,
我有一个程序经常需要在包含约 50k 个节点的图上找到最快的路径(节点序列和总成本/长度)。每次运行,我需要数百万个最短路径请求。我刚刚完成了一个 OrientDB 实现,与我最初的非 graphDB 尝试(简单地崩溃)相比,它显着改善了计算时间。为了执行测试,我在一系列分布式机器上本地运行服务器。
但是,理论上,Neo4J 或其他类似平台会再次变得更快吗?我可以期望获得什么收益?例如,我可以在线主持这个过程吗?
恩加米希。
我正在寻找可能的方法来为分布式表建模并为该表提供本地异常。考虑这样一种情况,总部发布分发给分支机构的产品/价格列表,并且他们将该价格列表加载到其本地数据库中。现在有时这些分支机构想要将总部价格更改为当地价格。显然,我们可以简单地更新本地数据库中的价格,但是当应用下一次总部更新时它会丢失。我们也只想阻止单个列,而不是更改行中的其他字段。
例如。总公司送
| Name | Price |
|------|-------|
| ABC | $5 |
| DEF | $8 |
在一个数据库中(比如说 100 个),我们希望 ABC 的价格为 3 美元。即使收到总部的未来更新,这 3 美元也应继续适用。总部不知道这个本地异常。
过去我们通过两种方式做到这一点。第一个是维护第二个 LocalProducts 表,其中包含要应用的更改 - 然后当应用总部版本时,将从 LocalProducts 读取任何本地更改并替换分发的值。这工作正常,但随着表大小的增加而受到影响。
我们尝试的第二种方法是复制列并使用合并,例如,而不是select price where name='abc'
我们将使用select coalesce(localprice,price) where name='abc'
这工作正常,但有开销,我们必须更改每个 SQL 并记住在未来的开发中也这样做。
还有其他更好的方法吗?我正在寻找与数据库无关的解决方案,目标数据库是 ODBC(90% sql/server)、SQL-Lite 或 MS-Access。如果有帮助,可以忽略访问,它正在被积极淘汰。引擎特定的解决方案是可以的,我们可以检测引擎并使用不同的技术,但不希望每个引擎都有不同的技术。
其他注意事项
(请随时重新标记这个问题 - 不完全确定哪些标签是相关的。是的,多年来我已经花了很多时间调查这个问题)
TimescaleDB 的最佳设置策略是什么?
基于 TimescaleDB 常见问题解答,我最初的想法是确实建议并且可以基本上拥有一个包含时间序列数据和我的其他常规数据的数据库。
我只是想知道使用多节点时的策略是什么。我们可以创建一个分布式超表,但是我的其余非时间序列数据呢?我可以分发它们吗?
将 TimescaleDB 数据保留在其自己的节点“集群”中并为非时间序列数据拥有单独的实例(甚至可能使用其他扩展,如 Citus)是否有意义?
伙计们,我目前正在通过“设计数据密集型应用程序”一书了解分布式数据系统。
我想我对单个副本系统中的版本号如何允许服务器检测并发写入有非常深刻的理解*
。作者从这个例子开始,因为一旦你了解了单副本系统,将这种理解扩展到多领导者或无领导者复制系统应该是显而易见的,但对我来说根本不明显。
多个副本可以处理写入请求的系统中的版本号如何工作?换句话说,什么是版本向量?
*
在单副本系统中,每次写入都伴随着一个版本号。此版本号是写入所基于的数据的版本。如果写入基于该键的数据的版本 1,并且版本 2 已经存在,我们知道传入的写入与版本 2 并发。传入的写入只能覆盖版本 1 中的数据,因为它不了解版本 2 中的数据。例如,版本 1 是 [eggs],版本 2 是 [eggs] 和 [milk]。传入的写入想要将此键更新为 [eggs, bacon]。此密钥的第 3 版将变为 [eggs, bacon] 和 [milk]。传入的写入不能覆盖 [milk],因为它甚至不知道 [milk] 是键中的一个值。
我有关于分布式系统的课程的期末项目,所以这里是:
一家公司需要 3 台数据库服务器(例如:数据库 a、b、c)一起工作。因此,如果有人将数据插入数据库 a ,则另一个数据库( b 和 c )也将拥有该数据。但是当网络断开时,数据库服务器将像独立服务器一样工作。但是当网络再次连接时,在网络断开期间插入的所有数据都会分发到其他数据库。示例:数据库a与其他数据库断开连接,有人向数据库a插入数据。并且在数据库连接到其他数据库之后,其他数据库将再次拥有该数据。
我尝试使用 galera,但是当网络断开时它会无法插入数据。
我们有一个 SSIS 作业,它将数据从位于其他服务器 B 中的表中的数据插入到服务器 A 中的表中。
为此,我们正在使用 dblinks 连接到其他数据库。但是,这会导致很多性能问题并且作业失败,因为执行查询需要大量时间。
所以,我想知道,Dblinks 的替代品是什么。我得到的一件事是,使用Materialistic views
.
但是我不确定,它是如何工作的?请建议..
据我了解,ACID 中的一致性是为了确保数据的完整性。
但是,CAP 中的一致性意味着数据可以在分布式系统中快速出现。
这是否意味着:它们不是同一个概念?
http://en.wikipedia.org/wiki/CAP_theorem
http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
我认为这不是很简单,为什么只有两个
可以适用于任何给定的分布式数据库系统。这个猜想被证明了,但有没有更简单的方法来解释为什么这可能成立?
我不是在寻找证明,只是一种理解为什么这个定理可能有意义的好方法。原因是什么?