Keep binary objects in a hash-indexed table. Remove redundant fields.

This commit is contained in:
JoelKatz
2011-11-14 10:39:29 -08:00
parent b4198029af
commit 2c45e16d5a

View File

@@ -1,40 +1,23 @@
CREATE TABLE Transactions ( -- trans in all state
CREATE TABLE Transactions ( -- transactions in all states
TransID BLOB PRIMARY KEY,
NodeHash BLOB,
FromName BLOB, -- 20 byte hash of pub key
FromPubKey BLOB,
FromID BLOB, -- 20 byte hash of pub key
FromSeq BIGINT UNSIGNED, -- account seq
DestName BLOB, -- 20 byte hash of pub key
Ident BIGINT,
SourceLedger BIGINT UNSIGNED, -- ledger source expected
Signature BLOB,
LedgerCommited BIGINT UNSIGNED, -- 0 if none
Status VARCHAR(12) NOT NULL
FromLedger BIGINT UNSIGNED,
ToID BLOB, -- 20 byte hash of pub key
FirstSeen TEXT, -- time first seen
CommitSeq BIGINT UNSIGNED, -- ledger commited to, 0 if none
Status VARCHAR(1) -- (N)ew, (A)ctive, (C)onflicted, (D)one, (H)eld
);
CREATE INDEX TransHashSet ON Transactions(LedgerCommited, NodeHash);
CREATE TABLE PubKeys ( -- holds pub keys for nodes and accounts
Hash BLOB PRIMARY KEY,
ID BLOB PRIMARY KEY,
PubKey BLOB NOT NULL
);
CREATE TABLE AccountStatus ( -- holds balances and sequence numbers
AccountName BLOB, -- 20 byte hash
Balance BIGINT UNSIGNED,
Seq BIGINT UNSIGNED,
FirstLedger BIGINT UNSIGNED,
LastLedger BIGINT UNSIGNED -- 2^60 if still valid
);
CREATE UNIQUE INDEX CurrentStatus ON AccountStatus(AccountName, LastLedger);
CREATE TABLE Ledgers ( -- closed ledgers
LedgerHash BLOB PRIMARY KEY,
LedgerSeq BIGINT UNSIGNED,
@@ -42,30 +25,13 @@ CREATE TABLE Ledgers ( -- closed ledgers
FeeHeld BIGINT UNSIGNED,
AccountSetHash BLOB,
TransSetHash BLOB,
FullyStored VARCHAR(1), -- all data in our db
Status VARCHAR(1)
FullyStored VARCHAR(1), -- all data is in our db
Status VARCHAR(1) -- (A)ccepted, (C)ompatible, (I)ncompatible
);
CREATE INDEX SeqLedger ON Ledgers(LedgerSeq);
CREATE TABLE AccountSetHashNodes (
LedgerSeq BIGINT UNSIGNED,
NodeID BLOB,
Hashes BLOB -- 32 hashes, each 20 bytes
);
CREATE UNIQUE INDEX FindAccountHashNodes ON AccountSetHashNodes(LedgerSeq, NodeID);
CREATE TABLE TransSetHashNodes (
LedgerSeq BIGINT UNSIGNED,
NodeID BLOB,
Hashes BLOB -- 32 hashes, each 20 bytes
);
CREATE UNIQUE INDEX FindTransHashNodes ON TransSetHashNodes(LedgerSeq, NodeID);
CREATE TABLE LedgerConfirmations (
LedgerSeq BIGINT UNSIGNED,
@@ -74,7 +40,7 @@ CREATE TABLE LedgerConfirmations (
Signature BLOB
);
CREATE INDEX SeqLedgerConf ON LedgerConfirmations(LedgerSeq);
CREATE INDEX LedgerConfByHash ON LedgerConfirmations(LedgerHash);
CREATE TABLE TrustedNodes (
@@ -86,23 +52,27 @@ CREATE TABLE TrustedNodes (
CREATE TABLE KnownNodes (
Hanko BLOB PRIMARY KEY,
LastSeen TEXT, -- YYYY-MM-DD HH:MM:SS.SSS
LastIP BLOB, -- IPv4 or IPv6
LastPort BIGINT UNSIGNED,
HaveContactInfo VARCHAR(1),
ContactObject BLOB
);
CREATE TABLE ByHash ( -- used to synch nodes
CREATE TABLE CommittedObjects ( -- used to synch nodes
Hash BLOB PRIMARY KEY,
ObjType CHAR(1) NOT NULL,
LedgerIndex BIGINT UNSIGNED, -- 2^60 if valid now, 0 if none
ObjType CHAR(1) NOT NULL, -- (L)edger, (T)ransaction, (A)ccount node, transaction (N)ode
LedgerIndex BIGINT UNSIGNED, -- 0 if none
Object BLOB
);
CREATE INDEX ObjectLocate ON CommittedObjects(LedgerIndex, ObjType);
CREATE TABLE LocalAccounts ( -- wallet
Hash BLOB PRIMARY KEY,
CurrentBalance BIGINT UNSIGNED,
ID BLOB PRIMARY KEY,
Hash BLOB,
Seq BIGINT UNSIGNED, -- last transaction seen/issued
Balance BIGINT UNSIGNED,
LedgerSeq BIGINT UNSIGNED, -- ledger this balance is from
KeyFormat TEXT, -- can be encrypted
PrivateKey BLOB
PrivateKey BLOB,
Comment TEXT
);