2017-08-02 51 views
1

我将使用Xodus用于存储时间序列数据(100-500万行每天插入。)Xodus禁止交易

我看到Xodus被创建和删除大量的.xd文件中背景。我阅读了关于日志结构化设计的知识,但我不清楚文件是否在每个事务提交时创建。每个文件都代表整个数据库的快照吗?有没有办法禁用交易(我不需要它)?

我可以通过在不同商店之间分割数据来获得任何性能优势吗?我可以将每个指标存储在单独的商店中,而不是使用一个具有多键的商店。现在我正在为每一天创建单独的商店

回答

1

.xd文件实际上并不代表某些交易。这些文件是有序的,所以它们可以被认为是无限的记录日志。每笔交易都会写入更改和一些元信息,以便可以检索/搜索保存的数据。任何.xd文件都有其最大尺寸,并且在达到时会创建新文件。

无法禁用事务处理。

基本上,在不同商店之间分割数据会带来更好的性能,至少商店越小,GC在后台运行的速度越快,越平滑。您分割数据的方式定义了您可以检索数据的方式。如果不同分片中的数据完全分离,那么在不同环境中存储分片甚至更好,而不是存储单个环境。这也将物理隔离不同碎片中的数据,不仅在逻辑上。

+0

你能不能提供关于数据库设计的更多细节(可能你有一个描述链接)整个数据库是否跨多个xd文件传播?是否创建了多个.xd文件来处理事务(MVCC)? – user12384512

+0

对于数据库设计,我们没有比Xodus wiki页面上更详细的描述:https://github.com/JetBrains/xodus/wiki。是的,整个数据库都分布在多个xd文件中。任何时候,在所有的xd文件中只有一个(最新的)是可写的,所以MVCC处理时没有不同的可写文件。 –

+0

整个数据库可以被认为是一棵树。该树是一个部分持久的数据结构(https://en.wikipedia.org/wiki/Persistent_data_structure)。它允许以相当便宜的方式拥有不同的数据库版本(快照)。 –