Giter Club home page Giter Club logo

datahike-postgres's Introduction

replikativ CircleCI Gitter

Project homepage

Roadmap (suggestions)

0.3.0

  • Investigate JS side integration of http://y-js.org/
  • Investigate integration with similar systems, eg. IPFS pubsub
  • Split middleware from replicated datatype implementations
  • Improve network IO library kabel (Android support) [DONE]
  • Move hashing into fetch middleware to simplify parallelization. [DONE]
  • Experimental automatic Gossip protocol
  • Experimental Snapshot Isolation
  • Build reasonable small support libraries to partition application data for efficient client side consumption, Datomic and Datascript. Look into datsync etc.
  • Add a monitoring interface as a cljs library with basic web views for applications to communicate their synching state to the user in a uniform way. [DONE]
  • Introduce clojure.spec to stage/... API.

0.4.0

  • Authentication with signed public-private key signatures
  • Model some level of consistency between CRDTs, probably Snapshot Isolation, to compose CRDTs. (NMSI, Antidote, research)
  • Implement more useful CRDTs (counter, vector-clock, ...) from techreview and other papers and ship by default.

0.5.0

  • Use p2p block distribution similar to BitTorrent for immutable values (similar to blocks)
  • support WebRTC for value distribution similar to BitTorrent
  • Java bindings

Long-term (1.0.0)

  • Encryption of transaction with CRDT key encrypted by userkeys, public key schema, explore pub/private key solutions. Maybe metadata signing can work (slowly) on a DHT?
  • Distribute bandwidth between CRDTs.
  • Negotiate middlewares with versioning.
  • Implement diverse prototypes, from real-time to "big-data".

Contributors

  • Konrad Kuehne
  • Christian Weilbach

Support

If you would like to get some commercial support for replikativ, feel free to contact us at lambdaforge.

License

Copyright © 2013-2018 Christian Weilbach, Konrad Kühne

Distributed under the Eclipse Public License, the same as Clojure.

datahike-postgres's People

Contributors

jsmassa avatar kordano avatar timokramer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

datahike-postgres's Issues

create-database should return boolean

Similar to datomic's api, create-database should return boolean value, true if database is created and false if database was not created (due to it already existing etc). Now it throws an uncaught runtime exception.

create-database causes error on lein uberjar

I have a very simple project that i generated using luminus. The project is basically empty but i have this file:

(ns clan.db.core
  (:require [datahike.api :as d]
            [datahike-postgres.core]
            [mount.core :as mount]))

(def datahike-cfg {:backend  :pg
                   :host     "localhost"
                   :port     5432
                   :username "postgres"
                   :password "postgres"
                   :path     "/clan"})

(d/create-database datahike-cfg)

(mount/defstate conn
                :start (d/connect datahike-cfg))

When running lein uberjar i get the following error:

Compiling clan.db.core
Syntax error macroexpanding at (core.clj:13:1).
Execution error (ExceptionInfo) at konserve-pg.core/new-pg-store$fn$state-machine$fn$fn (core.clj:153).
Cannot connect to PostgreSQL.

Full report at:
/tmp/clojure-3147988878089586605.edn
Compilation failed: Subprocess failed

If i remove the (d/create-database ...) line the project will compile just fine. My question is why would that function be called on compilation? Any help would be much appreciated.

Relationship between row counts and entities

Hi,
I'm looking to test datahike on a small heroku postgres app and I'm wondering if there's a relationship between entity count and row's created?

The reason I'm asking is heroku's basic databases have row limits and I just don't want to just hit them.

An interesting option would be to use PostgreSQL with a foreign data wrapper + RocksDB

Hello,

I think this solution has potential because it provides a single interface for accessing two types of data stores: relational and key value.

PostgreSQL has added support for custom storage engines so things should improve in the future.
In the mean time, the foreign data wrapper API allows you to use other types of storage in PostgrSQL.

The people from VidarDB created an extension to use RocksDB (LevelDB fork) .

https://github.com/vidardb/PostgresForeignDataWrapper

Can't run example on README

My configuration for PostgreSQL is the following:

(def cfg {:store {:backend :pg
                  :host "localhost"
                  :port 5432
                  :user "postgres"
                  :password ""
                  :dbname "dhike"}})

As I'm currently running locally, I don't need a password. This is printed on the console when I try to connect to Datahike:

INFO: No default configuration found for :pg
INFO: Not configuration spec found for :pg
WARNING: JDBC URL must contain a / at the end of the host or port: jdbc:postgresql://localhost:5432

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.