3 ms·
q)datacenter: ([] name: `newyork`london`tokyo; webservers: 7 4 2); q)plan::update backends: webservers * 10 from datacenter q)webservers::select name, c
by geocar 10y ago
q)datacenter: ([] name: `newyork`london`tokyo; webservers: 7 4 2);
q)plan::update backends: webservers * 10 from datacenter
q)webservers::select name, cmdline:`:/usr/bin/webserver, instances:webservers from plan
q)backends::select name, cmdline:`:/usr/bin/backend, instances:backends from plan
q)1@.j.j backends;
[{"name":"newyork","cmdline":":/usr/bin/backend","instances":70},
{"name":"london","cmdline":":/usr/bin/backend","instances":40},
{"name":"tokyo","cmdline":":/usr/bin/backend","instances":20}]
kdb views track dependencies, so we can get Seattle represented with minimum effort:
q)`datacenter insert (`seattle; 6);
q)1@.j.j backends;
[{"name":"newyork","cmdline":":/usr/bin/backend","instances":70},
{"name":"london","cmdline":":/usr/bin/backend","instances":40},
{"name":"tokyo","cmdline":":/usr/bin/backend","instances":20},
{"name":"seattle","cmdline":":/usr/bin/backend","instances":60}]
What was "B" supposed to be twice of "A"?
q)A:([] x:10?10);
q)B::update x:x*2 from A
q)A`x
8 1 9 5 4 6 6 1 8 5
q)B`x
16 2 18 10 8 12 12 2 16 10
q)update x:10?10 from `A;
q)A`x
4 9 2 7 0 1 9 2 1 8
q)B`x
8 18 4 14 0 2 18 4 2 16
And the syntax is much nicer than JavaScript.