BoxLang 🚀 A New JVM Dynamic Language Learn More...
The DB Field compression extension for Preside aims to deliver an
extremely straight forward way of compressing data for storage in
databases. Data will automatically be stored in a compressed format
and automatically decompressed when read back from the database. Just
add compress=true
to your property definitions in your
Preside objects.
box install preside-ext-field-compression
All that is required is to add the compress=true
attribute to any object properties whose data you wish to be
compressed. For example:
property name="email_content" type="string" dbtype="longtext" compress=true;
This software extension should be considered ALPHA and has not yet been used in a production environment. Please always thoroughly test before use.
Another, arguably preferable, approach here would be to write compressed content to a separate file store, and store only the path to the file. This will prevent the size of your database increasing, but potentially give you increased code and infrastructure complexity.
Also, if using InnoDB, entire row compression can be enabled. See the MySQL documentation for details.
If we were to store the content in binary
format,
without base64 encoding, we would be able to get better performing
compression. We have currently chosen to to this to decrease
implementation complexity. i.e. you can take an existing dataset and
start compressing new data, without the need to alter your data model.
One potential feature to improve this would be to detect the database
field type and only convert to base64 when it is a non
blob
field. Pull requests welcome!
Contribution in all forms is very welcome. Use Github to create pull requests for tests, logic, features and documentation. Or, get in touch over at Preside's slack team and we'll be happy to help and chat: https://presidecms-slack.herokuapp.com/.
$
box install preside-ext-dbfield-compression