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

NoSQL *

Не только SQL

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

Elasticsearch: сайзинг шардов как завещал Elastic + анонс вебинара + предложения по митапу

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

Каждый индекс Elasticsearch состоит из шардов. Шарды — это логическое и физическое разделение индекса. В этой статье мы расскажем о сайзинге шардов Elasticsearch — важной его части, серьёзно влияющей на производительность кластера. В высоконагруженных системах выбор правильной конфигурации архитектуры хранения позволит серьёзно сэкономить на железе. Бóльшая часть статьи основана на соответствующем разделе документации Elastic. Подробности под катом.
Читать дальше →

ArangoDB в реальном проекте

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

ArangoDB мультимодельная (документная и графовая) база данных. К ее положительным сторонам относятся:


  • мощный и удобный язык запросов AQL
  • JOIN (даже более мощный чем в реляционных базах данных)
  • репликация и шардинг
  • ACID (в кластере работает только в платной версии)

Из менее существенных, но не менее удобных возможностей:


  • нечеткий поиск
  • встроенный в базу данных движок микросервисов Foxx
  • работа в режиме подписки на изменения в базе данных

Справедливости ради отмечу и недостатки:


  • отсутствие ODM
  • низкая популярность (в сравнении например с MongoDB)

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

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

Тестирование производительности HBase с помощью YCSB

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

Тестирование производительности HBase с помощью YCSB

При запуске любого теста производительности (инструмента по бенчмаркингу) на кластере критично всегда то, какой именно будет использоваться набор данных, и здесь мы покажем, почему при запуске теста производительности HBase на кластере важно выбрать «хорошо соответствующий по объему» набор данных.

Читать далее

Что будет, если изменить количество виртуальных нод в Apache Cassandra

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


В Apache Cassandra 4.0 будет новое значение по умолчанию для num_tokens! Звучит как незначительное изменение в CHANGES.txt, но по факту это серьезно повлияет на работу кластера. Как новое значение num_tokens скажется на кластере и его поведении?


От редакции: 27 марта приглашаем на открытую онлайн-конференцию Cassandra Day Russia 2021. В программе доклады и воркшопы. Материалы конференции подойдут как начинающим, так и опытным специалистам.
Читать дальше →

Определение объёма кластера Elasticsearch и тестирование производительности в Rally

Время на прочтение7 мин
Количество просмотров8.9K
В этой статье мы разберёмся с основными подходами к сайзингу Elasticsearch, покажем сравнения бенчмарков кластера при загрузке логов и метрик. А разница там заметная. Надеемся, вам это поможет с определением объёма кластера Elasticsearch и расшифровкой того самого «it depends».



В некотором роде, эта статья является продолжением нашей статьи о сайзинге на Хабре. Но здесь появились примеры из реальной жизни, поэтому если есть потребность в некоей преемственности, начните с той статьи, а уж потом возвращайтесь сюда. Под катом все подробности.
Читать дальше →

Apache Cassandra 4.0: бенчмарки

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


Apache Cassandra 4.0 приближается к бете (прим. переводчика: на текущий момент уже доступна бета 4, выпущенная в конце декабря 2020), и это первая версия, которая будет поддерживать JDK 11 и более поздних версий. Пользователей Apache Cassandra, очевидно, волнует задержка, так что мы возлагаем большие надежды на ZGC — новый сборщик мусора с низкой задержкой, представленный в JDK 11.


В JDK 14 он был выпущен уже в GA-версии, и нам было очень интересно оценить, насколько он подходит для кластеров Apache Cassandra. Мы хотели сравнить производительность Apache Cassandra 3.11.6 и 4.0 и проверить, подходит ли Shenandoah, сборщик мусора от Red Hat, для продакшена. Спойлер: Cassandra 4.0 значительно лучше по производительности сама по себе, а с новыми сборщиками мусора (ZGC и особенно Shenandoah) будет совсем хорошо.

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

Четыре API для базы данных

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

Как то мы уже обращались к теме превосходства объектного/типизированного представления в реализации моделей предметной области в сравнении с SQL. И верность тех доводов и фактов на на йоту не уменьшилась. Казалось бы, зачем отступать и обсуждать технологии, которые глобально низвергают абстракции обратно в дообъектную и дотипизированную эпоху? Зачем провоцировать рост спагетти-кода, непроверяемых ошибок и упование на виртуозное мастерство разработчика?

Есть несколько соображений о том, почему стоит поговорить про обмен данными через API на основе SQL/REST/GraphQL, в противовес представлению их в виде типов/объектов:

Читать далее

Паспортный контроль, или Как сжать полтора гигабайта до 42 мегабайт

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

