Базы данных: введение, часть вторая

Илья Тетерин
2011-09-21

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

Работа над ошибками части №1

Кто такой инженер

Инженер (фр. ingénieur, от лат. ingenium — способность, изобретательность) ...

Что такое o(n)

wikipedia:«O» большое и «o» малое wikipedia:Big_O_notation

Пусть наш компьютер делает 1000 операций в секунду...

O1 тыс.1 млн.
o(n)1 сек..1000 сек. = 16 мин.
o(ln(n))0.006 сек0.013 сек
o(n^2)16 мин.31 год
o(n ln(n))7 сек.3.8 часа
o(k * n)9 * 19 * 1 * 1000

Примеры o(n)

Ограничения физического мира

Вопрос:

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

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

БуквыЧисло
АБВГД7
ЕЁЖЗ2
ИКЛМ11
НОПР3
СТУФ5
ХЦЧШЩЪЫЬЭЮЯ2
всего30

Горизонтальное секционирование

wikipedia:Hash function

wikipedia:Хеширование

Hash Functions FTW - слайды + ссылки на hash file storage

Memcached - http://memcached.org/

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

Memcached was originally developed by Brad Fitzpatrick for LiveJournal in 2003.

Contributed: 80+ человек

yandex:memcached

Memcached - функции

Redis

http://redis.io/ / wikipedia:Redis / yandex:Redis

http://redis.io/commands - 124 разных комманды ( o_O )

Большая сетевая база

LiveJournal

Архитектура LiveJournal

Слайды by Brad Fitzpatrick / Aug 2005
... college hobby project, Apr 1999 ...

Scale up vs Scale out...

Домашнее задание

Интерактивность только с первым - я получил updated версию :) в ночь на среду

Архитектура ноды

http://voituk.kiev.ua/2008/12/22/simple-reliable-java-http-server/

import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class HttpServerEx implements HttpHandler {
  public static void main(String[] args) throws IOException {
    HttpServer server = HttpServer.create(new InetSocketAddress(80), 10);
    server.createContext("/", new HttpServerEx());
    server.start();
    System.out.println("Server started\nPress any key to stop...");
    System.in.read();
    server.stop(0);
    System.out.println("Server stoped");
  }
  public void handle(HttpExchange exc) throws IOException {
    exc.sendResponseHeaders(200, 0);
    PrintWriter out = new PrintWriter(exc.getResponseBody());
    out.println( "Hello moto!" );
    out.close();
    exc.close();
  }
}

http://json.org/ / wikipedia:JSON / yandex:JSON

{"person": {
  "id": "75685",
  "fio": "Илья Тетерин",
  "контакты": {
      "twitter": "ya_pulser",
      "url": "http://fluffypulser.ru",
      "email": "ya.pulser@gmail.com"
    }
  }
}
  • Коллекция пар ключ/значение. В разных языках, эта концепция реализована как объект, запись, структура, словарь, хэш, именованный список или ассоциативный массив.
  • Упорядоченный список значений. В большинстве языков это реализовано как массив, вектор, список или последовательность.

Далее

Мало данных?
Some Datasets Available on the Web - 398 больших наборов данных

Вопросы?