Обновить
0.4

NoSQL *

Не только SQL

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

Intersystems Caché: Globals API для .NET – прямой доступ к глобалам из C#

Время на прочтение15 мин
Количество просмотров7.4K
Недавно возникла необходимость сравнить скорость записи/чтения данных из СУБД Intersystems Caché, используя разные виды доступа – прямой к глобалам, объектный и реляционный. С объектным и реляционным доступом все понятно, а вот с прямым (он же direct access) пришлось разбираться. Для тех, кому, как и мне, с первого взгляда документация не дала полного понимания процесса, и предназначена эта статья. Для примера буду делать консольное приложение в лучших традициях процедурного программирования.
Читать дальше →

Разбираем ACID по буквам в NoSQL

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

Мотивация


Ни для кого не секрет, что при наличии сформулированного эвристического правила под названием CAP Теорема в противовес привычной RDBMS-системе класс NoSQL-решений не может обеспечить полную поддержку ACID. Нужно сказать, что для целого ряда задач в этом нет никакой необходимости и поддержка одного из элементов приводит к компромиссу в разрешении остальных, как итог — большое разнообразие существующих решений. В данной статье я бы хотел рассмотреть различные архитектурные подходы к решению задач по частичному обеспечению требований к транзакционной системе.
Читать дальше →

Инструмент администрирования GlobalsDB и тонкости работы с этой базой данных

Время на прочтение5 мин
Количество просмотров6.5K
Здравствуйте, дорогие хабрачитатели.

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



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

Три новинки в MongoDB 2.8

Время на прочтение3 мин
Количество просмотров24K
На днях я посетил грандиозную тусовку любителей NoSQL — World MongoDB Conference.



Eliot Horowitz, Co-Founder и CTO в MongoDB, рассказал о 3 новшествах, которые будут доступны уже в ближайшем релизе.
Каждое из анонсированных нововведений нацелено на достижение следующих принципов в архитектуре MongoDB:
  • Продуктивность разработчика
  • Горизонтальная масштабируемость
  • Операционная масштабируемость
  • Администрирование одного вебсервера должно быть простым. То же самое касается кластеров

Видео презентации можно посмотреть здесь.
Подробности здесь

Импортируем открытые гео данные из OpenGeoDB в Elasticsearch

Время на прочтение12 мин
Количество просмотров9.5K
Задумывались ли вы когда-нибудь, найдя аккуратную публичную базу данных, как хорошо было бы включить её в своё приложение, чтобы оптимизировать какую-нибудь функциональность, пусть даже незначительно? Конечно же да! Этот пост расскажет как, использовать Logstash для превращения внешнего набора данных в желаемый формат, проверить результат в Kibana и убедиться что данные правильно индексированы в Elasticsearch так, что могут быть использованы при больших нагрузках на живых серверах.

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

ElasticSearch — mapping и поиск без сюрпризов

Время на прочтение5 мин
Количество просмотров42K
В статье рассмотрим, как и зачем применять mapping. Нужен ли он вообще и в каких случаях. Я приведу примеры его установки, а так же постараюсь поделиться некоторыми полезными хитростями, которые могут помочь вам в усовершенствование поиска на вашем сайте.

Всем, кому интересен современный поисковый движок ElasticSearch, прошу под кат.
Читать дальше →

ElasticSearch — агрегация данных

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

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

Для всех, кому интересно как сделать свои запросы в ES интереснее и посмотреть на обычной поиск с другой стороны, прошу под кат.
Читать дальше →

ElasticSearch и поиск наоборот. Percolate API

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

Вопрос умной категоризации чего-либо встаёт остро при разработке очень многих сайтов. Конечно, всегда можно отдать это на заполнение человеку и результат поначалу будет куда лучше машинного, но, что если категоризировать нужно в реальном времени сотни и тысячи «товаров».
Придется отдать это на откуп машине. Тут вариантов не так много, а написание собственного ИИ для 99.9% задач пустая трата времени.

Заинтересовавшимся как это решить с помощью ElasticSearch прошу под кат.
Читать дальше →

MongoDb for developers. Неделя 2

Время на прочтение7 мин
Количество просмотров15K
Доброе время суток, хабр. Этот топик — продолжение цикла статей, основанных на материалах онлайн курса M101 от 10gen. Поскольку вторая неделя является одной из самых насыщенных, она будет разбита на две статьи.
Добро пожаловать под кат

Переходим от MongoDB Full Text к ElasticSearch

Время на прочтение6 мин
Количество просмотров30K
В своем прошлом посте, с анонсом Google Chrome расширения для Likeastore, я упомянул тот факт, что в качестве поискового индекса мы начали использовать ElasticSeach. Именно ElasticSeach дал достаточно хорошую производительность и качество поиска, после которого было принято решение, выпустить расширение к хрому.

