[Herddb-dev] R: Herddb entry on dbdb.io

Enrico Olivelli eolivelli at gmail.com
Tue Aug 27 17:43:04 CEST 2019


Il mar 27 ago 2019, 17:07 Alessandro Luccaroni - Diennea <
alessandro.luccaroni at diennea.com> ha scritto:

> Merged your last notes with my previous updated list:
>
>
>
> *Checkpoints =*  "Consistent" "Blocking" (HerdDB supports periodic
> checkpoints, every 15 minutes by default. At checkpoints, active page ids
> are written to disk with their current log sequence numbers. At the same
> time all dirty pages are discarded and their records used to build new
> pages, among other new or updated records. Checkpoints can be tuned to be
> either as fast as possible or as clean as possible. Fast checkpoints block
> write operations for less time, whereas clean checkpoints optimize memory
> usage (fewer dirty pages left in memory) and speeds up searches (fewer
> dirty pages left on disk).) (
> https://github.com/diennea/herddb/wiki/Data-storage
> https://github.com/diennea/herddb/wiki/Checkpoints-configuration)
>
> *Concurrency Control* = " Deterministic Concurrency Control" (Before
> accessing records, clients acquire read or write locks. Every transaction
> that modifies a record holds the new data in a local buffer copy, and this
> new version of the record is not visible to other transactions until that
> one is committed (Pessimistic Row Level Locking).)
>
> *Foreign Keys =* "Not Supported" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> *Data Model =* "Relational"  (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> *Indexes =*  "B-Link" "BRIN" (Block Range Index implementation is not
> strictly speaking the official BRIN implementation you can find in
> literature, so we can talk about “BRIN-like” indexes)
>
> *Isolation Levels =* "Read Committed" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> *Joins =* "Nested Loop Join" "Sort-Merge Join" "Hash Join" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> *Logging =* "Physical Logging" (Build upon Apache BookKeeper)
>
> *Query Compilation =* "Not Supported"
>
> *Query Execution =* "Tuple-at-a-Time Mode"
>
> *Query Interface =* "SQL" "Command-line/Shell" "Custom API" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> *Storage Architecture =* "Disk-oriented" (
> https://github.com/diennea/herddb/wiki/Data-storage)
>
> *Storage Model =* "N-ary Storage Model (Row/Record)" (HerdDB’s internal
> architecture stores a table as a set of key-value entries. This is
> implemented in Java by a very large map of binary data. Each row is
> translated from column-oriented to key-value format by tearing apart the
> “primary key” part (one or multiple columns) from the “value” part (other
> columns).) (https://github.com/diennea/herddb/wiki/Data-storage)
>
> *Storage Organization =* "Log-structured" (Built upon Apache BookKeeper.
>
This is partially true, I won't say that




At any given time, some part of data is stored in a memory buffer and some
> other on disk. No data will be lost on JVM crashes, because transaction
> logs are the source-of-truth and the whole database can be recovered from
> them plus a checkpoint. When a row is stored on disk it is assigned to a
> "data page"; on its first mutation, it is detached from its data page and
> that page is marked as “dirty”. At checkpoints, all dirty pages are
> dismissed and their records used to build new pages, among other new or
> updated records. Records modified/inserted/deleted in the scope of a
> transaction are never written to disk and they are not present in the main
> buffer until that transaction is committed, so that there always is a
> consistent and committed data snapshot. Every transaction uses its own
> local buffer to store temporary data.) (
> https://github.com/diennea/herddb/wiki/Data-storage) (
> https://github.com/diennea/herddb/wiki/Data-storage)
>
> *Stored Procedures =* "Not Supported" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> *System Architecture =*  "Shared-Nothing" (Built upon Apache Zookeeper
> and Apache BookKeeper.) (
> https://github.com/diennea/herddb/wiki/Replication)
>
> *Views =* "Not Supported" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
>
>
> What do you think?
>
> Ale
>
>
>
> *Da:* herddb-dev-bounces at lists.herddb.org <
> herddb-dev-bounces at lists.herddb.org> *Per conto di *Enrico Olivelli
> *Inviato:* martedì 27 agosto 2019 17:00
> *A:* Herddb developers <herddb-dev at lists.herddb.org>
> *Oggetto:* Re: [Herddb-dev] Herddb entry on dbdb.io
>
>
>
> Alessandro
>
> Overall looks good
>
>
>
> Last answers inline below
>
>
>
> Enrico
>
> Il gio 27 giu 2019, 16:09 Alessandro Luccaroni - Diennea <
> alessandro.luccaroni at diennea.com> ha scritto:
>
> Hi all,
>
> I was thinking about sending an email to Carnagie Mellon Database Group
> about the entry of Herddb on https://dbdb.io/db/herddb
>
>
>
> I’ve grouped up a bunch of information about Herd, can you check if
> everything seems correct?
>
>
>
> Checkpoints =  "Consistent" (
> https://github.com/diennea/herddb/wiki/Data-storage
> https://github.com/diennea/herddb/wiki/Checkpoints-configuration)
>
> Foreign Keys = "Not Supported" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> Data Model = "Relational"  (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> Indexes =  "B-Link" "BRIN" (
> https://github.com/diennea/herddb/blob/master/herddb-utils/src/main/java/herddb/index/blink/BLink.java
> https://github.com/diennea/herddb/tree/master/herddb-core/src/main/java/herddb/index/brin
> )
>
> Isolation Levels = "Read Committed" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> Joins = "Nested Loop join" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> Query Interface = "SQL" "Command-line/Shell" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> Storage Architecture = "Hybrid"
>
> Storage Model = "Key/Value" "N-ary Storage Model (Row/Record)" (
> https://github.com/diennea/herddb/wiki/Data-storage)
>
> Storage Organization = "Log-structured" "Heaps" (
> https://github.com/diennea/herddb/wiki/Data-storage)
>
> Stored Procedures = "Not Supported" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
> System Architecture =  "Shared-Nothing" (
> https://github.com/diennea/herddb/wiki/Replication)
>
> Views = "Not Supported" (
> https://github.com/diennea/herddb/wiki/SQL-Support)
>
>
>
> I’m still in doubt about some other definition, see below with some
> “option” using the dbdb.io “nomenclature”:
>
>
>
> “Concurrency Control”
>
> 1)      Deterministic Concurrency Control
>
>
>
> This one is the best
>
> 2)      Multi-version Concurrency Control (MVCC)
>
> 3)      Optimistic Concurrency Control (OCC)
>
> 4)      Timestamp Ordering
>
> 5)      Two-Phase Locking (Deadlock Detection)
>
> 6)      Two-Phase Locking (Deadlock Prevention)
>
>
>
> “Query Compilation”
>
> 1)      Code Generation
>
> 2)      JIT Compilation
>
> 3)      Not Supported
>
>
>
>
>
> This is better
>
> 4)      Stored Procedure Compilation
>
>
>
> “Query Execution”
>
> 1)      Materialized Model
>
> 2)      Tuple-at-a-Time Model
>
>
>
> This one
>
> 3)      Vectorized Model
>
>
>
> But we could also use some terminology that is not currently cover (for
> example currently there are no DBMS mapped with either BRIN or B-Link
> indexes, but we support them).
>
>
>
> *Alessandro Luccaroni*
> Platform Manager @ Diennea - MagNews
> Tel.: (+39) 0546 066100 Int. 924 - Mob.: (+39) 393 7273519
> Viale G.Marconi 30/14 - 48018 Faenza (RA) - Italy
>
>
>
>
> ------------------------------
>
>
> CONFIDENTIALITY & PRIVACY NOTICE
> This e-mail (including any attachments) is strictly confidential and may
> also contain privileged information. If you are not the intended recipient
> you are not authorised to read, print, save, process or disclose this
> message. If you have received this message by mistake, please inform the
> sender immediately and destroy this e-mail, its attachments and any copies.
> Any use, distribution, reproduction or disclosure by any person other than
> the intended recipient is strictly prohibited and the person responsible
> may incur in penalties.
> The use of this e-mail is only for professional purposes; there is no
> guarantee that the correspondence towards this e-mail will be read only by
> the recipient, because, under certain circumstances, there may be a need to
> access this email by third subjects belonging to the Company.
>
> _______________________________________________
> herddb-dev mailing list
> herddb-dev at lists.herddb.org
> http://lists.herddb.org/mailman/listinfo/herddb-dev
>
>
> ------------------------------
>
> CONFIDENTIALITY & PRIVACY NOTICE
> This e-mail (including any attachments) is strictly confidential and may
> also contain privileged information. If you are not the intended recipient
> you are not authorised to read, print, save, process or disclose this
> message. If you have received this message by mistake, please inform the
> sender immediately and destroy this e-mail, its attachments and any copies.
> Any use, distribution, reproduction or disclosure by any person other than
> the intended recipient is strictly prohibited and the person responsible
> may incur in penalties.
> The use of this e-mail is only for professional purposes; there is no
> guarantee that the correspondence towards this e-mail will be read only by
> the recipient, because, under certain circumstances, there may be a need to
> access this email by third subjects belonging to the Company.
> _______________________________________________
> herddb-dev mailing list
> herddb-dev at lists.herddb.org
> http://lists.herddb.org/mailman/listinfo/herddb-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.herddb.org/pipermail/herddb-dev/attachments/20190827/694b2d02/attachment-0001.html>


More information about the herddb-dev mailing list