mirror of
https://github.com/vacp2p/linea-besu.git
synced 2026-01-08 20:47:59 -05:00
Blobdb for static data (#5475)
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
This commit is contained in:
@@ -153,16 +153,7 @@ public abstract class RocksDBColumnarKeyValueStorage
|
||||
.noneMatch(existed -> Arrays.equals(existed, ignorableSegment.getId())))
|
||||
.forEach(trimmedSegments::remove);
|
||||
columnDescriptors =
|
||||
trimmedSegments.stream()
|
||||
.map(
|
||||
segment ->
|
||||
new ColumnFamilyDescriptor(
|
||||
segment.getId(),
|
||||
new ColumnFamilyOptions()
|
||||
.setTtl(0)
|
||||
.setCompressionType(CompressionType.LZ4_COMPRESSION)
|
||||
.setTableFormatConfig(createBlockBasedTableConfig(configuration))))
|
||||
.collect(Collectors.toList());
|
||||
trimmedSegments.stream().map(this::createColumnDescriptor).collect(Collectors.toList());
|
||||
columnDescriptors.add(
|
||||
new ColumnFamilyDescriptor(
|
||||
DEFAULT_COLUMN.getBytes(StandardCharsets.UTF_8),
|
||||
@@ -180,6 +171,24 @@ public abstract class RocksDBColumnarKeyValueStorage
|
||||
}
|
||||
}
|
||||
|
||||
private ColumnFamilyDescriptor createColumnDescriptor(final SegmentIdentifier segment) {
|
||||
final var options =
|
||||
new ColumnFamilyOptions()
|
||||
.setTtl(0)
|
||||
.setCompressionType(CompressionType.LZ4_COMPRESSION)
|
||||
.setTableFormatConfig(createBlockBasedTableConfig(configuration));
|
||||
|
||||
if (segment.containsStaticData()) {
|
||||
options
|
||||
.setEnableBlobFiles(true)
|
||||
.setEnableBlobGarbageCollection(false)
|
||||
.setMinBlobSize(100)
|
||||
.setBlobCompressionType(CompressionType.LZ4_COMPRESSION);
|
||||
}
|
||||
|
||||
return new ColumnFamilyDescriptor(segment.getId(), options);
|
||||
}
|
||||
|
||||
private void setGlobalOptions(final RocksDBConfiguration configuration, final Statistics stats) {
|
||||
options = new DBOptions();
|
||||
options
|
||||
|
||||
@@ -261,14 +261,22 @@ public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValu
|
||||
public enum TestSegment implements SegmentIdentifier {
|
||||
FOO(new byte[] {1}),
|
||||
BAR(new byte[] {2}),
|
||||
EXPERIMENTAL(new byte[] {3});
|
||||
EXPERIMENTAL(new byte[] {3}),
|
||||
|
||||
STATIC_DATA(new byte[] {4}, true);
|
||||
|
||||
private final byte[] id;
|
||||
private final String nameAsUtf8;
|
||||
private final boolean containsStaticData;
|
||||
|
||||
TestSegment(final byte[] id) {
|
||||
this(id, false);
|
||||
}
|
||||
|
||||
TestSegment(final byte[] id, final boolean containsStaticData) {
|
||||
this.id = id;
|
||||
this.nameAsUtf8 = new String(id, StandardCharsets.UTF_8);
|
||||
this.containsStaticData = containsStaticData;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -280,6 +288,11 @@ public abstract class RocksDBColumnarKeyValueStorageTest extends AbstractKeyValu
|
||||
public byte[] getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsStaticData() {
|
||||
return containsStaticData;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract SegmentedKeyValueStorage<RocksDbSegmentIdentifier> createSegmentedStore()
|
||||
|
||||
Reference in New Issue
Block a user