Все потоки
Поиск
Написать публикацию
Обновить
4.1

NoSQL *

Не только SQL

Сначала показывать
Порог рейтинга
Уровень сложности

Структуры данных, используемые в Redis

Время на прочтение4 мин
Количество просмотров47K
От переводчика:
Хочу представить вашему вниманию перевод ответа одного из разработчиков Redis, на вопрос о том, какие структуры данных используются внутри Redis. Оригинальную дискуссию вы можете найти на stackoverflow.


Я попробую ответить на вопрос, но начну с того, что на первый взгляд может показаться странным: если вы не интересуетесь внутренностями Redis, вы не должны заботиться о том, как реализованы структуры данных изнутри. Причина этому проста — сложность каждой команды Redis вы можете найти в документации, и если у вас есть набор операций и их вычислительная сложность, то единственное, что вам нужно, это некоторое представление об использовании памяти (и потому, что мы делаем много оптимизаций, в зависимости от данных, лучший способ получить эти последние цифры это тесты в реальных условиях)

Но поскольку вы спросили, вот внутренние реализации каждой структуры данных Redis:

  • Строки реализованы с использованием библиотеки динамических строк C, так что мы не платим (говоря асимптотически) за выделение памяти в операциях добавления. Таким образом мы получаем сложность добавления O(N), вместо, например, квадратичной.
  • Списки реализованы как связные списки.
  • Множества и Хэши реализованы как хэш-таблицы.
  • Упорядоченные множества реализованы как списки с пропусками (особый тип сбалансированных деревьев)
Читать дальше →

Расширения LINQ для Azure Table Storage, реализующие Or и Contains

Время на прочтение3 мин
Количество просмотров1.4K
Всем привет! Рад представить вам уже пятую статью из цикла «Внутреннее устройство и архитектура сервиса AtContent.com». В ней я расскажу о том как сделать работу с Azure Table Storage более функциональной и удобной.

LINQ

Платформа Windows Azure дает очень мощный набор инструментов для реализации своих идей. И среди них – Azure Table Storage – нереляционная база данных с неограниченным объемом. Большим плюсом этого хранилища является то, что можно делать к нему достаточно сложные запросы. Но помимо этого есть и некоторые неудобства. Так, например, с помощью LINQ нельзя выполнить запросы, в которых есть логика Or или Contains без дополнительных модификаций.
Читать дальше →

CouchDB: история одной аварии

Время на прочтение3 мин
Количество просмотров2.9K

Хочу поделиться историей, как наш проект слёг на полтора часа, и опытом выяснения причин.

В один прекрасный момент мы понимаем, что часть сайта грузится с 15-минутной задержкой, а другая часть попросту не работает, выдавая 504 ошибку.

Внимание! Поскольку люди любят умничать, и не любят читать — пишу тут. Цель поста — подсказать, как выйти из аварийной ситуации, всё остальное просто лирика, на которой почему-то все заостряют внимание.
Читать дальше →

Часть I. InterSystems GlobalsDB .Net — разведка боем с заглядыванием под капот

Время на прочтение7 мин
Количество просмотров5.6K
image
Наконец-то вместо уговоров подождать еще немного, на вопрос “Есть ли InterSystems GlobalsDB/Caché Extreme под Microsoft .Net?” можно ответить утвердительно. В новой версии Caché 2012.2 (Field Test) и GlobalsDB v2012.296 появилась поддержка этой платформы.
Попытаюсь в любимом для многих разработчиков на одной шестой суши стиле, то есть без чтения install notes и прочего, исследовать, что, собственно говоря, представляет дистрибутив GlobalsDB под Windows.
Читать дальше →

Redis in production

Время на прочтение3 мин
Количество просмотров77K
Хотелось бы рассказать о некоторых особенностях Redis при использовании на боевом сервере. Будут рассмотрены альтернативы при сохранении данных на диск, позволяющие достичь различной степени надёжности при сбоях. Так же будут приведены примеры конфигурации для резервного копирования и мониторинга. Используется Redis 2.2.11 на Amazon EC2 с установленной Ubuntu 10.10.

Читать дальше →

Новая версия GlobalsDB 2012

Время на прочтение3 мин
Количество просмотров5.2K
12 марта анонсирован выход очередной версии  бесплатной NoSQL InterSystems СУБД — GlobalsDB v2012.296.
GlobalsDB + .NET API
В новой версии появился интерфейс .NET API, внесены незначительные изменения и исправлен ряд ошибок.
Полная версия документа на английском языке доступна на сайте GlobalsDB.org.
Загрузить GlobalsDB.
Подробности под катом.
Читать дальше →

GlobalsDB Challenge. 4-й забег

