Базы данных: введение, часть заключительная

Илья Тетерин
2011-12-07

(use arrow keys or PgUp/PgDown to move slides)

Итого / Обо всем

Что было на лекциях ...

Структуры данных

Списки: массив, связанный список, ассоциативный список

Скорость операций в списке.

Добавить в конец, найти i-ый элемент, найти следующий элемент, вставить в середину etc...

Отсортированный список, skip list

HashMap, дерево етс ... что быстрее списка?

Представление структур данных в памяти

Хранение данных на диске

Передача данных по сети

I/O latency

L1 cache: 3 cycles

L2 cache: 14 cycles

local RAM: 250 cycles

local DISK: 41,000,000 cycles

NETWORK: 240,000,000 cycles

node.js in brief by ry@tinyclouds.org

Бумажная записная книга

... как алгоритмический прототип базы данных ...

Партиционирование

Вертикальное - рабочая записная vs домашняя

Горизонтальное - разные разделы и страницы

Шардирование

Cache как база

Зачем cache?

- время ответа

- CPU ресурсы

- локальность

- размер

Cache miss: Сначала в кеш, если нет, в базу, из базы в кеш ...

"Разогрев"

Memcached / ehCache / JSR-107

Доступ ключ-значение

wiki:Key value store

Локальные и распределенные, 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 ...

Document oriented

JSON

MongoDB

XML Database

XQuery / XPath etc

Oracle XML DB

Object Database

...

Graph DB

Neo4j ...

Pregel by Google

Распределенные

... DHT (distributed hash table) ...

Amazon Dynamo / Riak / Cassandra ...

Надежность хранения

репликация

копии

коды восстановления

Гигантские

Файловые системы - HDFS

Вычислительные - MapReduce / Hadoop

...

http://nosql-database.org/

LIST OF NOSQL DATABASES [currently 122+]

http://nosql-database.org/

Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j comparison

Большие базы и NoSQL

например MySQL
- handlersocket - доступ по PK внутрь таблицы
- memcached plugin - доступ по PK внуть InnoDB

Использование MySQL как NoSQL — История о том, как достичь 750,000 запросов в секунду

NoSQL to MySQL with Memcached

Индексы

b-tree

unique

bitmap

full text

inverted index

внешние / Lucene

etc ...

Читаем схемы ...

High Scalability: Real Life Architectures

Twitter : FlockDB

Introducing FlockDB

Gizzard: a library for creating distributed datastores

https://github.com/twitter/gizzard

Finagle: A Protocol-Agnostic RPC System

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

SpiderDuck: Twitter's Real-time URL Fetcher

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: базы данных это осозноваемо, интересно и полезно!

Смотрите, гуглите, а, главное, пользуйтесь базами данных.

Спасибо, что вы пришли на курс.

Спасибо за домашки!!!

Вопросы?