Однажды, в качестве тестового задания на позицию PHP разработчика была предложена задача реализации сервиса проверки номеров паспортов граждан РФ на предмет нахождения в списке недействительных. Текст задания был лаконичным: «Пользовательская база 10 миллионов, время ответа 1 миллисекунда, аптайм 99%».

Не густо, но попробуем сделать из этого конфетку.

Читать далее

Кластеризация и классификация больших Текстовых данных с помощью М.О. на Java. Статья #3 — Архитектура/Результаты

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

Привет, Хабр! Сегодня будет продолжение темы Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Данная статья является продолжением первой и второй статьи.

Читать далее

Фирма «1С» приглашает вас принять участие в нашей первой конференции для системных разработчиков

Время на прочтение2 мин
Количество просмотров7.1K
Всем добрый день!

Фирма «1С» приглашает вас принять участие в нашей первой конференции для системных
разработчиков, которая пройдет 23 января в онлайн-формате.

Наверное, вы сейчас думаете «да 1С это ж бухгалтерия, какая системная разработка?»

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

Например, знаете ли Вы, что среди технологий 1С есть высоконагруженный кластер, с
продвинутой балансировкой нагрузки и обеспечением отказоустойчивости?

Или зачем нам вдруг понадобилось использовать NoSQL DB при разработке собственной IDE? (Да-да, у нас есть собственная IDE, да не одна, а целых три!)
Читать дальше →

Как бы я сейчас объяснил молодому себе… зачем существуют требования ACID для баз данных?

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

Я – выскочка. По крайней мере, так я себя иногда ощущаю. Закончив второй курс политологии и журналистики в университете, я увидел американский рейтинг профессий по уровню оплаты труда. Журналист в этом рейтинге был на последнем месте, а на первых местах были data scientists и data engineers (политолога в этом списке, почему-то, не было). Я не знал, кто составлял этот список, и понятия не имел, кто такие эти data-челы с первых строк, но он меня впечатлил. Я бросил пить и начал проходить курсы на Coursera, а потом каким-то чудом заполучил студенческую подработку в стартапе. Так я сделал своё «войти в IT».

Когда человек, не имеющий университетской подготовки, пытается начать программировать, то он чувствует себя несчастным, который, увидев из окна солнце, вышел на улицу и попал под неожиданный в столь прекрасный день град: шаблоны проектирования, функции, классы, ООП, инкапсуляция, протоколы, потоки, ACID… Хочется прокричать, как Виктор Фёдорович в своё время:

Окно в удивительный мир баз данных...

Как мы пытались с NoSQL работать как с SQL с помощью Hibernate и Apache Phoenix

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

Мы хотели реализовать пагинацию и для этого нам пришлось форкнуть диалект для Hibernate.

Читать далее

CRDT, RON и Сети Данных

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

Эта статья о следующем эволюционном шаге в развитии систем обработки данных. Тема амбициозная, поэтому расскажу сначала немного о себе. Вот уже больше 10 лет я работаю над проектами в области CRDT и синхронизации данных. За это время успел поработать на университеты, стартапы YCombinator и известные международные компании. Мой проект последние три года – Replicated Object Notation, новый формат представления данных, сочетающий возможности объектной нотации (как JSON или YAML), сетевого протокола и оплога/бинлога. Вы могли слышать про другие проекты, работающие в том же направлении, например, Datanet, Automerge и другие. Также вы могли читать Local-first software, это наиболее полный манифест данного направления Computer Science. Авторы - замечательный коллектив Ink&Switch, включая широко нам известного по "Книге с Кабанчиком" М.Клеппманна. Или вы, возможно, слушали мои выступления по этой теме на различных конференциях.

Идеи этой статьи перекликаются с тем, что пишет последние годы Pat Helland: Immutability Changes Everything и др. Они смежны с проектами IPFS и DAT, к которым я имею отношение.

Итак. Классические БД выстроены на линейном логе операций (WAL). От этого лога выстроены транзакции, от него же выстроена репликация master-slave. Теория репликации с линейным логом написана ещё в начале 1980-х с участием небезызвестного Л. Лампорта. В классических legacy системах с одной большой центральной базой данных всё это работает хорошо. Так работают Oracle, Postresql, MySQL, DB2 и прочие классические SQL БД. Так работают и многие key-value БД, например, LevelDB/RocksDB.

Но линеаризация не масштабируется. Когда система становится распределённой, всё это начинает ломаться. Образно говоря, линейная система – это что-то вроде греческой фаланги. Нужно, чтобы все шли ровно, а для этого хорошо, чтобы земля была везде ровной. Так получается не всегда: где-то электричество отключили, а где-то сеть медленная. Хотя в системе Google Spanner и было показано, что с достаточно большим бюджетом землю можно сделать ровной абсолютно везде, мы всё же отметим, что Google тоже бывает отключается целиком по совершенно смешным причинам.

