Search code examples
databaseperformanceconcurrencyscalabilityb-tree

Optimal concurrency model for scalable databases, indexes?


i'm interesting in concurrency technics which are relatively easy to implement and they are suitable for scaling (multiple nodes).

also if you know some more advanced algorithms, please provide some info.

hope this topic will be useful for others. thanks!

update

i'm interesting in nosql storages and models.


Solution

  • you need to think through exactly what you're looking for. does the "scalable" refer to the size of the DB? number of readers? number of simultaneous writers? throughput of readers in the presence of not-inherently-conflicting writers? by "index", do you mean a traditional totally-ordered index like a btree, or will hashing do? also, what degree of consistency do you want among readers and writers?

    the previous comment suggests hashing, which is excellent if you don't need a btree-like ordered index precisely because the hashing operation splits the keyspace into separate pieces, so that simultaneous operations avoid interacting. range queries, on the other hand, want a tree index of some sort, which has problems because a single update can lock out all other queries as it adjusts the index. the traditional solution to this http://en.wikipedia.org/wiki/Multiversion_concurrency_control