Pull to refresh

Стратегии развертывания (деплоя) и стратегии кэширования

Level of difficultyEasy
Reading time3 min
Views6.3K

Приведу несколько распространённых стратегий развертывания приложений/сервисов, а также разберу пять популярных стратегий «жонглирования» данными между системами кеширования и базами данных.

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments1

Кэширование обмена данными между сервисами в Kubernetes и Istio

Reading time7 min
Views3.5K

Команда Trendyol Platform разработала решение проблемы межмикросервисного кэширования в Kubernetes. Приводим перевод статьи, где она делится опытом и рассказывает о создании приложения Sidecache.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments0

Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений

Level of difficultyMedium
Reading time10 min
Views8.6K

Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.

Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments6

Проектирование эффективной системы кэширования для высоконагруженной системы

Reading time5 min
Views13K

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments3

Глобалы MUMPS: Экстремальное программирование баз данных. Часть 2

Reading time7 min
Views8.8K
Роб Твид (Rob Tweed)
Начало см. часть 1.

Глава 2. SQL/реляционные БД против MUMPS



В этой главе будут изложены основные различия между обычными SQL реляционными базами данных и БД на основе MUMPS.

Прочитайте главу 1, если вам нужно лучше понять что такое глобалы и как делаются манипуляции с ними.
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments4

Глобалы MUMPS: Экстремальное программирование баз данных. Часть 3

Reading time9 min
Views8.1K
Роб Твид (Rob Tweed)
Начало см. часть 1, часть 2.

Вторичные индексы

В реляционных базах данных вторичные индексы задаются как правило при определении таблиц, или после с помощью ALTER TABLE. Если индекс определён, то он автоматически создаётся, а потом поддерживается и пересчитывается базой данных при изменении данных.

В MUMPS индексы обслуживаются явно программистом, например, в функции обновления таблицы.
читать дальше про индексы, триггеры и транзакции
Total votes 17: ↑14 and ↓3+11
Comments46

Репортаж с InterSystems Global Summit 2013

Reading time3 min
Views1.5K
image
С 7 по 11 апреля в г. Орландо, Флорида состоялся очередной InterSystems Global Summit 2013. Это ежегодное событие собирает сотни разработчиков и партнеров компании InterSystems со всего мира. В рамках саммита топ-менеджмент InterSystems объявляет об итогах работы компании за год, проводятся лекции и семинары с hands-out по новинкам и лучшим практикам в работе с технологиями InterSystems. Под катом небольшой фоторепортаж с InterSystems Global Summit 2013.
Читать дальше →
Total votes 4: ↑2 and ↓20
Comments0

Примеры генерации и отправки Email средствами СУБД Caché

Reading time6 min
Views4.2K
Нередко возникает необходимость в автоматической генерации и отправке электронных писем на основе данных из БД. Это могут быть различные отчёты с таблицами, диаграммами или уведомления о наступлении каких-то событий.
Всё это можно реализовать непосредственно в самой СУБД Caché, выступающей здесь и как почтовый сервер приложений.

Далее рассмотрим следующие примеры:
  • создание текстового письма
  • создание письма в формате HTML
  • добавление вложений
  • добавление изображений в само тело письма
  • другие примеры
Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments44

Сетевое кеширование в iOS. NSURLCache

Reading time5 min
Views21K
Данная тема важна при разработке любого приложения, взаимодействующего с сетью. Здесь грамотное использование возможностей системы может значительно улучшить взаимодействие пользователя с программой.

NSURLCache — это комплексное решение для кеширования сетевых запросов в оперативной памяти или на диске. В соответствии с документацией Apple, любой запрос с использованием NSURLConnection будет «пропущен» через NSURLCache.

Кеширование уменьшает количество необходимых обращений к сети, улучшает впечатление от работы с программой во время полного отсутствия интернета или проблем с сетевым соединением.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments3

Логическая организация кэш-памяти процессора

Reading time3 min
Views38K
На днях решил систематизировать знания, касающиеся принципов отображения оперативной памяти на кэш память процессора. В результате чего и родилась данная статья.

Кэш память процессора используется для уменьшения времени простоя процессора при обращении к RAM.

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

Логически кэш-память представляет собой набор кэш-линий. Каждая кэш-линия хранит блок данных определенного размера и дополнительную информацию. Под размером кэш-линии понимают обычно размер блока данных, который в ней хранится. Для архитектуры x86 размер кэш линии составляет 64 байта.



