Как мы делали драйвер для RethinkDB

Алексей Фомкин

Moscow Scala Meetup

27 апреля 2016

Twitter: @yelbota

GitHub: @fomkin

Немного о RethinkDB

  • NoSQL
  • Распределенная
  • Проходит тесты Афира
  • Подписки на измения данных
  • Специфический язык запросов
  • Асинхронный протокол

Специфический язык запросов


  r.table('game').orderBy('score').limit(3).changes()

Специфический язык запросов


  r.table('game').
    orderBy('score').
    limit(r.table('limits').get(myUuid)("left"))

Поиск альтернатив

  • Два драйвера для Scala
  • Официальный драйвер для Java (ретроспективно)

Постановка требований

  • 0-dependency
  • Не должен зависеть от реализации сети
  • Не должно быть привязки среде выполнения
  • Должна быть возможность подключения разных JSON-библиоек

Трудности

  • Слишком "динамически типизировано"
  • Очень обширный API
  • Непонятно как тестировать

Решения

  • Типы-обертки
  • Кодогенерация
  • ???

Текущее состояние

  • В целом работает!
  • Неполное покрытие API
  • Не работают вложенные функции
  • Пока бекенд есть только для Akka и Pushka

Присоединяйтесь!

http://github.com/fomkin/scala-reql

Made with Slides.com