Время на прочтение1 мин
Количество просмотров3.5K
29 марта в 18-00 по восточному времени (30 марта 3 часа ночи по Москве) начнется очередной турнир программистов GlobalsDB, бесплатной NoSQL СУБД от InterSystems.

Формат мероприятия: 1 неделя на выполнение задания, с выкладкой его на github ресурс.

Приз победителю — $3500 и специальный пресс-релиз InterSystems в его честь.

Вручение приза команде студентов - победителей GlobalsDB Challenge 3
Читать дальше →

Скорость работы корпоративных приложений

Время на прочтение5 мин
Количество просмотров4.1K
Cовременные процессоры очень и очень быстры, но вместе с тем, работая на крупном предприятии, всё время сталкиваешься с невероятной тормознутостью программного обеспечения. Никуда не годится, когда процедура закрытия месяца в бухгалтерии идёт больше суток и если что-то где то не так, то расчёт приходится запускать заново.
В статье рассмотрены фундаментальные причины медлительности приложений и даны опорные цифры, которые послужат опорой для выбора архитектуры будущих программ.
Читать дальше →

Архитектурный изьян CouchDB

Время на прочтение3 мин
Количество просмотров6.2K
Моя любимая тема в программировании — копаться в негативных эффектах, которые преподносят нам самые, на наш взгляд, тривиальные операции.

Один из таких вопросов — удаление записей в базе данных. Данная операция, по мнению большинства программистов, ускоряет работу с базой и делает её компактнее. Фокус состоит в том, что это неправда. И если с реляционными базами это неправда только отчасти, то с NoSQL это может быть полнейшим враньём.

Вот о такой проблеме в Apache CouchDB мы и поговорим далее.
Картинка в тему:

Читать дальше →

Новый aggregation framework в MongoDB 2.1

Время на прочтение12 мин
Количество просмотров45K
В релизе 2.1 было заявлена реализация такой функциональности, как новый фреймворк агрегирования данных. Хотелось бы рассказать о первых впечатлениях от этой весьма интересной штуки. Данный функционал должен позволить в некоторых местах отказаться от Map/Reduce и написания кода на JavaScript в пользу достаточно простых конструкций, предназначенных для группировки полей почти как в SQL.

Читать дальше →

HyperDex — новое опенсорсное NoSQL key-value хранилище, заточенное на очень быстрый поиск

Время на прочтение2 мин
Количество просмотров5.6K

Авторы позиционируют HyperDex как распределённое, отказоустойчивое, легко-маштабируемое, заточенное на очень быстрый поиск NoSQL key-value хранилище.

Главная фича — новый принцип хранения объектов в многомерном эвклидовом пространстве (рис. слева), используя гиперпространственное хэширование (hyperspace hashing) (на который, кстати, авторы сейчас получают патент), которое позволяет выполнять большинство типичных задач от 2 до 13 раз быстрее, чем в MongoDB, Redis, Cassandra.

О проекте и бенчмарки под катом

Подводные камни в Project Voldemort

Время на прочтение3 мин
Количество просмотров5.2K
Используется в одном из наших проектов такая штучка как Project Voldemort.
Если вкратце, то это весьма любопытная реализация key-value storage aka NoSQL database, реализованная в недрах Linkedin. То есть даешь ему ключик и значение, и оно быстро в памяти это хранит/отдает и на диске тоже сохраняет. Интересна она, в принципе, не этим, а своей реализацией кластеризации, неплохой скоростью, ну тем что часто используется в проектах на Java. В принципе, подробного обзора этой БД на Хабре не было, и можно как нибудь сделать. Но рассказать я тут хочу пока о одних граблях, с которыми пришлось столкнуться.
Читать дальше →

Перевод The Little Redis Book

Время на прочтение1 мин
Количество просмотров26K
The Little Redis Book — это бесплатная книга про Redis.

Книга была написана Karl Seguin, при поддержке Perry Neal. Karl Seguin является также автором книги The Little MongoDB Book, которую часто рекомендуют для быстрого старта с MongoDB. Первая версия повилась около недели назад.

Сегодня я сделал первую версию перевода этой книги. Исходные тексты доступны в репозитории на GitHub. Там же можно найти и готовый PDF.

Перевод выполнен с целью популяризации Redis среди русскоговорящих разработчиков. Книга является очень удобным и компактным руководством.

Я благодарен следующим людям за помощь в переводе оригинального текста и вычитке результата:


Я прошу все неточности и опечатки отправлять для коррекции перевода.

Ближайшие события

The Little Redis Book

Время на прочтение1 мин
Количество просмотров5.5K