Так вот суть кэширования состоит в разбиении RAM на кэш-линии и отображении их на кэш-линии кэш-памяти. Возможно несколько вариантов такого отображения.
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments10

Релиз СУБД Caché 2013.1

Reading time8 min
Views4.5K
Вышла новая версия Caché 2013.1 Что нового?

Развитие функционала
  • дальнейшее развитие EXtreme Event Persistence;
  • поддержка WebSocket;
  • расширенная поддержка JSON;
  • новый редактор панелей в BI DeepSee.

Повышение скорости разработки
  • multiсompile классов;
  • новая команда COS return;
  • args по ссылке;
  • %Find для Caché SQL.

Улучшение производительности
  • производительность обработки XML +50%;
  • улучшение производительности de-journaling;
  • повышение производительности ROLLBACK до 20%;
  • увеличение лимита глобального буфера до 16 ТБ;
  • увеличение лимита разделяемой памяти до 1 ТБ;
  • построение индексов класса с минимальным временем простоя — %Library.IndexBuilder;
  • эскалация блокировок;
  • увеличение производительности конкурентных обновлений — до 30%.

Полная версия документа на английском языке.
Обо всем по порядку и о других изменениях версии под катом.
Читать дальше →
Total votes 7: ↑5 and ↓2+3
Comments9

Новое в СУБД Caché 2013.1: добавление и генерация индексов на «живых» классах

Reading time4 min
Views2.5K
Предположим, что у вас есть таблица с большим количеством записей и в неё нужно добавить один или несколько индексов со следующими условиями:

  1. их генерация должна быть максимально быстрой
  2. чтобы генерацию можно было производить порциями.
    К примеру, если есть таблица на 300М записей и работы с ней можно производить только в нерабочее время, то чтобы можно было разбить весь процесс на три ночи по 100М записей
  3. появление новых индексов и сам процесс их генерации не должны мешать текущей работе с классом/таблицей

Для этого можно было бы воспользоваться уже известным методом %BuildIndices(), но в таком случае это не будет удовлетворять нашим условиям.

Каков же выход?
Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments9

Действительно ли у каждого ядра есть «свой собственный» кэш первого и второго уровней?

Reading time6 min
Views35K
У современных процессоров архитектуры Core i7 существует очевидный, документированный, но отчего-то не очень известный даже среди многих специалистов сценарий priority inversion. Его я опишу в этом посте. В нем есть код на С, три диаграммы, и некоторые подробности работы кэшей в процессорах архитектуры Core i7. Никаких покровов не срывается, вся информация давно общедоступна.

Priority inversion – ситуация, когда низкоприоритетный процесс может блокировать или замедлять высокоприоритетный. Обычно имеется в виду очередность доступа к исполнению на ядре для высокоприоритетного кода относительно низкоприоритетного. С этим должно неплохо справляться ядро ОС. Однако помимо вычислительных ядер, которые несложно распределять посредством affinity и MSI-X, в процессоре есть ресурсы, общие для всех задач – контроллер памяти, QPI, общий кэш третьего уровня, PCIe устройства. В вопросы PCIe я углубляться не буду, т.к. не являюсь экспертом в данной теме. Priority inversion на почве доступа к памяти и QPI я давно не наблюдал – пропускной способности современного многоканального контроллера как правило хватает и высокоприоритетным, и низкоприоритетным задачам. Остановлюсь на кэшах.
Читать дальше →
Total votes 59: ↑55 and ↓4+51
Comments31

Новое в СУБД Caché 2013.1: встроенная поддержка WebSockets

Reading time11 min
Views3.8K
В одной из предыдущих статей уже рассматривалась работа с WebSocket на примере собственной серверной реализации этого протокола поверх обычных сокетов.

В СУБД Caché 2013.1 CSP-Шлюз теперь включает поддержку спецификации HTML 5 для WebSocket-соединений между веб-сервером и HTML 5 совместимым браузером. Эта функция доступна для Apache 2.2 и выше, и для IIS 8.0, который является частью Windows Server 2012.

Поскольку в Caché 2013.1 уже встроен Apache 2.4, мы будем наши примеры запускать именно на нём.
Для реализации клиентской части использовался фреймворк ZEN, но вы можете переделать примеры и на технологию CSP или любую другую.

Итак, приступим...
Total votes 7: ↑6 and ↓1+5
Comments2

