use of com.questdb.store.factory.configuration.JournalStructure in project questdb by bluestreak01.
the class AppendRawUnordered method main.
public static void main(String[] args) throws JournalException, ParserException {
if (args.length < 1) {
System.out.println("Usage: AppendRawUnordered <path>");
System.exit(1);
}
final String location = args[0];
// factory can be reused in application and must be explicitly closed when no longer needed.
try (Factory factory = new Factory(location, 1000, 1, 0)) {
// to populate it.
try (JournalWriter writer = factory.writer(new JournalStructure("customers").$int("id").$str("name").$ts("updateDate").$())) {
Rnd rnd = new Rnd();
int updateDateIndex = writer.getMetadata().getColumnIndex("updateDate");
long timestamp = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
// timestamp order is enforced by passing value to entryWriter() call
// in this example we don't pass timestamp and ordering is not enforced
JournalEntryWriter ew = writer.entryWriter();
// columns accessed by index
ew.putInt(0, rnd.nextPositiveInt());
ew.putStr(1, rnd.nextChars(25));
// you can use column index we looked up earlier
ew.putDate(updateDateIndex, timestamp);
// increment timestamp by 30 seconds
timestamp += 30000;
// append record to journal
ew.append();
}
// commit all records at once
// there is no limit on how many records can be in the same transaction
writer.commit();
}
}
}
use of com.questdb.store.factory.configuration.JournalStructure in project questdb by bluestreak01.
the class Generator method createCustomers.
public static void createCustomers(WriterFactory factory) throws JournalException {
// to populate it.
try (JournalWriter writer = factory.writer(new JournalStructure("customers").$int("id").$str("name").$ts("updateDate").$())) {
Rnd rnd = new Rnd();
int updateDateIndex = writer.getMetadata().getColumnIndex("updateDate");
long timestamp = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
// timestamp order is enforced by passing value to entryWriter() call
// in this example we don't pass timestamp and ordering is not enforced
JournalEntryWriter ew = writer.entryWriter();
// columns accessed by index
ew.putInt(0, rnd.nextPositiveInt());
ew.putStr(1, rnd.nextChars(25));
// you can use column index we looked up earlier
ew.putDate(updateDateIndex, timestamp);
// increment timestamp by 30 seconds
timestamp += 30000;
// append record to journal
ew.append();
}
// commit all records at once
// there is no limit on how many records can be in the same transaction
writer.commit();
}
}
use of com.questdb.store.factory.configuration.JournalStructure in project questdb by bluestreak01.
the class PlainTextStoringParser method createStructure.
private JournalStructure createStructure() {
ObjList<ColumnMetadata> m = new ObjList<>(metadata.size());
for (int i = 0, n = metadata.size(); i < n; i++) {
ColumnMetadata cm = new ColumnMetadata();
ImportedColumnMetadata im = metadata.getQuick(i);
cm.name = im.name.toString();
cm.type = im.importedColumnType;
switch(cm.type) {
case ColumnType.STRING:
cm.size = cm.avgSize + 4;
break;
default:
cm.size = ColumnType.sizeOf(cm.type);
break;
}
m.add(cm);
}
return new JournalStructure(name, m);
}
use of com.questdb.store.factory.configuration.JournalStructure in project questdb by bluestreak01.
the class QueryCompiler method createStructure.
private JournalStructure createStructure(String location, RecordMetadata rm, CharSequenceObjHashMap<ColumnCastModel> castModels) throws ParserException {
int n = rm.getColumnCount();
ObjList<ColumnMetadata> m = new ObjList<>(n);
for (int i = 0; i < n; i++) {
ColumnMetadata cm = new ColumnMetadata();
RecordColumnMetadata im = rm.getColumnQuick(i);
cm.name = im.getName();
int srcType = im.getType();
ColumnCastModel castModel = castModels.get(cm.name);
if (castModel != null) {
validateTypeCastCompatibility(srcType, castModel);
cm.type = castModel.getColumnType();
if (cm.type == ColumnType.SYMBOL) {
cm.distinctCountHint = Numbers.ceilPow2(castModel.getCount()) - 1;
}
} else {
cm.type = srcType;
}
switch(cm.type) {
case ColumnType.STRING:
cm.size = cm.avgSize + 4;
break;
default:
cm.size = ColumnType.sizeOf(cm.type);
break;
}
m.add(cm);
}
return new JournalStructure(location, m).$ts(rm.getTimestampIndex());
}
Aggregations