Вчера Karl Seguin – автор книги The Little MongoDB Book, которую часто рекомендуют для быстрого старта с MongoDB, опубликовал аналогичное руководство для Redis под названием The Little Redis Book (при участии Perry Neal). Книга состоит из 29 страниц, написанных за 2 коротких дня с использованием Markdown. Исходная разметка книги находится на GitHub. Сама книга распространяется свободно под лицензией Attribution-NonCommercial 3.0 Unported license.

Содержание книги
  • About This Book
  • Introduction
  • Chapter 1 — The Basics
  • Chapter 2 — The Data Structures
  • Chapter 3 — Leveraging Data Structures
  • Chapter 4 — Beyond The Data Structures
  • Chapter 5 — Administration
  • Conclusion
Скачать
The Little Redis Book (PDF)

Разъяснение по CAP-теореме

Время на прочтение5 мин
Количество просмотров23K
Статья "Недопонимание CAP-теоремы" и комментарии к ней свидетельствуют, что непонимание действительно есть. И связано оно не только с неправильным толкованием термина «partitioning», но и с ментальными ошибками на других уровнях. Попробую внести ясность.
Читать дальше →

Недопонимание CAP-теоремы

Время на прочтение3 мин
Количество просмотров31K
В последнее время я довольно часто натыкаюсь на данную теорему. Она довольно давно доказана и про нее много чего написано. Однако каждый раз когда я натыкаюсь на распределенную систему, претендующую в описании на CA в терминах данной теоремы, т.е. систему в которой жертвуют Partition Tolerance в угоду Consistency и Avalability, я зависаю, так как хоть убейте не могу себе представить такого зверя. После долгих раздумий я все же пришел к выводу, что такая система бессмысленна, о чем и хочу порассуждать в данном топике.

Читать дальше →

Будущее CouchDB

Время на прочтение4 мин
Количество просмотров8.7K
Примечание. Этот пост в блоге Дэмиена Каца, создателя CouchDB, вызвал широкий резонанс. В конце данного топика опубликован ответ одного из многочисленных оппонентов Каца, мнение которого кардинально противоположно автору.

Каково будущее CouchDB? Это Couchbase.

Удивлены? Спросите, как же Apache CouchDB? Что ж, это отличный проект. Я основал его, написал первые версии почти полностью самостоятельно, потратил огромное количество нервов, пота и крови на него. Я очень им горжусь и тем влиянием, которое у него было. А сейчас я и команда Couchbase готовы двигаться дальше. Конечно, CouchDB — отличная система, но мы делаем его наследника: Couchbase Server. Продукт и проект с похожими возможностями и задачами, но более быстрый, более масштабируемый, более подходящий и для пользователей, и для разработчиков. И, определённо, не часть Apache.
Читать дальше →

Redis, hiredis, libev и multithread. Часть 2

Время на прочтение3 мин
Количество просмотров6.1K
В продолжение первой части хочется рассказать, как это все действительно работает. Много времени было положено на тесты и отладку, и сейчас хочется выложить подробные рекомендации по результатам исследований, которые были проведены.

Внимание! Исследования проводились не для понимания, зачем мне это нужно, а для понимания как оно работает!

Читать дальше →

Установка Redis + Redis PHP + phpRedisAdmin на боевом сервере за 15 минут

Время на прочтение4 мин
Количество просмотров71K
Всем уже давно известно, что самые лучшие бинарные файлы — это те, которые были скомпилированы именно на этом компьютере. И, когда вопрос заходит о производительности, то компилирование компонентов на этом компьютере даст свое преимущество в скорости и стабильности.

В данной статье речь пойдет о том, как подготовить Redis, phpredis (С модуль для php) и phpRedisAdmin для работы на боевом сервере.

Для того, чтобы собрать все полноценно, нам нужно иметь на сервере:
  • gcc 4.5.2 (Я компилировал под этой версией, но думаю, что с другими проблем не возникнет)
  • Make 3.81 (Опять же, версия не принципиальна)
  • php5-dev (Версия должна совпадать с версией php)


После того, как мы убедимся, что все зависимости удовлетворены, начинаем собирать все компоненты.
Нам потребуются:
  • Redis 2.4.4 Stable
  • phpredis 2.1.3
  • phpRedisAdmin

Читать дальше →

Уникальные возможности Tarantool

Время на прочтение4 мин
Количество просмотров106K

Tarantool — это крайне интересная база данных.
Представление о ней можно получить из доклада Константина Осипова Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?

Этой заметкой я хочу обратить внимание на уникальные возможности, которые отличают Tarantool от других подобных решений и делают его полезным инструментом.
Кроме того, я расскажу, чем можно помочь этому открытому проекту и почему это круто :)
Читать дальше →