Я ищу способ эффективной сериализации объектов Clojure в двоичный формат - т.е. не просто классическую сериализацию текста для печати и чтения.
Т.е. я хочу сделать что-то вроде:
(def orig-data {:name "Data Object"
:data (get-big-java-array)
:other (get-clojure-data-stuff)})
(def binary (serialize orig-data))
;; here "binary" is a raw binary form, e.g. a Java byte array
;; so it can be persisted in key/value store or sent over network etc.
;; now check it works!
(def new-data (deserialize binary))
(= new-data orig-data)
=> true
Мотивация такова: у меня есть несколько больших структур данных, которые содержат значительное количество двоичных данных (в массивах Java), и я хочу избежать накладных расходов на преобразование их в текст и обратно. Кроме того, я пытаюсь сохранить компактный формат, чтобы минимизировать использование пропускной способности сети.
Конкретные особенности, которые я хотел бы иметь:
Какой лучший / стандартный подход к этому в Clojure?