[HN Gopher] Show HN: Shared - Triptych for data exchange and per...
___________________________________________________________________
Show HN: Shared - Triptych for data exchange and persistence
Author : alexrustic
Score : 11 points
Date : 2022-09-08 14:06 UTC (8 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| alexrustic wrote:
| Hi HN !
|
| I'm Alex, a tech enthusiast who likes to build stuff from
| scratch. Often my programs have data to store or a configuration
| file to read and/or edit. Therefore, I design relational
| databases [1] and write SQL queries to manage complex data with
| relationships, and for other needs, I used to do unmaintainable
| hacks (custom file formats) with plain old files. But that was
| before I discovered Pickle [2], the Python data serialization
| module. A simple way to store a representation of memory-living
| data collections on local disk.
|
| Therefore, Pickle became my favorite way to store data, until one
| day I needed to exchange data with another program written in
| another language. Pickle is Python-specific by the way. Due to
| this embarrassing situation, I needed to find a way to "replace"
| Pickle. The new method should be language-agnostic.
|
| CSV [3], INI file [4] and JSON [5] respectively entered the room.
|
| As an open standard file format with a formal specification, JSON
| sounds very serious. The Internet speaks in JSON [6]. Therefore,
| I adopted JSON. So at this point, for my personal projects, I had
| SQLite for interaction with relational databases, files to store
| binary data, and JSON for everything else. But one thing is
| missing: a single tool to unify these APIs under the same
| umbrella, and so with a single installation I could do data
| persistence and exchange wherever I want.
|
| Instead of one, for aesthetic reasons, I built two libraries:
| Litedao for SQL related stuff and Shared for data collections
| (dict [7], set, list) and binary data. Litedao was designed to
| use SQLite and Shared to use JSON and files. I had from my point
| of view a smooth programmer experience when it came to the data
| of my personal programs. But since I need SQL less than JSON, the
| Litedao library caught my attention less. Therefore, more bugs
| have been fixed in Shared and more functionalities have been
| added.
|
| Due to this situation, I decided to integrate Litedao into Shared
| so that it could get more attention from me. It worked !
| Therefore, Shared becomes a lightweight library for data exchange
| and persistence that smoothly handles collections (dict, list,
| set), binary data, and SQL queries. For aesthetic and functional
| reasons, Shared is a triptych whose classes share similar
| interfaces: Document, Dossier, and Database. The Document class
| allows individual access to files that are likely to be edited
| manually by a human, example: a configuration file. The Dossier
| class stores collections and binary data in a dossier without
| bothering the programmer about how the data is actually saved.
| The Database class allows interaction with SQLite databases.
|
| Among other functionalities, there is a command-line interface
| for exchanging data between programs, Autosave mode, Readonly
| mode, and Temporary Data mode.
|
| My project, still in Beta, is written in Python and I'm still
| working on it while using it intensively. Thanks for reading, let
| me know if you have any feedback and feel free to ask questions.
|
| [1]
| https://www3.ntu.edu.sg/home/ehchua/programming/sql/Relation...
|
| [2] https://docs.python.org/3/library/pickle.html
|
| [3] https://en.wikipedia.org/wiki/Comma-separated_values
|
| [4] https://en.wikipedia.org/wiki/INI_file
|
| [5] https://en.wikipedia.org/wiki/JSON
|
| [6] https://stackoverflow.blog/2022/06/02/a-beginners-guide-
| to-j...
|
| [7]
| https://docs.python.org/3/tutorial/datastructures.html#dicti...
___________________________________________________________________
(page generated 2022-09-08 23:02 UTC)