Читать далее

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

Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Статья #2 — Алгоритмы

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

Привет, Хабр! Сегодня будет продолжение темы Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Данная статья является продолжением первой статьи.



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


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

Рейт лимиты с помощью Python и Redis

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

В этой статье мы рассмотрим некоторые алгоритмы рейт лимитов на основе Python и Redis, начиная с самой простой реализации и заканчивая продвинутым обобщённым алгоритмом контроля скорости передачи ячеек (Generic Cell Rate Algorithm, GCRA).

Для взаимодействия с Redis (pip install redis) мы будем пользоваться redis-py. Предлагаю клонировать мой репозиторий для экспериментирования с ограничениями запросов.
Читать дальше →

Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Статья #1 — Теория

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

Данная статья будет состоять из 3 частей (Теория/Методы и алгоритмы для решение задач/Разработка и реализация на Java) для описания полной картины. Первая статья будет включать только теорию, чтобы подготовить умы читателей.

Цель статьи:

  • Частичная или полная автоматизация задачи кластеризации и классификации больших данных, а именно текстовых данных.
  • Применение алгоритмов машинного обучение “без учителя” (кластеризация) и “с учителем” (классификация).
  • Анализ текущих решений задач.

Задачки, которые будут рассматриваться в целом:

  1. Разработка и применение алгоритмов и методов обработки естественного языка.
  2. Разработка и применение методов кластеризации для определения кластерных групп входных документов.
  3. Применение методов классификации для определения предмета каждых кластерных групп.
  4. Разработка веб-интерфейса на основе Java Vaadin

Гипотезы, которые я вывел из задачки и при обучении теории:

  • Классификация кластерных групп определяет абстрактные и более ценные скрытые знания, игнорируя шумы, чем классификация отдельных объектов.
  • Точность кластеризации прямо пропорциональна количеству кластерных групп и обратно пропорциональна количеству объектов в одной кластерной группе.

Забегая вперед, кому интересен сам алгоритм, вот обзор.

Алгоритм программного обеспечение для машинного обучения состоит из 3 основных частей:

  1. Обработка естественного языка.
    1. токенизация;
    2. лемматизация;
    3. стоп-листинг;
    4. частота слов;

  2. Методы кластеризации.
    TF-IDF ;
    SVD;
    нахождение кластерных групп;
  3. Методы классификации – Aylien API.

Итак, начнем теорию.
Читать дальше →

Как быстро загрузить большую таблицу в Apache Ignite через Key-Value API

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

Некоторое время назад на горизонте возникла и начала набирать популярность платформа Apache Ignite. Вычисления in-memory — это скорость, а значит, скорость должна быть обеспечена на всех этапах работы, особенно при загрузке данных.


Под катом находится описание способа быстрой загрузки данных из реляционной таблицы в распределенный кластер Apache Ignite. Описана предобработка SQL query result set на клиентском узле кластера и распределение данных по кластеру с помощью задания map-reduce. Описаны кеши и соответствующие реляционные таблицы, показано, как создать пользовательский объект из строки таблицы и как применить ComputeTaskAdapter для быстрого размещения созданных объектов. Весь код полностью можно увидеть в репозитории FastDataLoad.

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

Как лицензируется и чем отличаются лицензии Elastic Stack (Elasticsearch)

Время на прочтение3 мин
Количество просмотров17K
В этой статье расскажем как лицензируется Elastic Stack, какие бывают лицензии, что туда входит (ключевые возможности), немножечко сравним Elastic с OpenDistro от AWS и другими известными дистрибутивами.


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

Инструменты Node.js разработчика. Какие ODM нам нужны

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

ODM - Object Document Mapper - используется преимущественно для доступа к документоориенриирвоанным базам данных, к которым относятся MongoDB, CouchDB, ArangoDB, OrientDB (последние две базы данных гибридные) и некоторые другие.

Прежде чем перейти к рассмотрению вопроса, озвученного в названии сообщения, приведу статистику скачивания пакетов из публичного регистра npm.

Читать далее

Эта база данных в огне…

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


Позвольте мне рассказать техническую историю.

Много лет назад я разрабатывал приложение со встроенными в него функциями совместной работы. Это был удобный экспериментальный стек, в котором использовался полный потенциал раннего React и CouchDB. Он в реальном времени синхронизировал данные по JSON OT. Его использовали во внутренней работе компании, однако широкая применимость и потенциал в других сферах были очевидными.

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