среда, 20 июля 2011 г.

Distributed Algorithms: Time

Тезисы к моему докладу на Java Club #2:

Многие современных "Большие Игроки" для обеспечения задачи хранения состояния в cloud-системах используют кастомные нереляционные решения:
Amazon
- SimpleDB
- Dynamo
Google
- GFS + BigTable + MapReduce
- Megastore
Yahoo
- HDFS + HBase + Hadoop
- PNUTS
Facebook
- Cassandra

Не рассматривая вызвавшие это причины, можно констатировать факт, что задача анализа реализованных или проектирования и разработки своего "in cloud" nonrelational хранилища актуальна для R&D отделов больших корпорация.

Но, в таком случае, нам придется "выйти за пределы реляционного словаря": ACID, optimistic/pessimistic locking, read uncommitted, read committed, repeatable read, serializable, two phase commit (2PL), two phase locking (2PL), normal forms, primary/foreign key...

И оперировать более фундаментальными понятиями. На основе которых, в том числе, возможно строить и реляционные решения.

Time:
- 0-d Scalar Lamport Logical Time
- 1-d Scalar Virtual Time
- 1-d Vector Time
- 2-d Matrix time

P.S. В целом про Time in Distributed Algorithms (в том числе про Vector Time) отлично прочитать Chapter #3 из книги "Distributed Computing: Principles, Algorithms, and Systems"