Приведу несколько распространённых стратегий развертывания приложений/сервисов, а также разберу пять популярных стратегий «жонглирования» данными между системами кеширования и базами данных.
Кэширование обмена данными между сервисами в Kubernetes и Istio
Команда Trendyol Platform разработала решение проблемы межмикросервисного кэширования в Kubernetes. Приводим перевод статьи, где она делится опытом и рассказывает о создании приложения Sidecache.
Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений
Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.
Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.
Проектирование эффективной системы кэширования для высоконагруженной системы
Способность обрабатывать большой объем запросов и данных в реальном времени является ключевым аспектом надежности и производительности современных информационных систем. Одним из способов повышения надежности, снижения нагрузки и, как следствие, расходов на сервера, является применение системы эффективного кэширования на уровне приложения. В этой статье я расскажу о возможных подводных камнях и эффективных стратегиях построения такой системы.
Глобалы MUMPS: Экстремальное программирование баз данных. Часть 2
Глобалы MUMPS: Экстремальное программирование баз данных. Часть 3
Начало см. часть 1, часть 2.
Вторичные индексы
В реляционных базах данных вторичные индексы задаются как правило при определении таблиц, или после с помощью ALTER TABLE. Если индекс определён, то он автоматически создаётся, а потом поддерживается и пересчитывается базой данных при изменении данных.
В MUMPS индексы обслуживаются явно программистом, например, в функции обновления таблицы.
Репортаж с InterSystems Global Summit 2013
С 7 по 11 апреля в г. Орландо, Флорида состоялся очередной InterSystems Global Summit 2013. Это ежегодное событие собирает сотни разработчиков и партнеров компании InterSystems со всего мира. В рамках саммита топ-менеджмент InterSystems объявляет об итогах работы компании за год, проводятся лекции и семинары с hands-out по новинкам и лучшим практикам в работе с технологиями InterSystems. Под катом небольшой фоторепортаж с InterSystems Global Summit 2013.
Примеры генерации и отправки Email средствами СУБД Caché
Всё это можно реализовать непосредственно в самой СУБД Caché, выступающей здесь и как
Далее рассмотрим следующие примеры:
- создание текстового письма
- создание письма в формате HTML
- добавление вложений
- добавление изображений в само тело письма
- другие примеры
Сетевое кеширование в iOS. NSURLCache
NSURLCache
— это комплексное решение для кеширования сетевых запросов в оперативной памяти или на диске. В соответствии с документацией Apple, любой запрос с использованием NSURLConnection
будет «пропущен» через NSURLCache
.Кеширование уменьшает количество необходимых обращений к сети, улучшает впечатление от работы с программой во время полного отсутствия интернета или проблем с сетевым соединением.
Логическая организация кэш-памяти процессора
Кэш память процессора используется для уменьшения времени простоя процессора при обращении к RAM.
Основная идея кэширования опирается на свойство локальности данных и инструкций: если происходит обращение по некоторому адресу, то велика вероятность, что в ближайшее время произойдет обращение к памяти по тому же адресу либо по соседним адресам.
Логически кэш-память представляет собой набор кэш-линий. Каждая кэш-линия хранит блок данных определенного размера и дополнительную информацию. Под размером кэш-линии понимают обычно размер блока данных, который в ней хранится. Для архитектуры x86 размер кэш линии составляет 64 байта.
Так вот суть кэширования состоит в разбиении RAM на кэш-линии и отображении их на кэш-линии кэш-памяти. Возможно несколько вариантов такого отображения.
Релиз СУБД 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%.
Полная версия документа на английском языке.
Обо всем по порядку и о других изменениях версии под катом.
Новое в СУБД Caché 2013.1: добавление и генерация индексов на «живых» классах
- их генерация должна быть максимально быстрой
- чтобы генерацию можно было производить порциями.
К примеру, если есть таблица на 300М записей и работы с ней можно производить только в нерабочее время, то чтобы можно было разбить весь процесс на три ночи по 100М записей - появление новых индексов и сам процесс их генерации не должны мешать текущей работе с классом/таблицей
Для этого можно было бы воспользоваться уже известным методом %BuildIndices(), но в таком случае это не будет удовлетворять нашим условиям.
Каков же выход?
Действительно ли у каждого ядра есть «свой собственный» кэш первого и второго уровней?
Priority inversion – ситуация, когда низкоприоритетный процесс может блокировать или замедлять высокоприоритетный. Обычно имеется в виду очередность доступа к исполнению на ядре для высокоприоритетного кода относительно низкоприоритетного. С этим должно неплохо справляться ядро ОС. Однако помимо вычислительных ядер, которые несложно распределять посредством affinity и MSI-X, в процессоре есть ресурсы, общие для всех задач – контроллер памяти, QPI, общий кэш третьего уровня, PCIe устройства. В вопросы PCIe я углубляться не буду, т.к. не являюсь экспертом в данной теме. Priority inversion на почве доступа к памяти и QPI я давно не наблюдал – пропускной способности современного многоканального контроллера как правило хватает и высокоприоритетным, и низкоприоритетным задачам. Остановлюсь на кэшах.
Новое в СУБД Caché 2013.1: встроенная поддержка WebSockets
В СУБД 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 или любую другую.
Новые визуальные HTML5 ZEN-компоненты в СУБД Caché 2013.2
Это такие компоненты как:
- %ZEN.Component.accordionMenu
- %ZEN.Component.toolbar
- %ZEN.Component.navigator
- %ZEN.Component.lookup
- %ZEN.Component.dataGrid
В справочнике классов вы можете найти всю документацию по этим компонентам. Здесь же будут приведены несколько вводных примеров их использования (со скриншотами).
Версионное хранение данных в Persistent-классах Caché
В этой статье демонстрируется, как реализовать хранение и восстановление версий для объектов Caché.
Bitmap-индексы в Caché на глобалах
В этой статье раскрывается, как устроены bitmap-индексы, как создать bitmap-индекс на произвольной структуре глобалов, как применять функции битовой логики и как эффективно их использовать при NoSQL работе в Caché.
Глобалы MUMPS: Экстремальное программирование баз данных. Часть 1
Примечание переводчика.
Есть интересная технология в мире БД — MUMPS. Этот язык программирования и доступа к данным известен уже несколько десятилетий, отлажен и является взрослой проверенной технологией.
Приведу аналогию: если SQL можно сравнить с Бейсиком, то MUMPS больше похож на Си — даёт высочайшую производительность, гибкость и универсальность, позволяя создавать наисложнейшие структуры данных.
Перед вами перевод первой части статьи «Extreme Database programming with MUMPS Globals». Если сообществу он покажется интересным, то последует перевод второй части.
Индексация неатомарных атрибутов
Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).
Одно и то же значение может быть атомарным или неатомарным в зависимости от смысла этого значения. Например, значение «4286» является
- атомарным, если его смысл — «пин-код кредитной карты» (при разбиении на части или переупорядочивании смысл теряется)
- неатомарным, если его смысл — «набор цифр» (при разбиении на части или переупорядочивании смысл не теряется)
В данной статье будут рассмотрены стандартные способы ускорения SQL-запросов по следующим типам полей: строка, дата, простой список (в формате $LB), коллекции-cписки и коллекции-массивы.
All-flash массив HP и еще 10 больших изменений в системах хранения 3PAR (часть1)
HP 3PAR StoreServ 7450
Практически любая система хранения, представленная сейчас на рынке, поддерживает накопители SSD.
Традиционно, требования высокой производительности от дисковой подсистемы достигалось добавлением большого количества вращающиеся шпинделей, как правило с минимальной утилизацией их объема (рис1).
Использование SSD накопителей позволило сократить число вращающихся шпинделей, подняв при этом производительность массивов данных.
Рис.1 Достижение высокой производительности в массивах традиционного типа и в современных массивах