Thursday, December 7, 2017

DB #42

DB #42 or how to choose technology :)


We have to implement a new feature. No matter what kind of feature it is. Well, we have to expose REST API, store and retrieve some dynamic data. We spent a lot of time choosing DB. The chief architect wanted MySql. Well, this idea have not pass our sanity filter. The data architect wanted AeroSpike, team leader suggested MongoDB that was blamed by DevOps that proposed Redis.

But as we all know the absolute answer to all questions is 42. So, we decided to choose the DB #42 from alphabetically sorted list of NoSQL databases. 

I opened Google and typed "list of nosql databases". Then I have chosen the following article. I had to extract a list of names of the databases and did it using the following command:

curl http://nosql-database.org/  | grep h3 | grep href > /tmp/db.hrefs.txt

(because all DB names in this list are surrounded by tag <a> with reference to their web page)

There was one case when 2 databases were written in one physical line and I fixed this manually. 
Then I ran the following command to get the alphabetical list of DB names:

cat /tmp/db.hrefs2.txt |  sed 's#</a>.*##' | sed 's/.*>//' | sort > /tmp/db.names.txt

The last phase it to print this list with attached numbers:

 i=1; cat /tmp/db.names.txt | while read l; do echo "$i,$l"; i=`expr $i + 1`; done

Here is the list:
1Accumulo
2acid-state
3Aerospike
4AlchemyDB
5allegro-C
6AllegroGraph
7Amazon SimpleDB
8AmisaDB:
9Apache Flink
10Applied Calculus
11ArangoDB
12ArangoDB
13ArangoDB
14Axibase
15Azure DocumentDB
16Azure Table Storage
17BagriDB
18BangDB
19BaseX
20BayesDB
21BergDB
22Berkeley DB
23Berkeley DB XML
24Bigdata
25BinaryRage
26BoltDB
27BrightstarDB
28BrightstarDB
29Cachelot
30Cassandra
31Chordless
32Chronicle Map
33Cloudata
34Cloud Datastore
35Cloudera
36Clusterpoint Server
37CodernityDB
38ConcourseDB
39CoreObject
40CortexDB
41Couchbase Server
42CouchDB
43Crate Data
44DaggerDB
45Datomic
46db4o
47DBreeze
48densodb
49djondb
50Druid
51DynamoDB
52Dynomite
53EJDB
54Elassandra
55Elastic
56Elliptics
57EMC Documentum xDB
58ESENT
59Eventsourcing for Java (es4j)
60Event Store
61Execom IOG
62eXist
63eXtremeDB
64eXtremeDB
65eXtremeDB Financial Edition
66EyeDB
67Faircom C-Tree
68Fallen 8
69FileDB:
70filejson
71FlockDB
72FoundationDB
73FramerD
74GemFire
75GemStone/S
76GenieDB
77Genomu
78GigaSpaces
79Globals:
80GPUdb
81GraphBase
82GridGain
83GT.M
84gunDB
85gunDB
86gunDB
87Hadoop / HBase
88Hazelcast
89Hibari
90HPCC
91HSS Database
92HyperDex
93HyperGraphDB
94Hypertable
95IBM Cloudant
96IBM Informix
97IBM Lotus/Domino
98iBoxDB
99Infinispan
100Infinite Graph
101InfinityDB
102influxdata
103InfoGrid
104Informix Time Series Solution
105Intersystems Cache
106ISIS Family
107JADE
108JasDB
109jBASE
110JEntigrator
111JSON ODM
112KAI
113kdb+
114KirbyBase
115KitaroDB
116KUDU
117LevelDB
118LightCloud
119LSM
120Magma
121MapR
122MarcelloDB
123MarkLogic Server
124Maxtable
125MemcacheDB
126MentDB:
127Meronymy
128MiniM DB
129Mnesia
130Model 204 Database
131MonetDB
132MongoDB
133Moonshadow
134Morantex
135NCache
136NDatabase
137NeDB
138NEO
139Neo4J
140nessDB
141Newt DB
142Ninja Database Pro
143NosDB
144NoSQL embedded db
145ObjectDB
146Objectivity
147Onyx Database
148OpenInsight
149OpenLDAP
150OpenLink Virtuoso
151OpenQM
152Oracle Coherence
153Oracle NOSQL Database
154OrientDB
155OrientDB
156Perst
157PickleDB
158PicoLisp
159Pincaster
160pipelinedb
161Prevayler
162Qizx
163quasardb
164Queplix
165RaptorDB
166RaptorDB
167rasdaman
168RavenDB
169RDM Embedded
170Reality
171ReasonDB
172Recutils:
173Redis
174RethinkDB
175Riak
176Riak TS
177RockallDB
178RocksDB
179Scalaris
180Scalien
181SciDB
182SCR Siemens Common Repository
183Scylla
184SDB
185Sedna
186SequoiaDB
187Serenety
188SharedHashFile
189siaqodb
190SisoDB
191Sophia
192Sparksee
193Splice Machine
194SpreadsheetDB
195Starcounter
196Sterling
197STSdb
198Symas LMDB
199Tarantool/Box
200TayzGrid
201Terrastore
202ThruDB
203TIBCO Active Spaces
204Tieto TRIP
205TigerLogic PICK
206TITAN
207Tokutek:
208Tokyo Cabinet / Tyrant
209ToroDB
210TreodeDB
211Trinity
212U2
213upscaledb
214VaultDB
215VelocityDB
216Versant
217VertexDB
218Voldemort
219Vyhodb
220weaver
221WhiteDB
222WonderDB
223Yserial
224ZODB


And the winner is .... CouchDB - number 42!

Conclusions

Every time you cannot agree which technology to choose just find the longest list of relevant technologies, sort them alphabetically and choose #42.