В этом посте, я расскажу о том, что использование связки MongoDB + ElasticSeach, есть крайне эффективное NoSQL решение, и о том, как перейти на ElasticSearch, если у вас уже есть MongoDB.
Читать дальше →

Elasticsearch как NoSQL база данных

Время на прочтение8 мин
Количество просмотров64K
Может ли поисковый сервер Elasticsearch использоваться в качестве NoSQL базы данных? Положительный ответ позволит рассмотреть его различные свойства, в том числе и те, от реализации которых он отказался, чтобы стать одним из самых гибких, производительных и масштабируемых поисковых движков. Но для ответа на этот вопрос стоит сначала определиться с самим термином NoSQL, так как в зависимости от контекста он может трактоваться по-разному.

Что же все-таки такое NoSQL?


Разработчики NoSQL дают такое определение: база данных следующего поколения, характеризующаяся отказом от реляционности, распределенностью, открытостью исходных текстов и горизонтальной масштабируемостью. Назвать это определение точным, увы, нельзя.

Дело в том, что речь идет совсем не об SQL. Поясним. Язык запросов Hive явно был вдохновлен SQL. Это же можно сказать и о языке Esper, хоть он работает и не с потоками, а с отношениями. Интересна история PostgreSQL — изначально он назывался Postgres, в качестве языка запросов использовал Quel и являлся ORDBMS, а сегодня PostgreSQL обладает многими функциями, которые позволяют ему быть документноориентированным хранилищем.

В данном случае речь идет не о ACID — в определении NoSQL о транзакциях ничего не говорится. Hyperdex — это база NoSQL, которая стремится обеспечивать ACID-транзакции. MySQL, несомненно, является базой SQL и в своей истории имеет сомнительные интерпретации на тему, что же на самом деле означает ACID.
Читать дальше →

Долой оковы MongoDB

Время на прочтение6 мин
Количество просмотров30K
Многие из нас в свое время бросились с энтузиазмом осваивать MongoDB, действительно красота — удобный JSON формат, гибкая схема (точнее полное ее отсутствие), от установки системы до первого использования проходят буквально минуты. Но через некоторое время, уже когда Mongo надежно «зашита» в наш проект наступает разочарование. Простейшие запросы требуют постоянного тыкания в документацию, чуть более сложные способны убить почти целый день рабочего времени, а уж если понадобится join разных коллекций — то увы…

И вот уже кто-то возвращается к Постгресу с его частичной поддержкой JSON…

Но, к счастью, уже куется, уже спешит к нам полноценная замена Mongo, полноценная полу-структурированная Big Data СУБД AsterixDB. Этот проект возглавляет профессор UCI Michael Carey, ученик легендарного пионера СУБД Майкла Стоунбрейкера.

Проект стартовал просто как исследовательское начинание в области Big Data и изначально ориентировался на создание общего стэка для MapReduce и SQL. Но, буквально несколько лет назад, было принято решение построить Big Data JSON СУБД. По словам Майкла Кери, «AsterixDB is Mongo done right.» В чем же основные фишки AsterixDB?
Читать дальше →

Используем MongoDB вместо memcached: быть или не быть?

Время на прочтение5 мин
Количество просмотров15K
На тему «использование MongoDB вместо memcached» гуглится немало историй успеха. Такое ощущение, что есть широкий класс задач, для которых идея работает неплохо: прежде всего это проекты, где интенсивно используется тэгирование кэша. Но если вы попробуете, то заметите, что в MongoDB не хватает функции удаления из кэша записей, которые читаются реже всего (LRU — Least Recently Used). Как поддерживать размер кэша в разумных рамках? LRU — это, кстати, «конек» memcached; вы можете писать в memcached, не задумываясь о том, что ваш кэш переполнится; но как же быть с MongoDB?

Раздумывая над этим, я написал на Python небольшую утилиту CacheLRUd (выложена на GitHub). Это демон для поддержки LRU-удаления записей в различных СУБД (в первую очередь, конечно, в MongoDB). Ферма таких демонов (по одному на каждой MongoDB-реплике) следит за размером коллекции, периодически удаляя записи, к которым доступ на чтение производится реже всего. Отслеживание фактов чтения той или иной записи кэша происходит децентрализовано (без единой точки отказа) по протоколу, основанному на UDP (почему так? потому что «наивный» вариант — писать из приложения в мастер-базу MongoDB при каждой операции чтения — плохая идея, особенно если мастер-база окажется в другом датацентре). Читайте подробности чуть ниже.

Но зачем?
Читать дальше →

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

Установка InterSystems Caché и GlobalsDB на Linux

