All Projects → rsvp → yserial

rsvp / yserial

Licence: other
NoSQL y_serial Python module – warehouse compressed objects with SQLite

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to yserial

Inquiry Deprecated
[DEPRECATED]: Prefer Room by Google, or SQLDelight by Square.
Stars: ✭ 264 (+1452.94%)
Mutual labels:  serialization, nosql
hocassian-people-neo4j
NoSQL可视化人脉图谱项目:非关系型数据库作为更符合人脑记忆的数据展现形式,在未来理论会成为应用界的主流,希望该项目能够成为推动HelpDesk、数据可视化、数据看板等IT基础能力持续降低上手门槛的起点。
Stars: ✭ 26 (+52.94%)
Mutual labels:  nosql
FlexBuffersSwift
Swift implementation of FlexBuffers - a sub project of FlatBuffers
Stars: ✭ 24 (+41.18%)
Mutual labels:  serialization
Cakebase
Cakebase is an asynchronous json database for nodejs.
Stars: ✭ 28 (+64.71%)
Mutual labels:  nosql
serdepp
c++ serialize and deserialize adaptor library like rust serde.rs
Stars: ✭ 70 (+311.76%)
Mutual labels:  serialization
gorm-mongodb
GORM for MongoDB
Stars: ✭ 58 (+241.18%)
Mutual labels:  nosql
iris
Lightweight Component Model and Messaging Framework based on ØMQ
Stars: ✭ 50 (+194.12%)
Mutual labels:  serialization
gradle-flatbuffers-plugin
Gradle plugin for generating code from Google FlatBuffers schemas
Stars: ✭ 20 (+17.65%)
Mutual labels:  serialization
sqlathanor
Serialization / De-serialization support for the SQLAlchemy Declarative ORM
Stars: ✭ 105 (+517.65%)
Mutual labels:  serialization
ZFFramework
cross-platform C++ application framework, do 80% work at 20% cost
Stars: ✭ 65 (+282.35%)
Mutual labels:  serialization
avro-serde-php
Avro Serialisation/Deserialisation (SerDe) library for PHP 7.3+ & 8.0 with a Symfony Serializer integration
Stars: ✭ 43 (+152.94%)
Mutual labels:  serialization
NoSQLDataEngineering
NoSQL Data Engineering
Stars: ✭ 25 (+47.06%)
Mutual labels:  nosql
simpledbm
SimpleDBM is an Open Source Multi-Threaded Embeddable Transactional Database Engine in Java.
Stars: ✭ 51 (+200%)
Mutual labels:  nosql
SafeParcel
Helper library and format description for SafeParcel, a version-agnostic parcelable serializer
Stars: ✭ 29 (+70.59%)
Mutual labels:  serialization
zkar
ZKar is a Java serialization protocol analysis tool implement in Go.
Stars: ✭ 435 (+2458.82%)
Mutual labels:  serialization
dubbo-hessian-lite
Hessian Lite for Apache Dubbo
Stars: ✭ 45 (+164.71%)
Mutual labels:  serialization
pony-capnp
Cap’n Proto plugin for generating serializable Pony classes. 🐴 - 🎩'n 🅿️
Stars: ✭ 19 (+11.76%)
Mutual labels:  serialization
serialization-parcelable
Android Parcelable support for the Kotlinx Serialization library.
Stars: ✭ 53 (+211.76%)
Mutual labels:  serialization
php-serializer
Serialize PHP variables, including objects, in any format. Support to unserialize it too.
Stars: ✭ 47 (+176.47%)
Mutual labels:  serialization
marshmallow-validators
Use 3rd-party validators (e.g. from WTForms and colander) with marshmallow
Stars: ✭ 24 (+41.18%)
Mutual labels:  serialization

README for yserial

Join the chat at https://gitter.im/rsvp/yserial

TL;DR single module file: yserial = serialization + persistance

In a few lines of Python code, compress and annotate Python objects into SQLite; then later retrieve them chronologically by keywords without any SQL. Highly useful NoSQL "standard" module for a database to store schema-less data.

It is based on key/value where the conceptual key is

 filename + table_name + primary_key + timestamp + notes

and the value is any reasonable object. We generally mean Python objects, but we include support for files (binary, image, etc.) and URL content (e.g. webpages). Python objects are strings, dictionaries, lists, tuples, classes, and instances. Objects are inserted into a hierarchy: database file, table within that database, row within table. Moreover, each object is annotated for reference by "notes" and automatically timestamped.

You are spared from explicitly spelling out many of the difficult protocol details: cursor/connection, SQL/DB-API implementation, serialization, compression, search algorithm, etc. -- for these are optimized to interact with speed, security, and concurrency -- yet handled transparently. And our module is faster than comparable approaches under PostgreSQL.

We highly recommend SQLite because it requires neither separate installation nor a server process; also, it uses single normal files (easy to backup or send), not an elaborate filesystem. Moreover, in comparison to similar applications with MySQL or PostgreSQL, SQLite is extremely fast and suits most purposes wonderfully. [The computing center at Harvard's math department asserts that yserial "provides a very reliable NoSQL interface for SQLite," see http://www.math.harvard.edu/computing/sqlite ]

The means for insertion, organization by annotation, and finally retrieval are designed to be simple to use. The notes effectively label the objects placed into the database. We can then later query the database, for example, by regex (regular expression) searching on notes, and placing the qualified objects in a dictionary. The keys of this dictionary correspond to the unique primary keys used in the database. We can thus use Python code to process the contents of this qualified dictionary, in effect, a data subset. If the objects in that dictionary are themselves dictionaries we are essentially dealing with schema-less data.

Other useful methods are available:

  • insert any external file (via infile). This is handy for working with thousands of image files.
  • insert anything on the web by URL (via inweb).
  • insert in batches by generator (via ingenerator). This can be used to rapidly store a series of computationally intense results for quick retrieval at a later time.

Installation: simply a single file

The latest development version of the module is y_serial_dev.py, whereas recent stable versions can be found under the release directory. There are no dependencies, other than standard issue Python modules.

     $ curl -kLO  https://git.io/y_serial_dev.py

REQUIREMENT: Python version 2.x where x is 5 or greater. Copy or symlink the y_serial module to where your Python can find it.

Documentation

The module includes the tutorial documentation within itself. And the source code contains verbose comments for developers. Our wiki has some useful tips.

But first checkout the ten-minute HOWTO tutorial at http://nbviewer.ipython.org/urls/git.io/yserial-HOWTO.ipynb

Contributing to yserial repository

Details are covered in CONTRIBUTING.md (which should appear when making a pull request). All feedback is welcome.

For real-time discussions, please go to:

Testing

Tests are contained within the module itself. The default database file db0 assigned in class Base presumes Linux top directory /tmp (change to suit your system) -- yserial is designed to operate cross-platform including Windows.

     import y_serial_dev as y_serial
     y_serial.tester()
     #        ^for the principal class Main
     #        testfarm is for the beta version, not yet in Main.
     #   Flip the DEBUG variable for verbose results. 

Memorable current links

Brief development history

Thanks so much to all who participated in this project over these long years. We truly appreciate your wonderful collaboration in developing our code. Acknowledgements

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].