I attended the “JSON support in MySQL 5.7” session given by Evgeny Potemkin and Manyi Lu from Oracle. This was my last session of the conference and my head was swimming with knowledge at this point. In 5.7 they are adding json data type, json functions and the ability to index json data. Before your options were to store json as either text or binary but you had to manage all the validation, parsing, etc. The new JSON datatype is
- optimized for read intensive workload
- parse and validation on insert only
- dictionary (sorted object keys, fast access to array cells by index)
- In-place updated
- Smart size 64K & 4G
- UTF8 encoding
- Supports all native JSON types (numer, string, bool, object, arrays, etc.)
- Also supports Date, time, datetime, timestamp, and others
They gave some sample inserts that I will need to grab from their slides. JSON comparator has polymorphic behavior and provides seamless and consistent comparison. So you can compare JSON to JSON or JSON to SQL. Different data types will always be non-equal so no automatic type conversion. They then showed a sample select using the JSON datatype. They also have introduced the concept of JSON path which is a way to identify how to get JSON data. The details are on the slides and it was too much to record so I will have to grab it later for the developers. But $ is used for the document root, [] define an array, and they use * for a search. Other functions
- JSN_VALID()
- JSN_TYPE()
- JSN_KEYS()
- JSN_LENGTH()
- JSN_DEPTH()
- JSN_CONTAINS_PATH()
- JSN_REMOVE()
- JSN_APPEND()
- JSN_SET()
- JSN_INSERT()
- JSN_REPLACE()
- JSN_MERGE()
- JSN_ARRAY()
- JSN_OBJECT()
- JSN_EXTRACT()
- JSN_SEARCH()
- JSN_QUOTE()
- JSN_UNQUOTE()
They then showed how you can use a select to return the data as JSON using these function (again need to refer to slides). They will support both Stored and Virtual indexes on JSON data. Primary index must be stored. Stored indexes can be BTREE, FTs, or GIS and Virtual can only be BTREE. They plan to add Instant ALTER to Virtual indexes soon. They have a bunch more with JSON on the roadmap like Full-text indexing and GIS indexes.
[…] JSON support in MySQL 5.7 […]
LikeLike