Время на прочтение9 мин
Количество просмотров7.9K
Так как у тех, кто впервые устанавливает продукты InterSystems на Linux, часто возникают проблемы в процессе установки, я решил описать этот процесс. На данный момент из бесплатных версий Linux начиная с версии 2014.1 поддерживается CentOS 6.4, поэтому процесс установки буду описывать именно на этой ОС но установка, например, на Ubuntu ничем не отличается (хотя она и не является сейчас официально поддерживаемой InterSystems).

Что потребуется


Для установки InterSystems Caché, нам понадобится дистрибутив, если у вас его нет, то вы можете его скачать здесь. Однопользовательская версия, для RedHat, установщик в формате tar.gz. Для установки на Ubuntu нужно брать версию для SuSE Linux. На момент написания статьи доступна версия 2014.1.
Для установки InterSystems GlobalsDB здесь качаем версию Для RedHat, на выбор предлагается Node.js или Java, но это не важно — на скачиваемый файл это не влияет.
Читать дальше →

Тестирование «быстрой MongoDB» – TokuMX в условиях, близких к реальности

Время на прочтение4 мин
Количество просмотров22K
В последнем выпуске Радио-Т мы упоминали TokuMX — High-Performance MongoDB Distribution. Продукт этот звучит интересно — 9ти кратное сжатие данных в комплекте с 20ти кратным приростом скорости и поддержкой транзакций. При этом переход с mongo на tokumx весьма прост и с точки зрения внешнего наблюдателя — полностью прозрачен. Такое волшебство показалось мне более чем привлекательным и я решил проверить насколько все хорошо на практике.
Читать дальше →

MongoDB от теории к практике. Руководство по установке кластера mongoDB

Время на прочтение9 мин
Количество просмотров91K
     Доброго времени суток, уважаемые читатели. В этом посте я хотел бы описать несколько примеров развертки mongoDB, отличия между ними, принципы их работы. Однако больше всего хотелось бы поделиться с вами практическом опытом шардирования mongoDB. Если бы этот пост имел план, он бы выглядел скорее всего так:

  1. Вступление. Кратко о масштабировании
  2. Некоторые примеры развертки mongoDB и их описание
  3. Шардинг mongoDB

    Пункты 1 и 2 — теоретические, а номер 3 претендует на практическое руководство по поднятию кластера mongoDB и больше всего подойдет тем, кто столкнулся с этим в первый раз.
Читать дальше →

Использование Redis EXPIRE для отслеживания онлайн-аудитории в Rails

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

Кому


  • Тем кто на Ruby on Rails
  • Кто желает знать кто из пользователей онлайн, но ещё не задумывался как
  • Для кого не проблема использовать Redis (по причине хостинга например)


    Решение вопроса в сети пользователь или нет — это наверное как правило установка временной метки при обращении пользователя к приложению, а при необходимости узнать его (пользователя) текущий статус — сверка с этой временной меткой. Какой подход выбрать — решать Вам, но тот подход который предлагаю я — прост и не использует SQL базу данных, вместо этого используется Redis и одна из его встроенных возможностей — время жизни ключа (expire).

Подробности

Релиз KPHP и движков

Время на прочтение6 мин
Количество просмотров165K
Довольно часто, выступая на различных конференциях, мы делились желанием выпустить под открытой лицензией KittenPHP, согласно традиции, заложенной крупными IT-компаниями, такими как Google и Facebook.

Это событие несколько раз откладывалось в связи с опасением, что нам не хватит сил и времени на взаимодействие с opensource-сообществом, однако в конце концов заветный день настал, и код KPHP и некоторых других инструментов, используемых внутри проекта, был выложен в открытый доступ.

В связи с этим под катом вас ждет более подробный рассказ о внутреннем устройстве ВКонтакте и тех инструментах, которые сегодня стали доступны opensource-сообществу.


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

PHP и различные виды NoSQL

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


В последнее время набирают популярность различные NoSQL базы данных. Эта статья начиналась как изучение особенностей графитовой графовой базы данных Neo4j. Но, в процессе подбора информации, мне захотелось систематизировать информацию о NoSQL решениях и о графовых базах данных, в частности.
В ходе этого небольшого исследования, были выбраны для подробного рассмотрения СУБД, успешно применяющиеся в области Web. И, поскольку в тегах присутствует «PHP», я выбирал СУБД, которые уже можно использовать с этим языком.

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

Увеличение производительности Redis с помощью простого кластера

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

Начиная знакомство с nosql-базой Redis, практически в каждой статье ей посвященной, мы встречаем утверждение о том, что эта база невероятно быстро работает. Скорость работы действительно потрясающая, благодаря хранению данных в оперативной памяти.

Но представим ситуацию, когда Redis надрывается от нагрузки. Эта ситуация не редка. Что же в таком случае делать?

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