Сохранение всех таблиц, переменных и функций экземпляра KDB+ с последующей перезагрузкой
Есть ли простой способ сохранить все таблицы, переменные и функции, а затем загрузить их в другой экземпляр kdb+? Например, предположим, что мой компьютер настроен на перезагрузку еженедельно, но я хочу перезагрузить все, что было в моем сеансе kdb+ до перезагрузки.
Благодарю.
2 ответа
Если вы хотите что-то из коробки для поддержания состояния переменной (таблицы /dicts/lists/atom), посмотрите на http://code.kx.com/q/cookbook/logging/
/cmdline startup
q db_main -l -p 8090
/To store state before the restart, modify .z.exit to flush to the qdb file
.z.exit:{value"\\l"}
Однако это не будет охватывать функции, но в идеале они не должны меняться в любом случае.
Если вам действительно нужно сохранить их, вы можете посмотреть, как сохранить все пространства имен на диске.
.z.exit:{`:/tmp/ns set get each {x!x}`$".",/:string key`}
/on startup
{{y set x[y]}[x;]each key x} `.q`.Q _ get `:/tmp/ns
С Уважением,
Коннор
Сохраните состояние в файл, используя set/get. Это ограничено небольшими рабочими пространствами.
>q
KDB+ 3.4 2016.06.14 Copyright (C) 1993-2016 Kx Systems
q)a:1
q)t:([] b:til 100)
q)s:select from t where b<5
q)`:session.bin set get `.
`:session.bin
q)\\
>q
KDB+ 3.4 2016.06.14 Copyright (C) 1993-2016 Kx Systems
q)`. set get `:session.bin
`.
q)a
1
q)s
b
-
0
1
2
3
4
Ведение журнала и снимки является альтернативой: http://www.timestored.com/kdb-guides/kdb-command-line-options