Browse Source

documentation

Steve Nyemba 3 years ago
parent
commit
69e0b4d946
1 changed files with 35 additions and 15 deletions
  1. 35 15
      README.md

+ 35 - 15
README.md

@@ -1,14 +1,31 @@
 # Introduction
 
-This project implements an abstraction of objects that can have access to a variety of data stores, implementing read/write with a simple interface against specific various data-sources. The supported data sources implement functionalities against :
+This project implements an abstraction of objects that can have access to a variety of data stores, implementing read/write with a simple and expressive interface. This abstraction works with **NoSQL** and **SQL** data stores and leverages **pandas**
 
-    - Rabbitmq-server
-    - Couchdb-server
-    - Mongodb-server
-    - Http Session : {csv,tab,pipe,sql}
-    - Disk{Reader|Writer} : csv, tab, pipe, sql on disk
+The supported data store providers :
+
+| Provider | Underlying Drivers | Description |
+| ---- | ---| ---- |
+| sqlite| Native SQLite|SQLite3|
+| postgresql| psycopg2 | PostgreSQL
+| redshift| psycopg2 | Amazon Redshift
+| netezza| nzpsql | IBM Neteeza
+| Files: CSV, TSV| pandas| pandas data-frame
+| Couchdb| cloudant | Couchbase/Couchdb
+| mongodb| pymongo | Mongodb
+| mysql| mysql| Mysql
+| bigquery| google-bigquery| Google BigQuery
+| mariadb| mysql| Mariadb
+| rabbitmq|pika| RabbitMQ Publish/Subscribe
+
+# Why Use Data-Transport ?
+
+Mostly data scientists that don't really care about the underlying database and would like to manipulate data transparently.
+
+1. Familiarity with **pandas data-frames**
+2. Connectivity **drivers** are included
+3. Useful for ETL
 
-Such an interface is used to facilitate data transport in and out of a store for whatever an application may need (log, session management, ...)
 
 ### Installation
 
@@ -21,23 +38,26 @@ Binaries and eggs will be provided later on
 
 ### Usage
 
-The basic usage revolves around a factory class (to be a singleton)
+In your code, perform the 
 
     import transport
     from transport import factory
     #
     # importing a mongo reader
     args = {"host":"<host>:<port>","dbname":"<database>","doc":"<doc_id>",["username":"<username>","password":"<password>"]}
-    mreader = factory.instance(type='mongo.MonoReader',args=args)
+    reader = factory.instance(provider='mongodb',doc=<mydoc>,db=<db-name>)
     #
-    # reading a document and executing a view
+    # reading a document i.e just applying a find (no filters)
     #
-    document    = mreader.read()
-    result      = mreader.view(name)
+    df    = mreader.read()  #-- pandas data frame
+    df.head()
+
     #
-    # importing a couchdb reader
-    args = {"url":"<http://host>:<port>","dbname":"<database>","doc":"<doc_id>","username":"<username>","password":"<password>"}
-    creader     = factory.instance(type='couch.CouchReader',args=args)
+    # reading from postgresql
+    
+    pgreader     = factory.instance(type='postgresql',database=<database>,table=<table_name>)
+    pg.read()   #-- will read the table by executing a SELECT
+    pg.read(sql=<sql query>)
     
     #
     # Reading a document and executing a view