Базы данных: введение, часть заключительная
Илья Тетерин
2011-12-07
(use arrow keys or PgUp/PgDown to move slides)
Илья Тетерин
2011-12-07
(use arrow keys or PgUp/PgDown to move slides)
Что было на лекциях ...
Списки: массив, связанный список, ассоциативный список
Скорость операций в списке.
Добавить в конец, найти i-ый элемент, найти следующий элемент, вставить в середину etc...
Отсортированный список, skip list
HashMap, дерево етс ... что быстрее списка?
L1 cache: 3 cycles
L2 cache: 14 cycles
local RAM: 250 cycles
local DISK: 41,000,000 cycles
NETWORK: 240,000,000 cycles
... как алгоритмический прототип базы данных ...
Вертикальное - рабочая записная vs домашняя
Горизонтальное - разные разделы и страницы
Шардирование
Зачем cache?
- время ответа
- CPU ресурсы
- локальность
- размер
Cache miss: Сначала в кеш, если нет, в базу, из базы в кеш ...
"Разогрев"
Memcached / ehCache / JSR-107
Локальные и распределенные, in-memory и дисковые етс...
wiki:DBM - строки в файле, как хеше ...
Berkeley DB / Tokyo Cabinet / Kyoto Cabinet / LevelDB ...
SSTable ... sorted strings table
Tokyo Tyrant - пакет сетевых интерфейсов
Kyoto Tycoon - db server для кешей и постоянных данных
С дополнительными фичами ...
Redis ... 100+ комманд, например subscribe / publish ...
JSON
MongoDB
XQuery / XPath etc
Oracle XML DB
...
Neo4j ...
Pregel by Google
... DHT (distributed hash table) ...
Amazon Dynamo / Riak / Cassandra ...
репликация
копии
коды восстановления
Файловые системы - HDFS
Вычислительные - MapReduce / Hadoop
...
LIST OF NOSQL DATABASES [currently 122+]
Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j comparison
например MySQL
- handlersocket - доступ по PK внутрь таблицы
- memcached plugin - доступ по PK внуть InnoDB
Использование MySQL как NoSQL — История о том, как достичь 750,000 запросов в секунду
b-tree
unique
bitmap
full text
inverted index
внешние / Lucene
etc ...

https://github.com/twitter/gizzard

https://github.com/robey/kestrel Kestrel - ... simple, distributed message queue ...

Memcached: This is a distributed cache used by the fetchers to temporarily store robots.txt files.
Metadata Store: This is a Cassandra-based distributed hash table that stores page metadata and resolution information keyed by URL, as well as fetch status for every URL recently encountered by the system. This store serves clients across Twitter that need real-time access to URL metadata.
Content Store: This is an HDFS cluster for archiving downloaded content and all fetch information.
http://engineering.foursquare.com/ - FourSquare engineering blog
http://engineering.linkedin.com/blog - LinkedIn engineering blog
http://engineering.twitter.com/ - Twitter engineering blog
http://blog.stackoverflow.com/category/server/ - StackOverflow blog
etc ... просто погуглите и найдете !
Базы данных это:
Pulser: базы данных это осозноваемо, интересно и полезно!
Смотрите, гуглите, а, главное, пользуйтесь базами данных.
Спасибо, что вы пришли на курс.
Спасибо за домашки!!!