Bitcoin Forum
April 25, 2024, 11:31:14 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: NuDB: A Key/Value Store For Decentralized Systems  (Read 1709 times)
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
March 28, 2015, 01:58:32 AM
 #1

I developed this embedded database for Ripple:

NuDB: A Key/Value Store For Decentralized Systems
https://github.com/vinniefalco/Beast/tree/master/beast/nudb

Fetch performance is outstanding, and remains constant no matter how big the database. It uses an on-disk hash table so the database needs to be on an SSD drive. It has journaling so it resists corruption on power failure. It supports POSIX and Win32 native APIs.

LevelDB, and RocksDB turned out to be bad solutions for us because as the database grows the performance goes down. And those databases require increasing amounts of memory. So NuDB is designed specifically for our use case.

Could Bitcoin or other related software benefit from this? If there is sufficient interest I might put it in its own repository. The code is headers-only (like boost), except for the unit tests.
1714044674
Hero Member
*
Offline Offline

Posts: 1714044674

View Profile Personal Message (Offline)

Ignore
1714044674
Reply with quote  #2

1714044674
Report to moderator
1714044674
Hero Member
*
Offline Offline

Posts: 1714044674

View Profile Personal Message (Offline)

Ignore
1714044674
Reply with quote  #2

1714044674
Report to moderator
1714044674
Hero Member
*
Offline Offline

Posts: 1714044674

View Profile Personal Message (Offline)

Ignore
1714044674
Reply with quote  #2

1714044674
Report to moderator
Transactions must be included in a block to be properly completed. When you send a transaction, it is broadcast to miners. Miners can then optionally include it in their next blocks. Miners will be more inclined to include your transaction if it has a higher transaction fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
samson
Legendary
*
Offline Offline

Activity: 2097
Merit: 1068


View Profile
March 30, 2015, 10:44:45 AM
 #2

Well it looks interesting, how does it compare to sqlite for a few million records ?
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
March 30, 2015, 09:17:39 PM
 #3

Well it looks interesting, how does it compare to sqlite for a few million records ?

I'm not sure a comparison against SQLite is meaningful. SQLite offers indexes and structured data, NuDB is only a key/value storage system - you can only look up values by their key and nothing else.

Beyond that, you need to be more specific. A few million records of what? Inserts? Fetches?

Or are you asking about the performance of the database after a few million records are already present? Because NuDB does not slow down at all, regardless of how large the database gets. It offers constant performance.
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
April 11, 2015, 10:26:44 PM
 #4

No answer?
tacotime
Legendary
*
Offline Offline

Activity: 1484
Merit: 1005



View Profile
April 11, 2015, 10:52:47 PM
 #5

These types of DBs are popular lately, for example, btcwallet now uses boltdb, while Monero uses LMDB. They're all kind of similar: full ACID semantics w/ MVCC, data stored on disk in B+ trees, async read/update with scheduling and transitory state patches for reads, multiple namespaces, nested buckets, etc.

AFAIK, bitcore is moving towards adopting more DB agnostic architecture, so in the future you can plug and play whatever crazy DB type you want.

Code:
XMR: 44GBHzv6ZyQdJkjqZje6KLZ3xSyN1hBSFAnLP6EAqJtCRVzMzZmeXTC2AHKDS9aEDTRKmo6a6o9r9j86pYfhCWDkKjbtcns
samson
Legendary
*
Offline Offline

Activity: 2097
Merit: 1068


View Profile
April 12, 2015, 12:05:35 AM
 #6

No answer?


Nothing specific, I just find it interesting. Certain useful datasets can be key/value for something I'm working on.

I'm using sqlite with simple (but potentially large) recordsets based on a unique key at the moment so I'm open to new interesting things.


Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!