|
3 | 3 | */ |
4 | 4 | package com.scalableminds.fossildb.db |
5 | 5 |
|
| 6 | +import java.io.File |
6 | 7 | import java.nio.file.{Files, Path, Paths} |
7 | 8 | import java.util |
8 | 9 |
|
@@ -109,19 +110,24 @@ class RocksDBManager(dataDir: Path, columnFamilies: List[String], optionsFilePat |
109 | 110 | val writer = new SstFileWriter(new EnvOptions(), options) |
110 | 111 | val store = getStoreForColumnFamily("skeletons") |
111 | 112 | val it = store.get.scan("", None) |
112 | | - it.take(100000).zipWithIndex.foreach { case (seq, idx) => |
113 | | - writer.open(s"data/test${idx}.sst") |
114 | | - val el = seq |
| 113 | + var idx = 0 |
| 114 | + writer.open(s"data/test${idx}.sst") |
| 115 | + it.take(100000).foreach { el => |
| 116 | + if (new File(s"data/test${idx}.sst").length() > options.targetFileSizeBase()) { |
| 117 | + writer.finish() |
| 118 | + idx += 1 |
| 119 | + writer.open(s"data/test${idx}.sst") |
| 120 | + } |
115 | 121 | writer.put(el.key.getBytes, el.value) |
116 | | - writer.finish() |
117 | 122 | } |
| 123 | + writer.finish() |
118 | 124 | } |
119 | 125 |
|
120 | 126 | def writeToNewDB() = { |
121 | 127 | val manager = new RocksDBManager(Paths.get("data_new"), columnFamilies, Some("config/options.ini")) |
122 | 128 | val skeletonHandle = manager.columnFamilyHandles("skeletons") |
123 | 129 | val it = getStoreForColumnFamily("skeletons").get.scan("", None).take(100000) |
124 | | - it.foreach {el => manager.db.put(skeletonHandle, el.key.getBytes, el.value)} |
| 130 | + it.foreach { el => manager.db.put(skeletonHandle, el.key.getBytes, el.value) } |
125 | 131 | } |
126 | 132 |
|
127 | 133 | def loadOptions(optionFilepath: String) = { |
|
0 commit comments