5 ms·
Hi everyone, I have been iterating a startup since the start of the year. And I'm using Clojure for everything I do. The first product was a ledger service, b
by andriosr 6y ago
Hi everyone,
I have been iterating a startup since the start of the year. And I'm using Clojure for everything I do.
The first product was a ledger service, but it ended up not fitting well as a managed service. We pivoted to a different idea and decided to open-source the ledger project.
It brings years of fintech experience, with the most common problems faced at scale for a ledger solved into the design.
I hope this will be helpful to some of the companies that are struggling with this kind of system.
Let me know if you have any questions :)
- bmh100 6y agoWhy did you go with a non-relational database?
- andriosr 6y agoInteresting question. No-SQL doesn't mean non-relational. DynamoDB is a relational database. It's up to you on how you design the table to accommodate your relations. This is a great presentation about this: https://youtu.be/6yqfmXiZTlM?t=1447 https://youtu.be/6yqfmXiZTlM?t=1447
- nagyf 6y agoDynamoDB is a key-value store. Key-value stores are not relational databases [1] The link you posted is a really good resource for someone who wants to start using DynamoDB though. [1] - https://aws.amazon.com/nosql/key-value/ https://aws.amazon.com/nosql/key-value/
- andriosr 6y agoYou're right. DynamoDB is not a relational database. But data in DynamoDB can be relational just as in a regular relational database: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-relational-modeling.html https://docs.aws.amazon.com/amazondynamodb/latest/developerg...
- outworlder 6y agoThat's really stretching the definition of a 'relational database'. You can create relationships on flat text files. It doesn't mean that you have a relational database now.
- Scarbutt 6y agoMany have fallen for that marketing video stunt and later regret it.
- smcnally 6y agoSequence has interesting applications for longer-term work I'm on, and/but I'm Baader-Meinhoffing [0] re more-immediate small-biz accounting ledger needs: I spent a good chunk of yesterday in gnu-cash and Frappe books [1] working to import/tag/script Chart of Accounts and transaction info from two banks while aiming to avoid (new-to-me) UI, code base, or Generally Accepted Accounting Principles rabbit holes. Sequence is clearly an API and I ought stick with consumer packages @ immediate needs. I'll spin up the container to check it out in general; Please let me know if I'm mistaken / you recommend specifics it'd be helpful for me to check out and feed back on - [0] - https://en.m.wikipedia.org/wiki/List_of_cognitive_biases#Frequency_illusion https://en.m.wikipedia.org/wiki/List_of_cognitive_biases#Fre... [1] - https://github.com/frappe/books https://github.com/frappe/books
- andriosr 6y agoYou're right. Sequence is a ledger API. These tools will give you higher abstractions on top of their internal ledgers. I think you are on the right track. If you want something extremely simple maybe the Ledger CLI [0] is worth looking at. Try to leverage these higher level abstractions. You don't need deep accounting understanding to import/tag/script a few transactions. [0] https://www.ledger-cli.org/ https://www.ledger-cli.org/
- elcritch 6y agoNice clean code! Thanks for open sourcing. I was a bit hoping to see how you were calculating amortization/interest charges in Clojure, but it appears to be only a pure ledger. Out of curiosity, were you using hashing to verify transaction chains? I saw code for MD5 hashes, but not where it was used.
- andriosr 6y agoThanks! I have interesting ideas for amortization/interests, maybe they can get added at some point. Yes, the hashes are the ids used for Avoiding double-spending along with dynamodb conditional put. I’m on the phone now, will follow up with code once I get to the computer