Hey gui, ArangoDB is mostly-memory. All indexes (except for the type "persistent") are kept in memory and need to rebuilt on restart. This means the indexes need to fit into the main memory, otherwise the operating system will start to swap and performance degrades. There has to be free memory for (partially) loading collections and to construct query results as well.
The data is persisted to mass storage (disk / flash drive). By default, it doesn't wait until the data is fully synced. There is an optional waitForSync parameter to forcefully wait for synchronization, which can be set per collection and query. It will decrease performance depending on how fast your mass storage is, but gives you additional security (e.g. for banking transactions). If you don't want the data to be synced at all, you may create a volatile collection. The collection itself will survive unloads and restarts, but the data will be kept in-memory only and be lost on these events. You can use the isVolatile option to use certain collections as cache, i.e. for data that can easily be computed again after a restart and syncing it to disk would only slow things down (performance gain). To use ArangoDB as key/value store means to use the default primary index only, a lookup by (hash) key. The values you store are always (JSON) documents. They can be arbitrarily structured. You may define secondary indexes on certain attributes, but it then no longer classifies as key/value store, but document store (the extra indexes have to look at the value-part, which means it is no longer treated opaque). There are no bitwise operations, but if you really require them, they can be easily added using AQL user-defined functions. I would like to hear what you would like to use them for. -- You received this message because you are subscribed to the Google Groups "ArangoDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
