11. A system for compressing objects, comprising: at least one hardware processor that: receives a request to write a first object including a first key and a first value, wherein the first object is of a given type; receives a request to write a second object including a second key and a second value, wherein the second object is of the given type; classifies the first object to a compression dictionary according to at least one rule based on a value of the first object and/or the key of the first object; classifies the second object to the compression dictionary according to at least one rule based on a value of the second object and/or the key of the second object; and compresses the first object and the second object based on the compression dictionary; identifies first matching patterns in a pair of objects; determines if the number of first matching patterns exceeds a first threshold; when the number of first matching patterns is determined to exceed the first threshold, selects an object from the pair of objects and identifying second matching patterns in the selected object and the compression dictionary; determines if the number of second matching patterns exceeds a second threshold; and when the number of second matching patterns is determined to exceed the second threshold, assigns the pair of objects to the compression dictionary.
13. The system of claim 11 , wherein the at least one hardware processor also writes the first object to an in-memory, non-relational data store as an uncompressed object before the first object is compressed, and overwrites the uncompressed object with a compressed form of the first object when the first object is compressed.