java - Recommend a NoSQL database to replace this MySQL database containing large objects and many attributes -


i'm looking alternative database mysql (engine = myisam).

my java application stores large objects 250 - 300 attributes each. there 500 millions objects on single mysql server. avoiding unnecessary joins, uses vertical partition, performed manually. there 250 tables storing attribute values, indexed. mysql performs when querying particular attributes (querying 5 attributes means 5 joins).

recommend nosql-database increase speed of query performance (range queries, exact match queries , combination of them).

mongodb seems alternative storing these objects in single collection, unfortunately mongodb can index maximum of 64 attributes per collection, means have split object values well. mongodb doesn't provide capability joining collection server-side.

  1. does know how "join" multiple collection using mongodb / java using dbref / manual references?

  2. if no, there other nosql-databases storing large object ca. 250 attributes, described above?

requirements:

  • no transactions required

  • users have see attributes queried, not entire object

  • single database server environment.

there restriction of 64 indexes, can following.

in 'attr' array can put 250-300 attributes , index on 'attr'. , can query on attr elements.

but let me remind you, size of index huge. there 1 index entry each element in 'attr' field. can profile query performance.

test:mongo > db.abhi.insert({ name : 'abhi', attr : [ { attr1 : 'val1' }, { attr2 : 'val2'}, {attr3 : 'val3'} ]})  test:mongo > db.abhi.ensureindex({attr : 1}) test:mongo > db.abhi.find({attr : {attr1 : 'val1'}}).explain() {     "cursor" : "btreecursor attr_1",     "ismultikey" : true,     "n" : 1,     "nscannedobjects" : 1,     "nscanned" : 1,     "nscannedobjectsallplans" : 1,     "nscannedallplans" : 1,     "scanandorder" : false,     "indexonly" : false,     "nyields" : 0,     "nchunkskips" : 0,     "millis" : 0,     "indexbounds" : {         "attr" : [             [                 {                     "attr1" : "val1"                 },                 {                     "attr1" : "val1"                 }             ]         ]     },     "server" : "bdvlpabhishekk:27017" } 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -