Our great sponsors
-
IceFireDB
@IceFireLabs -> IceFireDB is a database built for web3.0 It strives to fill the gap between web2 and web3.0 with a friendly database experience, making web3 application data storage more convenient, and making it easier for web2 applications to achieve decentralization and data immutability.
-
Tendis
Tendis is a high-performance distributed storage system fully compatible with the Redis protocol.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
So what "IceFireDB" is:
1. tidwall/uhaha - Raft server
2. tidwall/redcon - Read/write redis protocol
3. ledisdb/ledisdb - Redis-compatible with disk persistence via leveldb
4. syndtr/goleveldb/leveldb - Provides snapshots, other scattered references throughout code
It also includes this seemingly random file below, which seems to implement String/Slice for string/byte using unsafe.Pointer:
https://github.com/siddontang/go/blob/master/hack/hack.go
It depends, yes but ... (not discounting any of the above).
One sees a lot of 3:1 in practice due to the replication factor. If you have 3 copies of the data and the client can read from any node, you get 3x the read performance as having to have a quorum write on two out of three nodes.
To the GP, for a rough swag of what is possible out of given hardware, a combination of FIO and ACT (measures IO latency under a fixed load) is a good start.
https://fio.readthedocs.io/en/latest/fio_doc.html
https://github.com/aerospike/act