# kdb+ and q documentation > Documentation for kdb+ and the q programming language. Each linked page is the Markdown alternative to a page on the documentation site. ## Documentation - [man.q](https://code.kx.com/q/about/man.md): Help for man.q documentation script for q programmers - [Terminology](https://code.kx.com/q/about/terminology.md): In 2018-2019 the vocabulary used to describe the q language changed. Here is how and why. - [About this site](https://code.kx.com/q/about/thissite.md): Origin and content of the KX documentation site - [Overview](https://code.kx.com/q/architecture/index.md): How to construct systems from kdb+ processes - [RDB (r.q)](https://code.kx.com/q/architecture/rq.md): How to construct an RDB - [Tickerplant (tick.q)](https://code.kx.com/q/architecture/tickq.md): How to construct a tickerplant process - [Tickerplant pub/sub (u.q)](https://code.kx.com/q/architecture/uq.md): How to construct systems from kdb+ processes - [Application](https://code.kx.com/q/basics/application.md): Everything in q is a value and almost everything can be applied to some other values. Projection (or currying) is a partial application in which one or more values are bound. - [Atomic functions](https://code.kx.com/q/basics/atomic.md): Many q functions iterate recursively through list or dictionary arguments down to items of some depth - [By topic](https://code.kx.com/q/basics/by-topic.md): Q language resources by topic - [Command-line options](https://code.kx.com/q/basics/cmdline.md): Command-line syntax for invoking q and list of the command-line options - [Comparison](https://code.kx.com/q/basics/comparison.md): Operators and keywords for comparing values - [Conformability](https://code.kx.com/q/basics/conformable.md): Many q operators and keywords implicitly iterate through the items of their list arguments, provided that the arguments are conformable. This article describes what it means for data objects to conform. - [Evaluation control](https://code.kx.com/q/basics/control.md): Evaluation in q is controlled by [iterators](../ref/iterators.md) for iteration ; conditional evaluation; explicit return from a lambda; signalling and trapping errors; and control words. - [Datatypes](https://code.kx.com/q/basics/datatypes.md): Every kdb+ object has a data type. This page tabulates the datatypes. - [Debugging](https://code.kx.com/q/basics/debug.md): Facilities for debugging q programs - [Dictionaries](https://code.kx.com/q/basics/dictsandtables.md): Operators and keywords for working with dictionaries - [Enumerations](https://code.kx.com/q/basics/enumerations.md): For a long list containing few distinct values, an enumeration can reduce storage requirements. - [Errors](https://code.kx.com/q/basics/errors.md): Errors signalled by the interpreter, and what triggers them - [Exposed infrastructure](https://code.kx.com/q/basics/exposed-infrastructure.md): Q is an embedded domain-specific language for time-series analysis, implemented in the proprietary programming language k. As such, q leaves features of k exposed. They should be avoided. - [File system](https://code.kx.com/q/basics/files.md): Operators and keywords for using the file system - [Function notation](https://code.kx.com/q/basics/function-notation.md): Function notation enables the definition of functions. Function notation is also known as the lambda notation and the defined functions as lambdas. - [Functional qSQL](https://code.kx.com/q/basics/funsql.md): The functional forms of delete, exec, select and update are particularly useful for programmatically-generated queries, such as when column names are dynamically produced. - [Glossary](https://code.kx.com/q/basics/glossary.md): Glossary of terms used in documenting kdb+ and the q programming language - [Connection handles](https://code.kx.com/q/basics/handles.md): kdb+ communicates with the console, stdout, stderr, filesystem, and other processes through handles - [Implicit iteration](https://code.kx.com/q/basics/implicit-iteration.md): Most q operators and keywords iterate when applied to lists and dictionaries. Learn when not to specify iteration, and instead leave it to q. - [Internal functions](https://code.kx.com/q/basics/internal.md): The operator ! with a negative integer as left-argument calls an internal function. - [Overview](https://code.kx.com/q/basics/ipc.md): TCP/IP is used for communicating between processes. The protocol is extremely simple, as is the message format. - [Overview](https://code.kx.com/q/basics/iteration.md): The primary means of iteration in q are its keywords and operators, the map iterators Each and its variants, and the accumulating iterators Scan and Over. - [Joins](https://code.kx.com/q/basics/joins.md): A join combines data from two tables, or from a table and a dictionary. Some joins are keyed, in that columns in the first argument are matched with the key columns of the second argument. Some joins are as-of, where a time column in the first argument specifies corresponding intervals in a time column of the second argument. Such joins are not keyed. - [Listening port](https://code.kx.com/q/basics/listening-port.md): Use the -p command-line option or the \p system command to tell kdb+ to listen to a port. The command-line option and the system command take the same parameters and have the same syntax and semantics. - [Mathematics](https://code.kx.com/q/basics/math.md): Operators and keywords that perform mathematical or statistical operations - [Metadata](https://code.kx.com/q/basics/metadata.md): Operators and keywords that get or set metadata - [Namespaces](https://code.kx.com/q/basics/namespaces.md): Namespaces are containers within the kdb+ workspace. Namespaces are a convenient way to divide an application between modules. - [Parse trees](https://code.kx.com/q/basics/parsetrees.md): A parse tree represents an expression, not immediately evaluated. Its virtue is that the expression can be evaluated whenever and in whatever context it is needed. The two main functions dealing with parse trees are eval, which evaluates a parse tree, and parse, which returns one from a string containing a valid q expression. - [Pattern matching](https://code.kx.com/q/basics/pattern.md): Pattern matching in assignments and function parameters - [Parallel processing](https://code.kx.com/q/basics/peach.md): The iterator Each Parallel (or its mnemonic keyword peach) delegates processing to secondary tasks for parallel execution. This can be useful, for example, for computationally expensive functions, or for accessing several drives at once from a single CPU. - [Precision](https://code.kx.com/q/basics/precision.md): Precision of floats is a tricky issue since floats (doubles in other languages) are actually binary rational approximations to real numbers. - [qSQL queries](https://code.kx.com/q/basics/qsql.md): Q-SQL expressions have their own syntax rules, with optional dependent phrases, by, from and where, and can include definitions of new, derived columns. - [Regular Expressions](https://code.kx.com/q/basics/regex.md): Syntax of regular expressions in q - [Syntax](https://code.kx.com/q/basics/syntax.md): Syntax of the q programming language - [System commands](https://code.kx.com/q/basics/syscmds.md): System commands control the q environment. - [Variadic syntax](https://code.kx.com/q/basics/variadic.md): An applicable value is variadic if its rank is not fixed. - [Amazon Web Services](https://code.kx.com/q/cloud/autoscale/aws.md): AWS resources used to auto-scale a cloud deployment of kdb+ realtime database - [Costs and risks](https://code.kx.com/q/cloud/autoscale/cost-risk.md): To determine how much cost savings our cluster of RDBs can make we will deploy the stack and simulate a day in the market. - [About](https://code.kx.com/q/cloud/autoscale/index.md): How to auto-scale a cloud deployment of kdb+ realtime database - [Realtime data cluster](https://code.kx.com/q/cloud/autoscale/rdc.md): An Auto Scaling group is used to maintain the RAM capacity of the realtime data cluster. - [AWS Lambda](https://code.kx.com/q/cloud/aws-lambda/index.md): How to deploy kdb+ processes on AWS Lambda, an event-driven, serverless computing platform using the Serverless Application Repository and Cloud Development Kit - [Elastic Block Store (EBS)](https://code.kx.com/q/cloud/aws/app-a-ebs.md): Seven variants of the Elastic Block Service (EBS) are all qualified by kdb+. gp2, gp3, io1, io2, and io2 Block Express are SSD-based volumes that offer different price/performance points, st1 and sc1 are traditional HDD-based volumes. Unlike ephemeral SSD storage, EBS-based storage can be dynamically provisioned to any other EC2 instance via operator control. So this is a candidate for on-demand HDB storage. - [EFS (NFS)](https://code.kx.com/q/cloud/aws/app-b-efs-nfs.md): EFS is an NFS service owned and run by AWS that offers NFS service for nodes in the same availability zone, and can run across zones, or can be exposed externally. The location of where the storage is kept is owned by Amazon and is not made transparent to the user. The only access to the data is via using the service by name (NFS service), and there is no block or object access to said data. - [Amazon Storage Gateway](https://code.kx.com/q/cloud/aws/app-c-asg.md): Amazon Storage Gateway is a pre-prepared AMI/instance that can be provisioned on-demand. It allows you to present an NFS layer to the application with S3 as a backing store. The difference between this and EFS is that the S3 bucket is owned and named by you. But fundamentally the drawback with this approach will be the operational latencies. These appear much more significant than the latencies gained for the EFS solution, and may reflect the communication between the file gateway instance and a single declared instance of S3. It is likely that the S3 buckets used by EFS are run in a more distributed fashion. - [Reference architecture](https://code.kx.com/q/cloud/aws/index.md): None - [FSx for Lustre](https://code.kx.com/q/cloud/aws/lustre.md): Amazon FSx for Lustre is POSIX-compliant and is built on Lustre. - [Migrating a kdb+ HDB to Amazon EC2](https://code.kx.com/q/cloud/aws/migration.md): If you are assessing migrating a kdb+ historical database (HDB) and analytics workloads into the Amazon Elastic Compute Cloud (EC2) key considerations are performance and functionality attributes expected from using kdb+, and the associated HDB, in EC2; capabilities of several storage solutions working in the EC2 environment, as of March 2018; performance attributes of EC2 and benchmark results. You must weigh the pros and cons of each solution. - [Reference architecture](https://code.kx.com/q/cloud/azure/architecture.md) - [Reference architecture](https://code.kx.com/q/cloud/gcpm/architecture.md): None - [About](https://code.kx.com/q/cloud/index.md) - [Goofys](https://code.kx.com/q/cloud/otherfs/goofys.md): Goofys is an open-source Linux client distribution. It uses an AWS S3 storage backend, behind a running and a normal Linux AWS EC2 instance. It presents a POSIX file system layer to kdb+ using the FUSE layer. It is distributed in binary form for RHEL/CentOS and others, or can be built from source. - [MapR-FS](https://code.kx.com/q/cloud/otherfs/mapr.md): MapR is a commercial implementation of the Apache Hadoop open-source stack. Solutions such as MapR-FS were originally driven by the need to support Hadoop clusters alongside high-performance file-system capabilities. In this regard, MapR improved on the original HDFS implementation found in Hadoop distributions. MapR-FS is a core component of their stack. MapR AMIs are freely available on the Amazon marketplace. - [ObjectiveFS](https://code.kx.com/q/cloud/otherfs/objectivefs.md): ObjectiveFS is a commercial Linux client/kernel package. It arbitrates between S3 storage (each S3 bucket is presented as a FS) and each server running ObjectiveFS. - [Quobyte](https://code.kx.com/q/cloud/otherfs/quobyte.md): Quobyte offers a shared namespace solution based on either locally-provisioned or EBS-style storage. It leverages an erasure-coding model around nodes of a Quobyte cluster. - [S3FS](https://code.kx.com/q/cloud/otherfs/s3fs.md): S3FS is an open-source Linux client software layer that arbitrates between the AWS S3 storage layer and each AWS EC2 instance. It presents a POSIX file system layer to kdb+. - [S3QL](https://code.kx.com/q/cloud/otherfs/s3ql.md): The code is perhaps the least-referenced open-source S3 gateway package, and from a vanilla RHEL 7.3 build we had to add a significant number of packages to get to the utility compiled and installed. S3QL is written in Python. Significant additions are required to build S3QL namely llfuse, Python3, Cython, Python-pip, EPEL and SQlite. - [WekaIO Matrix](https://code.kx.com/q/cloud/otherfs/wekaio-matrix.md): WekaIO Matrix is a commercial product from WekaIO. Version 3.1.2 was used for testing. Matrix uses a VFS driver, enabling Weka to support POSIX semantics with lockless queues for I/O. The WekaIO POSIX system has the same runtime semantics as a local Linux file system. - [Tables in the filesystem](https://code.kx.com/q/database/index.md): kdb+ is what happens when q tables are persisted to the filesystem - [From MDB via ODBC](https://code.kx.com/q/database/mdb-odbc.md): Access a table in kdb+ from an MDB file via ODBC - [Serializing an object](https://code.kx.com/q/database/object.md): The simplest way to serialize a table is as a single object. - [Segmented databases](https://code.kx.com/q/database/segment.md): How to segment a kdb+ database across multiple storage devices - [Shebang script](https://code.kx.com/q/develop/shebang.md): Execute a q script as a shebang script - [Developer tools](https://code.kx.com/q/devtools.md): KX offers developers a variety of tools, some free, others only to commercially-licensed customers. - [Open source](https://code.kx.com/q/github.md): An index of q and kdb+ repositories on GitHub. - [About](https://code.kx.com/q/index.md): Documentation, white papers and developer resources for kdb+ and the q programming language from KX - [Quick guide](https://code.kx.com/q/interfaces/c-client-for-q.md): How to connect a C client program to a kdb+ server process - [API reference](https://code.kx.com/q/interfaces/capiref.md): A reference guide to the API for connecting a C program to a kdb+ server process - [C#](https://code.kx.com/q/interfaces/csharp.md): How to call kdb+ from C# - [Excel](https://code.kx.com/q/interfaces/excel-client-for-q.md): How to work with Excel and kdb+ - [Foreign Function Interface (FFI)](https://code.kx.com/q/interfaces/ffi.md): Foreign function interface for kdb+ - [GPUs](https://code.kx.com/q/interfaces/gpus.md): An example showing how to call CUDA code from q. CUDA is a variant on C used to write general-purpose programs that execute on NVIDIA graphics cards. Data is copied to the card, the computation executed, and the results copied back. - [KX libraries](https://code.kx.com/q/interfaces/index.md): KX interfaces between kdb+ and other languages and services - [Java](https://code.kx.com/q/interfaces/java.md): How to call kdb+ from Java - [Matlab](https://code.kx.com/q/interfaces/matlab-client-for-q.md): How connect a MATLAB client program to a kdb+ server process - [Python](https://code.kx.com/q/interfaces/python.md): How to call kdb+ from Python - [Bloomberg](https://code.kx.com/q/interfaces/q-client-for-bloomberg.md) - [ODBC client](https://code.kx.com/q/interfaces/q-client-for-odbc.md): In Windows and Linux, you can use ODBC to connect to a non-kdb+ database from q. - [ODBC3 server](https://code.kx.com/q/interfaces/q-server-for-odbc3.md): The ODBC3 server allows applications to query kdb+ via the ODBC interface. - [R](https://code.kx.com/q/interfaces/r.md): How to enable R to connect to kdb+ and extract data; embed R inside q and invoke R routines; enable q to connect to a remote instance of R via TCP/IP and invoke R routines remotely; and enable q to load the R maths library and invoke R math routines locally. - [Rust](https://code.kx.com/q/interfaces/rust.md): How to call kdb+ from Rust - [Scala](https://code.kx.com/q/interfaces/scala-client-for-q.md): How to call kdb+ from Scala - [Extending q with C/C++](https://code.kx.com/q/interfaces/using-c-functions.md): Functions can be written in C or C++ as shared objects and loaded into a kdb+ process for use in a q program. - [Alternative in-memory layouts](https://code.kx.com/q/kb/alternative-in-memory-layouts.md): Prior to kdb+ some schemas used nested data per symbol. The g# attribute allowed us to move away from those more complicated designs and queries to long flat tables with fast access via the group attribute. There is however a third layout for in-memory data, using a dictionary of symbols!tables, which might be relevant to your particular use case. - [Async callbacks](https://code.kx.com/q/kb/callbacks.md): The construct of an asynchronous remote call with callback is not built into interprocess communication (IPC) syntax in q, but it is not difficult to implement. We explain here how to do this with simple examples that are easily generalized. - [Compacting HDB sym](https://code.kx.com/q/kb/compacting-hdb-sym.md): Under some scenarios, the sym enum file in a HDB can become bloated – this is the sym file sitting in the root of the HDB folder. This is due to symbols no longer being used as earlier parts of a HDB may have been archived. Some users have expressed interest in being able to compact this sym enum file. This essentially requires re-enumeration of all enumerated columns against a new empty sym file. It can take some time to execute, and nothing else should try to read or write to the HDB area whilst this is running. - [FSI case study](https://code.kx.com/q/kb/compression/fsicasestudy.md): Compression ratios, set and query times using NYSE TAQ data - [Corporate actions](https://code.kx.com/q/kb/corporate-actions.md): Even routine corporate actions can have a significant impact on prices, volume and volatility. With q one typically captures raw tick data, and should a corporate action influence a previously captured price, an adjustment factor is applied to that raw data – this can be done on-the-fly, and hence can also be selective about which types of corporate actions are applied. - [CPU affinity](https://code.kx.com/q/kb/cpu-affinity.md): Kdb+ can be constrained to run on specific cores through the setting of CPU affinity. Typically, you can set the CPU affinity for the shell you are in, and then processes started within that shell will inherit the affinity. - [Daemon](https://code.kx.com/q/kb/daemon.md): A simple way to daemonize kdb+ on Linux. Supports redirecting stderr and stdout. It closes stdin and writes a pid to a pidfile. - [Data-At-Rest Encryption](https://code.kx.com/q/kb/dare.md): Data-at-rest encryption with kdb+, including Transparent Disk Encryption - [Deferred response](https://code.kx.com/q/kb/deferred-response.md): Ideally, for concurrency, all messaging would be async. However, sync messaging is a convenient paradigm for client apps. Hence [-30!x](../basics/internal.md#-30x-deferred-response) was added as a feature in V3.6, allowing processing of a sync message to be ‘suspended’ to allow other messages to be processed prior to sending a response message. - [FAQ](https://code.kx.com/q/kb/faq-listbox.md): The k4 Listbox is a community of professional q programmers. This article answers questions frequently asked in the group. - [Tables](https://code.kx.com/q/kb/faq.md): Tables in kdb+ - [File compression](https://code.kx.com/q/kb/file-compression.md): How to work with compressed files in kdb+ - [File system comparison](https://code.kx.com/q/kb/filesystemTestByNano.md) - [Firewalling](https://code.kx.com/q/kb/firewalling.md): How to protect a kdb+ process with a firewall - [Geospatial indexing](https://code.kx.com/q/kb/geospatial.md): A demo showing the basics of geospatial indexing with q. A 10-million-point random data set is queried from the HTML map client. Click on the map to see nearby points. - [HTTP](https://code.kx.com/q/kb/http.md): How to work with HTTP in q - [inetd, xinetd](https://code.kx.com/q/kb/inetd.md): On *nix-like operating systems, a q server can work under inetd to provide a private server for each connection established on a designated port. - [Alternative architecture](https://code.kx.com/q/kb/kdb-tick.md): A ‘vanilla’ tick setup has a tickerplant (TP) logging to disk and publishing to an in-memory realtime database (RDB) – and at day-end the RDB data is saved to disk as another day in the history database (HDB). Users typically query the RDB or HDB directly. It doesn’t have to be that way. There are a many other ways of assembling the kdb+tick “building blocks” to reduce or share the load. - [Linking columns](https://code.kx.com/q/kb/linking-columns.md): A link column is similar to a foreign-key column – it provides linkage between the values of a column in a table to the values in a column in a second table - [Linux production notes](https://code.kx.com/q/kb/linux-production.md): Notes for deploying kdb+ processes on production Linux servers - [Load balancing](https://code.kx.com/q/kb/load-balancing.md): The primary server starts secondary servers; clients send requests to the primary server which chooses a secondary server with low CPU load, and forwards the request there. - [Loading from large files](https://code.kx.com/q/kb/loading-from-large-files.md): When data in the CSV file is too large to fit into memory, we need to break it into manageable chunks and process them in sequence. - [Log Files](https://code.kx.com/q/kb/logging.md): Software or hardware problems can cause a kdb+ server process to fail, possibly resulting in loss of data not saved to disk at the time of the failure. A kdb+ server can use logging of updates to avoid data loss when failures occur; note that the message is logged only if it changes the state of the process’ data. - [Linear programming](https://code.kx.com/q/kb/lp.md): Some applications of kdb+ to linear-programming problems - [Multithreaded primitives](https://code.kx.com/q/kb/mt-primitives.md): Q primitives in V4.0 implicitly seek and use opportunities for parallel processing. Some existing q code will run significantly faster. - [Named pipes](https://code.kx.com/q/kb/named-pipes.md): How to read FIFOs/named pipes on Unix. - [Partitioned tables](https://code.kx.com/q/kb/partition.md): File par.txt in the main database directory defines a top-level partitioning of a database into directories. - [Performance tips](https://code.kx.com/q/kb/performance-tips.md): Tips on improving the performance of kdb+ processes - [Pivoting tables](https://code.kx.com/q/kb/pivoting-tables.md): Some notes on the theory and practice of pivoting tables. - [Code profiler](https://code.kx.com/q/kb/profiler.md): None - [Programming examples](https://code.kx.com/q/kb/programming-examples.md): Some examples of q programs to solve various problems - [Programming idioms](https://code.kx.com/q/kb/programming-idioms.md): Q expressions that solve some common programming problems. - [Serialization examples](https://code.kx.com/q/kb/serialization.md): TCP/IP is used for communicating between processes. The protocol is extremely simple, as is the message format. - [Async callbacks (C client)](https://code.kx.com/q/kb/server-calling-client.md): Demonstrates how to simulate a C client handling a get call from a kdb+ server. The Java interface allows the programmer to emulate a kdb+ server. The C interface does not provide a means to respond to a sync call from the server but async responses (message type 0) can be sent using k(-c,...). - [Splayed tables](https://code.kx.com/q/kb/splayed-tables.md): Splaying a table stores each column as a separate file, rather than using a single file for the whole table - [SSL/TLS](https://code.kx.com/q/kb/ssl.md): How to use Secure Sockets Layer(SSL)/Transport Layer Security(TLS) to encrypt connections using the OpenSSL libraries. - [Temporal data](https://code.kx.com/q/kb/temporal-data.md): How to handle temporal data in q - [Timezones](https://code.kx.com/q/kb/timezones.md): Q has two built-in functions ltime and gtime which can be used to get the UTC time or local time according to the TZ shell environment setting. - [Unicode](https://code.kx.com/q/kb/unicode.md): How-to handle Unicode-encoded data in kdb+ - [Unit tests](https://code.kx.com/q/kb/unit-tests.md): How to write unit tests for q programs - [Monitor & control execution](https://code.kx.com/q/kb/using-dotz.md): Some techniques for debugging q programs - [Multiple versions](https://code.kx.com/q/kb/versions.md): How to install and run multiple versions kdb+ - [WebSockets](https://code.kx.com/q/kb/websockets.md): How to work with WebSockets in q - [Windows service](https://code.kx.com/q/kb/windows-service/index.md): Windows 7+ provides a task scheduler tool which can be used to run kdb+. - [Origins](https://code.kx.com/q/learn/archive.md): About q and the k programming languages and their origins. - [Technical articles](https://code.kx.com/q/learn/blogs.md): Links to selected technical articles of interest to developers - [Q for quants](https://code.kx.com/q/learn/brief-introduction.md): kdb+ is a powerful database that can be used for streaming, real-time and historical data. Q is the SQL-like, general-purpose programming language built on top of kdb+. It offers high-performance, in-database analytic capabilities. - [Overview](https://code.kx.com/q/learn/index.md): How to get started installing and using kdb+ - [Install](https://code.kx.com/q/learn/install.md): How to install kdb+ on Linux, macOS, or Windows - [Licenses](https://code.kx.com/q/learn/licensing.md): How to ensure your kdb+ processes have the licenses they need. - [ABC problem](https://code.kx.com/q/learn/pb/abc-problem.md): A simple problem with a short tree-searching solution in q - [Abundant odds](https://code.kx.com/q/learn/pb/abundant-odds.md): Use the Do and Converge iterators to explore an integer sequence - [Four is magic](https://code.kx.com/q/learn/pb/four-magic.md): A simple problem with a short solution that illustrates powerful q programming techniques - [About](https://code.kx.com/q/learn/pb/index.md): The Q Playbook is a collection of simple problems with which to study features of the q language - [Name Game](https://code.kx.com/q/learn/pb/name-game.md): A simple substitution problem leads to an exploration of projections, Amend At, and the Do and Over iterators - [Summarize and Say](https://code.kx.com/q/learn/pb/sum-say.md): A - [Word wheel](https://code.kx.com/q/learn/pb/word-wheel.md): Find all the words composable from a word wheel; find the word wheels with the most words composable from them - [12 Days of Xmas](https://code.kx.com/q/learn/pb/xmas-days.md): Write q code to printthe lyrics to the Christmas carol, The Twelve Days of Christmas - [Array](https://code.kx.com/q/learn/python/examples/array.md): Python programming examples and their q equivalents - [Dictionaries](https://code.kx.com/q/learn/python/examples/dict.md): Python programming examples for dictionaries and their q equivalents - [Basic](https://code.kx.com/q/learn/python/examples/index.md): Python programming examples and their q equivalents - [List](https://code.kx.com/q/learn/python/examples/list.md): Python list programming examples and their q equivalents - [Strings](https://code.kx.com/q/learn/python/examples/string.md): Python programming examples for strings and their q equivalents - [Q by Examples](https://code.kx.com/q/learn/q-by-examples.md): A simple introduction by examples to the q programming language - [Q for All (video)](https://code.kx.com/q/learn/q-for-all.md): Q for All is a two-hour introduction to kdb+ and q by Jeffry Borror, author of Q for Mortals. - [Boggle](https://code.kx.com/q/learn/reading/boggle.md): Examples of q programs for study – a program to produce, from a Boggle board position, solution words - [Fizz buzz](https://code.kx.com/q/learn/reading/fizzbuzz.md): Fizz buzz is a game to teach chilf=dren division, and also a well-known programming problem. - [Information desk](https://code.kx.com/q/learn/reading/index.md): Examples of q programs for study - [Klondike](https://code.kx.com/q/learn/reading/klondike.md): An implementation of Klondike as a case study for writing q programs in the q programming language, with discussion of the techniques used - [Scrabble](https://code.kx.com/q/learn/reading/scrabble.md): Examples of q programs for study – a program to produce, from a list of letter tiles, candidate words for the Scrabble board - [Cats cradle](https://code.kx.com/q/learn/reading/strings.md): Examples of q programs for study – programming exercises and puzzles with strings - [Shifts & scans](https://code.kx.com/q/learn/shifts-scans.md): Shifts are powerful expressions for finding where the items of a list change in specific ways. Boolean shifts are commonly used to find where in a list the result of a test expression on its elements has changed. Shifts compare each list item to its neighbor, but scan results relate to the entire list – and can terminate quickly. - [Historical database](https://code.kx.com/q/learn/startingkdb/hdb.md): How to build and use an historical database in kdb+ - [Overview](https://code.kx.com/q/learn/startingkdb/index.md): A quick-start guide to kdb+, aimed primarily at those learning independently. It covers system installation, the kdb+ environment, IPC, tables and typical databases, and where to find more material. - [IPC](https://code.kx.com/q/learn/startingkdb/ipc.md): How to set up interprocess communications between kdb+ processes - [The q language](https://code.kx.com/q/learn/startingkdb/language.md): Introduction to the q programming language - [Tables](https://code.kx.com/q/learn/startingkdb/tables.md): How to work with tables in q - [Realtime database](https://code.kx.com/q/learn/startingkdb/tick.md): How to set up and use a real-time database in kdb+ - [CSVs](https://code.kx.com/q/learn/tour/csvs.md): How to load CSVs as tables and save tables as CSVs. - [Datatypes](https://code.kx.com/q/learn/tour/datatypes.md): Types of data handled by kdb+ and how they are represented in q - [IDE](https://code.kx.com/q/learn/tour/ide.md): IDEs (interactive development environments) for kdb+ and the q programming language - [Begin here](https://code.kx.com/q/learn/tour/index.md): A whirlwind tour of kdb+ and the q programming language, with links to explore topics in depth - [Overview](https://code.kx.com/q/learn/tour/overview.md): A mountain tour of kdb+ and the q programming language, with links to explore topics in depth - [Scripts](https://code.kx.com/q/learn/tour/scripts.md) - [The q session](https://code.kx.com/q/learn/tour/session.md): How to use the q session - [Tables](https://code.kx.com/q/learn/tour/tables.md): How to construct, manipulate and save tables in kdb+ - [Views](https://code.kx.com/q/learn/views.md): A view is a calculation that is re-evaluated only if the values of the underlying dependencies have changed since its last evaluation. - [Machine learning](https://code.kx.com/q/ml.md): Machine-learning capabilities are at the heart of future technology development at KX. Libraries are added here as they are released. Libraries are released under the Apache 2 license, and are free for all use cases, including 64-bit and commercial use. - [abs](https://code.kx.com/q/ref/abs.md): abs is a q keyword that returns the absolute value of its argument - [Accumulators](https://code.kx.com/q/ref/accumulators.md): An accumulator is an iterator that takes an applicable value as argument and derives a function that evaluates the value, first on its entire (first) argument, then on the results of successive evaluations. - [Add](https://code.kx.com/q/ref/add.md): A q operator that returns the sum of two numeric, boolean or temporal arguments - [aj, aj0, ajf, ajf0](https://code.kx.com/q/ref/aj.md): As-of joins join two tables taking from the second the most recent records prior to the times in the first - [all, any](https://code.kx.com/q/ref/all-any.md): all and any are q keywords that invoke aggregator functions for vectors of flags - [Amend](https://code.kx.com/q/ref/amend.md): Operators Amend and Amend At modify one or more items in a list. - [and](https://code.kx.com/q/ref/and.md): and is a q keyword that returns the logical AND of its flag arguments - [Apply, Index, Trap](https://code.kx.com/q/ref/apply.md): Operators Apply (At), Index (At), and Trap (At) apply a function to one or more arguments, get items at depth in a list, and trap errors. - [asc, iasc, xasc](https://code.kx.com/q/ref/asc.md): Ascending sorts in q; asc returns a sortable argument in ascending order; iasc grades its items into ascending order; xasc sorts a table by columns. - [asof](https://code.kx.com/q/ref/asof.md): Where t1 is a table and t2 is a table or dictionary in which the last key or column of t2 corresponds to a time column in t1, asof[t1;t2] returns the values from the last rows matching the rest of the keys and time ≤ the time in t2. - [Assign](https://code.kx.com/q/ref/assign.md): Name a value in q - [attr](https://code.kx.com/q/ref/attr.md): attr is a q keyword that returns the attributes of an object - [avg, avgs, mavg, wavg](https://code.kx.com/q/ref/avg.md): avg and wavg are q keywords invoking aggregate functions for the arithmetic and weighted means of a vector. avgs and mavgs are q keywords that invoke uniform functions that return the cumulative and moving means of a vector - [bin, binr](https://code.kx.com/q/ref/bin.md): bin and binr are q keywords that perform binary searches. - [Cast](https://code.kx.com/q/ref/cast.md): Cast is a q operator that converts a data argument to another datatype. - [ceiling](https://code.kx.com/q/ref/ceiling.md): ceiling is a q keyword that returns the least integer greater than its numeric argument. - [Coalesce](https://code.kx.com/q/ref/coalesce.md): Coalesce is a q operator that merges keyed tables. - [cols, xcol, xcols](https://code.kx.com/q/ref/cols.md): cols, xcol and xcols are q keywords. cols returns the column names of a table. xcol renames tablecolumns. xcols reorders table columns. - [Compose](https://code.kx.com/q/ref/compose.md): Compose is a q operator that composes (or curries) a unary value with another. The rank of the result is the rank of the second argument. - [Cond](https://code.kx.com/q/ref/cond.md): Cond is a q control construct for conditional evaluation. - [cor](https://code.kx.com/q/ref/cor.md): cor is a q keyword that calculates the correlation coefficient of two numeric lists. - [cos, acos](https://code.kx.com/q/ref/cos.md): cos and acos are q keywords. They return the cosine and arccosine respectively of their numeric argument. - [count, mcount](https://code.kx.com/q/ref/count.md): count and mcount are q keywords count returns the number of items in a list. mcount returns a moving count of the non-null items of a list. - [cov, scov](https://code.kx.com/q/ref/cov.md): cov and scov are q keyword, that return respectively the covariance and sample covariance of two conforming numeric lists. - [cross](https://code.kx.com/q/ref/cross.md): cross is a q keyword that returns the cross-product (all possible combinations) of the items of its arguments. - [csv](https://code.kx.com/q/ref/csv.md): csv is a q keyword that represents the delimiter of CSV files. - [Cut](https://code.kx.com/q/ref/cut.md): Cut is a q operator that cuts a list or table into subarrays. cut is a q keyword that cuts a list or table into a matrix into a specified number of columns. - [Deal, Roll, Permute](https://code.kx.com/q/ref/deal.md): Roll, Deal, and Permute are q operators that return ran dom selections, with or without duplicates - [Delete](https://code.kx.com/q/ref/delete.md): delete is a qSQL template that removes rows or columns from a table, entries from a dictionary, or objects from a namespace. - [deltas](https://code.kx.com/q/ref/deltas.md): deltas is a q keyword that returns the differences between adjacent list items. - [desc, idesc, xdesc](https://code.kx.com/q/ref/desc.md): Descending sorts in q; desc returns a list sorted descending; idesc returns the grade for that sort. xdesc sorts a table descending by specified columns. - [dev, mdev, sdev](https://code.kx.com/q/ref/dev.md): dev, mdev, and sdev are q keywords that return, respectively, the standard deviation, moving deviation, and sample standard deviation of their argument. - [Dict](https://code.kx.com/q/ref/dict.md): Dict is a q operator that returns a dictionary from vectors of keys and values. - [differ](https://code.kx.com/q/ref/differ.md): differ is a q keyword that flags where items of a list change value. - [Display](https://code.kx.com/q/ref/display.md): Display is a q operator that writes a value to the console before returning it. - [distinct](https://code.kx.com/q/ref/distinct.md): distinct is a q keyword that returns the nub (the unique items) of a list. - [div](https://code.kx.com/q/ref/div.md): div is a q keyword that performs integer division. - [Divide](https://code.kx.com/q/ref/divide.md): Divide is a q operator that returns the ratio of its arguments. - [do](https://code.kx.com/q/ref/do.md): do is a q control word that evaluates one or more expressions a set number of times. - [.h (markup)](https://code.kx.com/q/ref/doth.md): The .h namespace contains objects useful for marking up data for an HTTP response. - [.j (JSON)](https://code.kx.com/q/ref/dotj.md): the .j namespace contains objects useful for converting between JSON and and q dictionaries. - [.m (modules)](https://code.kx.com/q/ref/dotm.md): Memory can be backed by a filesystem, allowing use of DAX-enabled filesystems (e.g. AppDirect) as a non-persistent memory extension for kdb+ - [.Q (utils)](https://code.kx.com/q/ref/dotq.md): The .Q namespace contains utility objects for q programming - [.z (env, callbacks)](https://code.kx.com/q/ref/dotz.md): The .z namespace contains objects that return or set system information, and callbacks for IPC. - [Drop](https://code.kx.com/q/ref/drop.md): Drop is a q operator that drops items from a list, entries from a dictionary or columns from a table. - [dsave](https://code.kx.com/q/ref/dsave.md): dsave is a q keyword that saves global tables to disk as splayed, enumerated, indexed kdb+ tables. - [Dynamic Load](https://code.kx.com/q/ref/dynamic-load.md): Dynamic Load is a q operator that loads C shared objects for use in q programs. - [each, peach](https://code.kx.com/q/ref/each.md): each and peach are q keywords, wrappers for the map iterators Each and Each Parallel. - [ej](https://code.kx.com/q/ref/ej.md): ej is a q keyword that performs an equi join on two tables. - [ema](https://code.kx.com/q/ref/ema.md): ema is a q keyword that returns the exponential moving average of its arguments. - [Enkey, Unkey](https://code.kx.com/q/ref/enkey.md): Enkey and Unkey are q operators that respectively convert a simple tableto a keyed table and vice-versa. - [enlist](https://code.kx.com/q/ref/enlist.md): enlist is a q keyword that makes a 1-list from its arguments. - [Enum Extend](https://code.kx.com/q/ref/enum-extend.md): Enum Extend is a q operator that extends an enumeration. - [Enumerate](https://code.kx.com/q/ref/enumerate.md): Enumerate is a q operator that returns one list as an enumeration of another. - [Enumeration](https://code.kx.com/q/ref/enumeration.md): Enumeration isd a q operator that returns an enumerated symbol list. - [Equal](https://code.kx.com/q/ref/equal.md): Equal is a q operator that flags where its arguments are equal. - [eval, reval](https://code.kx.com/q/ref/eval.md): eval and reval are q keywords that evaluate parse trees. - [except](https://code.kx.com/q/ref/except.md): except is a q keyword that excludes items from a list. - [Exec](https://code.kx.com/q/ref/exec.md): exec is a q keyword that returns selected rows and columns from a table. Exec is a q operator that does the same in functional SQL. - [exit](https://code.kx.com/q/ref/exit.md): exit is a control word that terminates a kdb+ process with a specified exit code. - [exp, xexp](https://code.kx.com/q/ref/exp.md): exp and xexp are q keywords. exp raises e to the power of its argument; xexp raises its left argument to the power of its right. - [fby](https://code.kx.com/q/ref/fby.md): fby is a q keyword that applies an aggregate function to groups. - [File Binary](https://code.kx.com/q/ref/file-binary.md): File Binary is a q operator that reads or writes a binary file. - [File Text](https://code.kx.com/q/ref/file-text.md): File Text is a q operator that reads or writes text files. - [Fill](https://code.kx.com/q/ref/fill.md): Fill is a q operator that replaces nulls in a vector. fills is a q keyword that replaces nulls in a vector with preceding non-nulls. - [Find](https://code.kx.com/q/ref/find.md): Find is a q operator that finds the first occurrence of an item in a list. - [first, last](https://code.kx.com/q/ref/first.md): first and last are q keywords that return respectively the first and last items from a list. - [fkeys](https://code.kx.com/q/ref/fkeys.md): fkeys is a q keyword that returns the foreign-key columns of a table. - [Flip Splayed](https://code.kx.com/q/ref/flip-splayed.md): Flip Splayed or Partitioned is a q operator that returns the flip of a splayed orpartitioned table. - [flip](https://code.kx.com/q/ref/flip.md): flip is a q keyword that transposes its argument. - [floor](https://code.kx.com/q/ref/floor.md): floor is a q keyword that returns the greatest integer smaller than its argument. - [get, set](https://code.kx.com/q/ref/get.md): get and set are q keywords that read or set value of a variable or a kdb+ data file. - [getenv, setenv](https://code.kx.com/q/ref/getenv.md): getenv and setenv are q keywords that get or set an environment variable. - [Greater Than](https://code.kx.com/q/ref/greater-than.md): Greater Than and At Least are q operators that compare their arguments. - [Greater](https://code.kx.com/q/ref/greater.md): Greater is a q operator that returns the greater of its arguments. or is a q keyword that performs a logical OR. - [group](https://code.kx.com/q/ref/group.md): group is a q keyword that returns a dictionary in which the keys are the distinct items of its argument, and the values the indexes where the distinct items occur. - [gtime, ltime](https://code.kx.com/q/ref/gtime.md): gtime and ltime are q keywords that return, respectively, global and local time. - [hcount](https://code.kx.com/q/ref/hcount.md): Keyword hcount returns the size in bytes of a file - [hdel](https://code.kx.com/q/ref/hdel.md): Keyword hdel deletes a file or folder - [hopen, hclose](https://code.kx.com/q/ref/hopen.md): hopen and hclose are q keywords for connecting and disconnecting files and processes. - [hsym](https://code.kx.com/q/ref/hsym.md): Keyword hsym converts symbol/s to file- or process-symbol/s - [Identity, Null](https://code.kx.com/q/ref/identity.md): Identity is a q operator that returns its argument unchanged. Null is a generic null value. - [if](https://code.kx.com/q/ref/if.md): if is a q control construct for conditional evaluation of one or more expressions. - [ij, ijf](https://code.kx.com/q/ref/ij.md): ij and ijf are q keywords that perform inner joins. - [in](https://code.kx.com/q/ref/in.md): in is a q keyword that flags whether its left argument is an item in its right argument. - [Reference card](https://code.kx.com/q/ref/index.md): Quick reference for kdb+ and the q programming language - [insert](https://code.kx.com/q/ref/insert.md): insert is a q keyword that inserts or appends records to a table. - [inter](https://code.kx.com/q/ref/inter.md): inter is a q keyword that returns the intersection of two lists or dictionaries. - [inv](https://code.kx.com/q/ref/inv.md): inv is a q keyword that returns the matrix inverse of its argument. - [Iterators](https://code.kx.com/q/ref/iterators.md): The iterators (earlier known as adverbs) are native higher-order operators. They take applicable values as arguments and return derived functions. - [Join](https://code.kx.com/q/ref/join.md): Join is a q operator that joins atoms, lists, dictionaries or tables. - [key](https://code.kx.com/q/ref/key.md): Keys of a dictionary; key columns of a keyed table; files in a folder; whether a file or name exists; target of a foreign key, type of a vector; or the enumerator of a list. - [keys, xkey](https://code.kx.com/q/ref/keys.md): keys and xkey are q keywords that get or set the key columns of a table. - [Less Than](https://code.kx.com/q/ref/less-than.md): Less Than and Up To are q operators that compare the values of their arguments. - [Lesser](https://code.kx.com/q/ref/lesser.md): Lesser is a q operator that returns the lesser of its arguments. and is a q keyword that performs a logical AND. - [like](https://code.kx.com/q/ref/like.md): like is a q keyword that matches text to a pattern. - [lj, ljf](https://code.kx.com/q/ref/lj.md): lj is a q keyword that performs a left join. - [load, rload](https://code.kx.com/q/ref/load.md): load is q keyword that loads binary data from a file or directory. - [log, xlog](https://code.kx.com/q/ref/log.md): log and xlog are q keywords that return logarithms, either natural or to a specified base. - [lower, upper](https://code.kx.com/q/ref/lower.md): lower and upper are q keywords that shift text to lower or upper case respectively. - [lsq](https://code.kx.com/q/ref/lsq.md): lsq is a q keyword that performs least squares fitting, matrix division. - [Maps](https://code.kx.com/q/ref/maps.md): Maps iterators derive uniform functions that apply their values once to each item of a dictionary, a list, or conforming lists. - [Match](https://code.kx.com/q/ref/match.md): Match is a q operator that flags whether its arguments have the same value. - [max, maxs, mmax](https://code.kx.com/q/ref/max.md): max, maxs, and mmax are q keywords that return respectively the largest item from a list or dictionary, the cumulative maximums, and the moving maximums. - [md5](https://code.kx.com/q/ref/md5.md): md5 is a q keyword that returns the Message Digest (MD5 hash) of a string. - [med](https://code.kx.com/q/ref/med.md): med is a q keyword that returns the median of its argument. - [meta](https://code.kx.com/q/ref/meta.md): meta is a q keyword that returns metadata for a table. - [min, mins, mmin](https://code.kx.com/q/ref/min.md): min, mins and mmin are q keywords that return respectively the smallest item, the cumulative minimums, and the moving minimums of the argument. - [Matrix Multiply](https://code.kx.com/q/ref/mmu.md): Matrix Multiply is a q operator that performs matrix multiplication; mmu is a q keyword that is a wrapper for it. - [mod](https://code.kx.com/q/ref/mod.md): mod is a q keyword that returns the modulus of a number. - [Multiply](https://code.kx.com/q/ref/multiply.md): Multiply is a q operator that returns the product of its arguments. - [neg](https://code.kx.com/q/ref/neg.md): neg is a q keyword that returns the negation of its argument. - [next, prev, xprev](https://code.kx.com/q/ref/next.md): next, prev, and xprev are q keywords that return the immediate or near neighbors of the items of a list. - [Not Equal](https://code.kx.com/q/ref/not-equal.md): Not Equal is a q operator that flags whether its arguments have the same value. - [not](https://code.kx.com/q/ref/not.md): not is a q keyword that flags whether its argument is false. - [null](https://code.kx.com/q/ref/null.md): null is a q keyword that flags where its argument is null. - [or](https://code.kx.com/q/ref/or.md): or is a q keyword that performs a logical OR. - [over, scan](https://code.kx.com/q/ref/over.md): over and scan are q keywords that are wrappers for the Over and Scan accumulating iterators. - [Overloaded glyphs](https://code.kx.com/q/ref/overloads.md): Many non-alphabetic keyboard characters are overloaded by q. This page tabulates their different forms. - [Pad](https://code.kx.com/q/ref/pad.md): Pad is a q operator that pads a string or list of strings to a specified length - [parse](https://code.kx.com/q/ref/parse.md): parse is a q keyword that returns a parse tree for a string expression. - [pj](https://code.kx.com/q/ref/pj.md): pj is a q keyword that performs a plus join. - [prd, prds](https://code.kx.com/q/ref/prd.md): prd and prds are q keywords that return respectively the product and the cumulating products of their arguments. - [prior](https://code.kx.com/q/ref/prior.md): prior is a q keyword that is a wrapper for the Each Prior iterator. - [rand](https://code.kx.com/q/ref/rand.md): rand is a q keyword that randomly picks a number, or an item from a list. - [rank](https://code.kx.com/q/ref/rank.md): rank is a q keyword that returns the position of the items of its argument in the sorted list. - [ratios](https://code.kx.com/q/ref/ratios.md): ratios is a q keyword that returns the ratios between successive items of a list. - [raze](https://code.kx.com/q/ref/raze.md): raze is a q keyword that returns the items of a list joined, collapsing one level of nesting. - [read0](https://code.kx.com/q/ref/read0.md): read0 is a q keyword that reads text from a file or process handle - [read1](https://code.kx.com/q/ref/read1.md): read1 is a q keyword that reads bytes from a file or named pipe - [reciprocal](https://code.kx.com/q/ref/reciprocal.md): reciprocal is a q keyword that returns the reciprocal of a number. - [reverse](https://code.kx.com/q/ref/reverse.md): reverse is a q keyword that reverses the order of items in a list or dictionary. - [rotate](https://code.kx.com/q/ref/rotate.md): rotate is a q keyword that shifts the items of a list to the left or right. - [save, rsave](https://code.kx.com/q/ref/save.md): save and rsave are q keywords that save global data to file or splayed to a directory. - [Select](https://code.kx.com/q/ref/select.md): select and Select are (respectively) a q keyword and operator that select all or part of a table, possibly with new columns. - [Set Attribute](https://code.kx.com/q/ref/set-attribute.md): Set Attribute is a q operator that assigns an attribute to a list, dictionary or table. - [show](https://code.kx.com/q/ref/show.md): show is a q keyword that formats its argument and displays it at the console. - [Signal](https://code.kx.com/q/ref/signal.md): Signal is a q operator that signals an error. - [signum](https://code.kx.com/q/ref/signum.md): signum is a q keyword that returns 1, 0,or -1 according to the sign of its argument. - [Simple Exec](https://code.kx.com/q/ref/simple-exec.md): Simple Exec is a q operator that is part of functional SQL. - [sin, asin](https://code.kx.com/q/ref/sin.md): sin and asin are q keywords that return (respectively) the sin and arcsine of their argument. - [sqrt](https://code.kx.com/q/ref/sqrt.md): sqrt is a q keyword that returns the square root of its argument. - [ss, ssr](https://code.kx.com/q/ref/ss.md): ss and ssr are q keywords that perform string search and replacement. - [string](https://code.kx.com/q/ref/string.md): string is a q keyword that casts its argument to a string. - [sublist](https://code.kx.com/q/ref/sublist.md): sublist is a q keyword that returns a sublist of a list. - [Subtract](https://code.kx.com/q/ref/subtract.md): Subtract is a q operator that returns the difference of its arguments for a wide range of datatypes. - [sum, sums, msum, wsum](https://code.kx.com/q/ref/sum.md): sum, sums, msum, and wsum are q keywords athat return (respectively) the sum, cumulative sums, moving sums, and weighted sum of their argument. - [sv](https://code.kx.com/q/ref/sv.md): sv is a q keyword that performs a variety of functions under the general scheme of scalar (atom) from vector – join strings or filepath elements; decode a vector to an atom. - [system](https://code.kx.com/q/ref/system.md): system is a q keyword that executes a system command. - [tables](https://code.kx.com/q/ref/tables.md): tables is a q keyword that returns a list of tables in a namespace. - [Take](https://code.kx.com/q/ref/take.md): Take is a q operator that selects leading or trailing items from a list or dictionary, named entries from a dictionary, or named columns from a table. - [tan, atan](https://code.kx.com/q/ref/tan.md): tan and atan are q keywords that return the tangent or arctangent of their argument. - [til](https://code.kx.com/q/ref/til.md): til is a q keyword that returns the natural numbers up to its argument. - [Tok](https://code.kx.com/q/ref/tok.md): Tok is a q operator that interprets string data to another datatype. - [trim, ltrim, rtrim](https://code.kx.com/q/ref/trim.md): trim, ltrim, and rtrim are q keywords that remove leading or trailing spaces from a string. - [type](https://code.kx.com/q/ref/type.md): type is a q keyword that returns as a short int the datatype of an object - [uj, ujf](https://code.kx.com/q/ref/uj.md): uj and ujf are q keywords that perform a union join on two tables. - [ungroup](https://code.kx.com/q/ref/ungroup.md): ungroup is a q keyword that, where x is a table, in which some cells are lists, but for any row, all lists are of the same length, returns the normalized table, with one row for each item of a lists. - [union](https://code.kx.com/q/ref/union.md): union is a q keyword that returns the union of two lists. - [Update](https://code.kx.com/q/ref/update.md): update is a qSQL query template that adds rows or columns to a table. - [upsert](https://code.kx.com/q/ref/upsert.md): upsert is a q keyword that adds new records to a table. - [value](https://code.kx.com/q/ref/value.md): value is a q keyword that returns the value of a named variable, or metadata. - [var, svar](https://code.kx.com/q/ref/var.md): var and svar are q keywords that return (respectively) the variance and sample variance of their argument. - [Vector Conditional](https://code.kx.com/q/ref/vector-conditional.md): Vector Conditional is a q operator that replaces selected items of one list with corresponding items of another. - [view, views](https://code.kx.com/q/ref/view.md): view and views are q keywords. view returns the expression defining a view. views lists views defined in the default namespace. - [vs](https://code.kx.com/q/ref/vs.md): vs is a q keyword that performs various functions under the scheme vector-from-scalar (atom). - [where](https://code.kx.com/q/ref/where.md): where is a q keyword that returns copies of indexes of a list or keys of a dictionary. - [while](https://code.kx.com/q/ref/while.md): while is a q control word that governs iteration. - [within](https://code.kx.com/q/ref/within.md): within is a q keyword that tests whether one argument is within the bounds defined by the other. - [wj, wj1](https://code.kx.com/q/ref/wj.md): wj and wj1 are q keywords that perform window joins. - [xbar](https://code.kx.com/q/ref/xbar.md): xbar is a q keyword that returns one argument rounded down to the nearest multiple of the other. - [xgroup](https://code.kx.com/q/ref/xgroup.md): xgroup is a q keyword that groups a table by values in selected columns. - [xrank](https://code.kx.com/q/ref/xrank.md): xrank is a q keyword that groups its argument by value. - [2.4 Release Notes](https://code.kx.com/q/releases/24.md): Release notes for the kdb+ 2.4 releases - [2.5 Release Notes](https://code.kx.com/q/releases/25.md): Release notes for the kdb+ 2.5 releases - [2.6 Release Notes](https://code.kx.com/q/releases/26.md): Release notes for the kdb+ 2.6 releases - [2.7 Release Notes](https://code.kx.com/q/releases/27.md): Release notes for the kdb+ 2.7 releases - [2.8 Release Notes](https://code.kx.com/q/releases/28.md): Release notes for the kdb+ 2.8 releases - [3.0 Release Notes](https://code.kx.com/q/releases/30.md): Release notes for the kdb+ 3.0 releases - [3.1 Release Notes](https://code.kx.com/q/releases/31.md): Release notes for the kdb+ 3.1 releases - [3.2 Release Notes](https://code.kx.com/q/releases/32.md): Release notes for the kdb+ 3.2 releases - [3.3 Release Notes](https://code.kx.com/q/releases/33.md): Release notes for the kdb+ 3.3 releases - [3.4 Release Notes](https://code.kx.com/q/releases/34.md): Release notes for the kdb+ 3.4 releases - [3.5 Release Notes](https://code.kx.com/q/releases/35.md): Release notes for the kdb+ 3.5 releases - [3.6 Release Notes](https://code.kx.com/q/releases/36.md): Release notes for the kdb+ 3.6 releases - [4.0 Release Notes](https://code.kx.com/q/releases/40.md): Release notes for the kdb+ 4.0 releases - [4.1 Release Notes](https://code.kx.com/q/releases/41.md): Release notes for the kdb+ 4.1 releases - [KDB-X](https://code.kx.com/q/releases/50.md): link to Release notes for the kdb-x releases - [2.4 Highlights](https://code.kx.com/q/releases/ChangesIn2.4.md): New features in the 2.4 release of kdb+ - [2.5 Highlights](https://code.kx.com/q/releases/ChangesIn2.5.md): Changes to V2.5 of kdb+ from the previous version - [2.6 Highlights](https://code.kx.com/q/releases/ChangesIn2.6.md): Changes to V2.6 of kdb+ from the previous version - [2.7 Highlights](https://code.kx.com/q/releases/ChangesIn2.7.md): Changes to V2.7 of kdb+ from the previous version - [2.8 Highlights](https://code.kx.com/q/releases/ChangesIn2.8.md): Changes to V2.8 of kdb+ from the previous version - [3.0 Highlights](https://code.kx.com/q/releases/ChangesIn3.0.md): Changes to V3.0 of kdb+ from the previous version - [3.1 Highlights](https://code.kx.com/q/releases/ChangesIn3.1.md): Changes to V3.1 of kdb+ from the previous version - [3.2 Highlights](https://code.kx.com/q/releases/ChangesIn3.2.md): Changes to V3.2 of kdb+ from the previous version - [3.3 Highlights](https://code.kx.com/q/releases/ChangesIn3.3.md): Changes to V3.3 of kdb+ from the previous version - [3.4 Highlights](https://code.kx.com/q/releases/ChangesIn3.4.md): Changes to V3.4 of kdb+ from the previous version - [3.5 Highlights](https://code.kx.com/q/releases/ChangesIn3.5.md): Changes to V3.5 of kdb+ from the previous version - [3.6 Highlights](https://code.kx.com/q/releases/ChangesIn3.6.md): Changes to V3.6 of kdb+ from the previous version - [4.0 Highlights](https://code.kx.com/q/releases/ChangesIn4.0.md): Changes to V4.0 of kdb+ from the previous version - [4.1 Highlights](https://code.kx.com/q/releases/ChangesIn4.1.md): Changes to V4.1 of kdb+ from the previous version - [History](https://code.kx.com/q/releases/index.md): List of releases of kdb+ - [Withdrawn](https://code.kx.com/q/releases/withdrawn.md): The functions listed here have been withdrawn from q, and are listed here solely for the interpretation of old scripts. - [Astronomy](https://code.kx.com/q/wp/astronomy.md): Imports FITS data to kdb+, loads C functions and calculates recessional velocity - [C API for kdb+](https://code.kx.com/q/wp/capi/index.md): How to connect a C program to a kdb+ database - [Detecting card counters](https://code.kx.com/q/wp/card-counters/index.md): Using kdb+ event-stream processing analytics in real time to detect card counters in Blackjack - [Query optimization](https://code.kx.com/q/wp/columnar-database/index.md): Methods available to developers for optimizing queries to a kdb+ database - [Compression examples](https://code.kx.com/q/wp/compress/index.md): introduction to compression in kdb+, contributing factors to compression ratios and performance, and how the use of compressed data can affect performance - [Corporate actions](https://code.kx.com/q/wp/corporate-actions.md): Examines a kdb+ framework which can be used to apply corporate action adjustments on the fly to equity tick data - [Data loaders](https://code.kx.com/q/wp/data-loaders/index.md): A fast, efficient and scalable kdb+ framework for receiving large amounts of data from multiple sources in various formats - [Data management](https://code.kx.com/q/wp/data-management.md): Examines implementation options and data-management techniques in seven scenarios - [TP Log (data recovery)](https://code.kx.com/q/wp/data-recovery.md): Tickerplant logfiles can be replayed to recover service, even after they have been corrupted. - [ODBC3 and Tableau](https://code.kx.com/q/wp/data-visualization/index.md): Illustrates the flexibility with which kdb+ data can be accessed by Tableau using ODBC - [Predicting floods](https://code.kx.com/q/wp/disaster-floods/index.md): Machine-learning methods in q to predict flood susceptibility in an area and the time for a river to reach its peak height after a rainfall event. - [Disaster management](https://code.kx.com/q/wp/disaster-management/index.md): Deep-learning methods to classify tweets relating to flooding events – training a binary classifier to discern relevance; a categorical model to classify tweets into finer-grained buckets. - [Disaster recovery](https://code.kx.com/q/wp/disaster-recovery/index.md): Disaster recovery (DR) and failover concepts from the perspective of the gateway layer accessing a typical kdb+ tick system used in capital-markets applications - [Machine learning: Using embedPy to apply LASSO regression | kdb+ and q documentation](https://code.kx.com/q/wp/embedpy-lasso/index.md): From its deep roots in financial technology KX is expanding into new fields. It is important for q to communicate seamlessly with other technologies. The embedPy interface allows this to be done with Python. - [Exoplanets](https://code.kx.com/q/wp/exoplanets/index.md): The Transiting Exoplanet Survey Satellite (TESS) was launched in April 2018, with the objective of discovering new exoplanets in orbit around the brightest stars in the solar neighborhood - [FIX messaging](https://code.kx.com/q/wp/fix-messaging.md): A guide to working with FIX messages in kdb+, focusing primarily on capturing messages from an order-management system - [Foreign keys](https://code.kx.com/q/wp/foreign-keys.md): How foreign keys and linked columns may be established and applied in kdb+ databases, and a review of the advantages and penalties - [Gateway design](https://code.kx.com/q/wp/gateway-design/index.md): The most common technical challenges associated with gateways and the reasoning behind various design options - [An introduction to graphical interfaces for kdb+ using C# | kdb+ and q documentation](https://code.kx.com/q/wp/gui/index.md): Basics of using C# to open connections to kdb+ processes running on remote servers as well as setting up a basic API that will allow for authentication, error recovery and basic queries through an interface - [Historical database (HDB) analysis and maintenance](https://code.kx.com/q/wp/hdb-analysis/index.md) - [White papers](https://code.kx.com/q/wp/index.md): Index to technical white papers (formerly published as q for Gods) - [RDB intraday writedown](https://code.kx.com/q/wp/intraday-writedown/index.md): Compares two methods for dealing with insufficient RAM on a server, when a full day’s worth of data cannot be held in memory. - [Internet of Things with MQTT](https://code.kx.com/q/wp/iot-mqtt/index.md): MQTT is a messaging protocol for the Internet of Things (IoT). It was designed as an extremely lightweight publish/subscribe messaging transport. KX has released a MQTT interface with source code available on GitHub. The interface supports Linux, macOS, and Windows platforms. - [Guide to iterators](https://code.kx.com/q/wp/iterators/index.md): Iterators (formerly known as adverbs) are the primary means of iteration in q, and in almost all cases the most efficient way to iterate. - [Machine Learning in kdb+: k-Nearest Neighbor classification and pattern recognition with q | kdb+ and q documentation](https://code.kx.com/q/wp/machine-learning/index.md): How to implement a k-NN classification algorithm with kdb+, using tables and qSQL, and iterators to optimize the classification time - [Market depth](https://code.kx.com/q/wp/market-depth/index.md): A framework for aggregating market depth and managing multiple subscriptions, using FX data as an example - [Market fragmentation](https://code.kx.com/q/wp/market-fragmentation/index.md): An approach to the challenge of consolidating share price information for equities that trade on multiple venues. - [Multiple partitions](https://code.kx.com/q/wp/multi-partitioned-dbs/index.md): Storage and maintenance of financial equity options data in kdb+, with examples of possible ways to design and query these large databases efficiently. - [Multi-threading](https://code.kx.com/q/wp/multi-thread/index.md): How to use parallel processing in kdb+ processes, and what the limitations are - [An introduction to neural networks with kdb+ | kdb+ and q documentation](https://code.kx.com/q/wp/neural-networks/index.md): Implementation of a feedforward neural network in kdb+ - [Option pricing](https://code.kx.com/q/wp/option-pricing/index.md): Monte Carlo (MC) and Quasi-Monte Carlo (QMC) methods for pricing European and Asian options, with standard discretization and Brownian-bridge construction - [Order Book](https://code.kx.com/q/wp/order-book.md): Strategies for storing order-book data, and their implications for query performance - [Permissions](https://code.kx.com/q/wp/permissions/index.md): An introduction to permissioning in kdb+ without using LDAP or any other external entitlements system - [Distributed systems](https://code.kx.com/q/wp/query-interface.md): An interface similar to q for queries to kdb+ tables distributed across multiple systems, implemented in q, trading some q optimizations for convenience - [Query routing](https://code.kx.com/q/wp/query-routing/index.md): The design principle of the Connection Manager Load Balancer schematic whilst providing an asynchronous-only method of communication between processes. - [Query scaling](https://code.kx.com/q/wp/query-scaling.md): How to take advantage of multiple kdb+ query structures to achieve optimal query performance for large volumes of data - [RTEs (real-time engines)](https://code.kx.com/q/wp/rt-tick/index.md): How to build a custom real-time tick engine - [Signal processing](https://code.kx.com/q/wp/signal-processing/index.md): How statistical signal-processing operations can be implemented within q to remove noise, extract useful information, and quickly identify anomalies - [Socket sharding](https://code.kx.com/q/wp/socket-sharding/index.md): Set-up and use of socket sharding in kdb+, with several example scenarios - [Solace pub/sub](https://code.kx.com/q/wp/solace/index.md): Set-up and use of socket sharding in kdb+, with several example scenarios - [Space weather](https://code.kx.com/q/wp/space-weather/index.md): Examines the use of ML models to predict scintillation events, using historical GNSS data - [Surveillance latency](https://code.kx.com/q/wp/surveillance-latency/index.md): This paper investigates performance of four different alert analytic programming styles running at four different points of execution - [Trading surveillance](https://code.kx.com/q/wp/surveillance/index.md): Surveillance techniques using kdb+ to monitor algorithmic and high-frequency trading, with examples from the Australian financial markets - [Working with sym files](https://code.kx.com/q/wp/symfiles.md): What the sym file is, suggestions for table setup, the maintenance of the sym file and safety measures that can be taken to protect the sym file. - [Profiling](https://code.kx.com/q/wp/tick-profiling.md): Key factors that influence the performance and throughput of a kdb+ tickerplant, a methodology to profile its performance, and four key areas to control. - [Transaction-cost analysis](https://code.kx.com/q/wp/transaction-cost.md): Using kdb+to analyze transaction costs from high-frequency data that often overwhelms traditional database and event-processing systems - [Trend indicators](https://code.kx.com/q/wp/trend-indicators/index.md): Using kdb+ to produce trade analytics – indicators and oscillators traders commonly use to trigger buy/sell signals and clarify their picture of the market. - [Time-series simplification](https://code.kx.com/q/wp/ts-shrink/index.md): Two implementations of the Ramer-Douglas-Peucker algorithm for curve simplification applied to financial time-series data without distortion.