Building Databases

=== ORM Standards / Best Practices ===

Hibernate / JPA are the “global standard” but Japanese engineers usualy use MyBatis or some other framework that has raw SQL files.

The other team members do not see any issue with not using Hibernate / JPA or other ORM technologies. As long as DAO are being used and identity and singularity are preserved, there is no need to move to something like Hibernate just for the sake of adhering to some perceived “global standard”.

An example story was given of a company with all of its business logic embedded into their database. They had a 1 hour SLA that resulted in significant losses when they were unable to scale the application to meet increased need.

DEF: “temporal”: like GIT or HG, you always have a full audit trail and you can run arbitrary queries against the DB as it was at any specific time in the past. (You *can* throw away data if you want.)

You can stream events from the DB if needed.

other features:

— always replicated (minimum setup is 3 replicas w/ 3 partitions)

— all JSON API

— distributed consistent database

The Temporal nature makes updates concurrently easy but they also need to implement CaS.

http://cs.yale.edu/homes/thomson/publications/calvin-sigmod12.pdf

“I code in Scalla but I am not a Scala developer”

DEF: Scala developer: rabid Scala fan-boy/girl

So why Scala ?
answer: one of the founders (Matt) is a “Scala developer”.