Новые визуальные HTML5 ZEN-компоненты в СУБД Caché 2013.2

Reading time31 min
Views3.8K
Стоит отметить, что новые визуальные HTML5 компоненты, интерфейс которых оптимизирован в том числе и под мобильные устройства, и которые используют формат JSON для получения данных, появились уже в СУБД Caché версии 2013.1, но не все из них пока работают «в полную силу».

Это такие компоненты как:

  • %ZEN.Component.accordionMenu
  • %ZEN.Component.toolbar
  • %ZEN.Component.navigator
  • %ZEN.Component.lookup
  • %ZEN.Component.dataGrid

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

Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments0

Версионное хранение данных в Persistent-классах Caché

Reading time9 min
Views3K
В стандартных хранимых классах Caché при модификации записи прежние значения свойств исчезают безвозвратно. Но бывают случаи, когда это нежелательно, когда «все ходы должны быть записаны». В первую очередь, конечно, такое требование возникает при разработке приложений для материально ответственных лиц, для которых критична возможность, например, отменить ошибочное действие и восстановить состояние документа на заданное время, или, что ещё важнее, провести расследование инцидента с попыткой злоумышленника «замести следы» в базе.
В этой статье демонстрируется, как реализовать хранение и восстановление версий для объектов Caché.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments12

Bitmap-индексы в Caché на глобалах

Reading time22 min
Views4K
В объектной СУБД Caché поддерживаются bitmap- и bitslice-индексы. Их очень просто использовать в классах Caché: достаточно в описании индекса указать признак Bitmap или Bitslice, и производительность некоторых SQL-запросов улучшается кардинально. Но как это работает?
В этой статье раскрывается, как устроены bitmap-индексы, как создать bitmap-индекс на произвольной структуре глобалов, как применять функции битовой логики и как эффективно их использовать при NoSQL работе в Caché.
Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments70

Глобалы MUMPS: Экстремальное программирование баз данных. Часть 1

Reading time12 min
Views23K
Примечание переводчика.

Есть интересная технология в мире БД — MUMPS. Этот язык программирования и доступа к данным известен уже несколько десятилетий, отлажен и является взрослой проверенной технологией.

Приведу аналогию: если SQL можно сравнить с Бейсиком, то MUMPS больше похож на Си — даёт высочайшую производительность, гибкость и универсальность, позволяя создавать наисложнейшие структуры данных.

Перед вами перевод первой части статьи «Extreme Database programming with MUMPS Globals». Если сообществу он покажется интересным, то последует перевод второй части.

Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments77

Индексация неатомарных атрибутов

Reading time16 min
Views3.3K
Цитаты из википедии (1NF):
Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).

Одно и то же значение может быть атомарным или неатомарным в зависимости от смысла этого значения. Например, значение «4286» является
  • атомарным, если его смысл — «пин-код кредитной карты» (при разбиении на части или переупорядочивании смысл теряется)
  • неатомарным, если его смысл — «набор цифр» (при разбиении на части или переупорядочивании смысл не теряется)

В данной статье будут рассмотрены стандартные способы ускорения SQL-запросов по следующим типам полей: строка, дата, простой список (в формате $LB), коллекции-cписки и коллекции-массивы.
Будет много SQL, немного классов и совсем чуть-чуть NoSQL
Total votes 8: ↑5 and ↓3+2
Comments0

All-flash массив HP и еще 10 больших изменений в системах хранения 3PAR (часть1)

Reading time9 min
Views14K
Сегодня в компании HP прошел большой анонс в департаменте систем хранения данных, этой информацией я хочу поделиться. Были анонсированы модели систем хранения среднего класса, оптимизированные на работу с флэш-носителями – HP 3PAR StoreServ 7450, а также был расширен функционал текущих систем 7000 / 10000.

HP 3PAR StoreServ 7450


Практически любая система хранения, представленная сейчас на рынке, поддерживает накопители SSD.
Традиционно, требования высокой производительности от дисковой подсистемы достигалось добавлением большого количества вращающиеся шпинделей, как правило с минимальной утилизацией их объема (рис1).
Использование SSD накопителей позволило сократить число вращающихся шпинделей, подняв при этом производительность массивов данных.


Рис.1 Достижение высокой производительности в массивах традиционного типа и в современных массивах

Подробности
Total votes 10: ↑8 and ↓2+6
Comments10