Когда вопрос заходит о хранении в БД гибких (заранее не известных, часто изменяемых) структур данных, разработчики обычно обращаются к «великому и ужасному» EAV-паттерну, либо к ныне модным NOSQL базам данных.
Не так давно такая задача стала и передо мной.
— EAV. Вызывает у меня стойкую неприязнь, да и сказано и написано об этом было очень много всего негативного (Кайт, Фаулер, Карвин, Горман). Главный минус в том, что при написании запросов приходится оперировать уже не реальными сущностями («Сотрудник», «Дом», «Клиент», то для чего и предназначен SQL), а объектами, орагнизованными на более низком уровне (извините за сумбур). Поэтому это был самый не желательный вариант.
— NOSQL. Поначалу очень заинтересовал этот вариант (в частности MongoDB). После продолжительного использования реляционок, первое время начинаешь испытывать чувство тотальной свободы, от которого захватывает дыхание. Хранение документов любой структуры, моментальное создание новых коллекций, запросы к ним — красота! Но после непродолжительного использования эйфория начала спадать, а проблемы обнаруживаться:
— Бедный язык запросов (ИМХО) + отсутствие джойнов;
— Отсутствие схем (хорошая статья недавно была на эту тему (и не только на эту) habrahabr.ru/post/164361/);
— Отсутствие встроенной поддержки ссылочной целостности;
— Отсутствие прибамбасов в виде хранимых процедур/функций, триггеров, представлений и многого другого.
— В моем приложении помимо данных с гибкой(изменяемой) структурой также необходимо хранить обычные статические данные — таблица пользователей, посещений, сотрудников и т.д. Работать с которыми (опять же имхо) гораздо проще и (самое главное) надежнее в обычной реляционной базе (та же самая ссылочная целостность и пр.).
Метка «nosql» - 5
Postgre(no)SQL или снова о хранении данных с гибкой структурой
2013-01-06 в 5:43, admin, рубрики: nosql, postgresql, базы данных, метки: nosql, postgresql, базы данныхSQL-доступ к NoSQL-данным: реализация SQL-процедуры в Caché с динамическим определением возвращаемых метаданных
2012-11-27 в 15:57, admin, рубрики: cache, cos, intersystems cache, jdbc, nosql, odbc, sql, Блог компании InterSystems, метки: cache, cos, InterSystems cache, jdbc, nosql, odbc, sql Как известно, Caché можно использовать как реляционную СУБД, в том числе через JDBC/ODBC драйверы, с возможностью исполнения произвольных SQL-запросов и вызова SQL-процедур.
Известно также, что все данные в Caché хранятся в многомерных разреженных массивах — глобалах. Это позволяет в случае недостаточной производительности отдельно взятой SQL-процедуры не использовать стандартный CachéSQL-движок, а переписать ее код исполнения на языке серверной бизнес-логики Caché ObjectScript (COS), в котором можно реализовать оптимальный алгоритм выполнения SQL-процедуры, часто используя более оптимальные NoSQL-структуры данных (глобалы).
Однако в стандартной библиотеке классов Caché существует одно ограничение: для SQL-процедур, в которых отбор выполняется самописным COS-кодом, необходимо определять набор возвращаемых полей на этапе компиляции — т.е. нет возможности динамически задать метаданные для SQL-процедуры, работающей с NoSQL структурами.
О том, как снять это ограничение, рассказано под катом.
Читать полностью »
Использование MongoDB в Django
2012-11-25 в 20:49, admin, рубрики: database, django, mongodb, nosql, Веб-разработка, метки: database, Django, mongodb, nosql
— документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++ и распространяется в рамках лицензии Creative Commons.
В последнее время становится довольно популярной и восстребованой. И вот возникла идея использовать ее в связке с фреймворком Django. Собственно о чем далее и пойдет речь.
Amazon Dynamo DB теперь доступен в Южной Америке
2012-11-22 в 11:27, admin, рубрики: Amazon Web Services, AWS, cloud computing, nosql, Блог компании EPAM Systems Ukraine, метки: aws, cloud computing, nosql
В последнее время веб-приложения генерируют и потребляют постоянно возрастающие объёмы данных. Для примера: в онлайн-игру на старте могут играть всего пара тысяч пользователей, нагрузки на БД небольшие, и с ними справляется один сервер. Но, с ростом популярности игры, количество пользователей может быстро увеличиться до миллионов, а нагрузка на БД — до десятков, сотен тысяч операций чтения и записи в секунду. В такой ситуации остро встаёт вопрос о масштабировании системы хранения данных.
В январе 2012 Amazon запустил в своём облаке сервис Dynamo DB. Это NoSQL база данных, которая позволяет решить проблемы масштабирования и производительности. Теперь этот сервис доступен и в Южно-Американском регионе.
Читать полностью »
Разработчики «Мамбы» на конференции HighLoad++2012
2012-10-23 в 12:05, admin, рубрики: comet, leveldb, nosql, автоматизация, архитектура, Блог компании Мамба, деплой, деплоймент, знакомства, метки: comet, highload, leveldb, nosql, автоматизация, архитектура, деплой, деплоймент, знакомства Сегодня стартовала самая значимая конференция для разработчиков HighLoad++2012
Наши прекрасные разработчики расскажут много интересного и полезного о высоконагруженной системе знакомств с аудиторией в 17 000 000 пользователей.
Спикеры «Мамбы»:
Глеб Арестов
Использование Comet для создания интерактивных интерфейсов
Михаил Буйлов
Цикл разработки, визуальный деплой, автоматизация и интернационализация
Дмитрий Ананьев
Читать полностью »
Начинаем использовать TarantoolBox в Java проекте
2012-10-21 в 20:36, admin, рубрики: java, mysql, nosql, replication, tarantool, метки: java, mysql, nosql, replication, tarantool В статье ниже я попытаюсь кратко рассказать о том, что такое TarantoolBox и как начать его использовать в уже существующем проекте если вы программируете на Java. Если же вы программируете на другом языке, то вам могут быть интересны некоторые инструменты доступные в коннекторе, такие как возможность редактирование xlog файлов и создание snap файлов из любых данных.
Читать полностью »
Начинаем использовать Tarantool в Java проекте
2012-10-21 в 20:36, admin, рубрики: java, mysql, nosql, replication, tarantool, метки: java, mysql, nosql, replication, tarantool В статье ниже я попытаюсь кратко рассказать о том, что такое Tarantool и как начать его использовать в уже существующем проекте если вы программируете на Java. Если же вы программируете на другом языке, то вам могут быть интересны некоторые инструменты доступные в коннекторе, такие как возможность редактирование xlog файлов и создание snap файлов из любых данных.
Читать полностью »
Как устроена cassandra
2012-10-17 в 13:15, admin, рубрики: cassandra, nosql, метки: cassandra, nosql 
В этом топике я хотел бы рассказать о том, как устроена кассандра (cassandra) — децентрализованная, отказоустойчивая и надёжная база данных “ключ-значение”. Хранилище само позаботится о проблемах наличия единой точки отказа (single point of failure), отказа серверов и о распределении данных между узлами кластера (cluster node). При чем, как в случае размещения серверов в одном центре обработки данных (data center), так и в конфигурации со многими центрами обработки данных, разделенных расстояниями и, соответственно, сетевыми задержками. Под надёжностью понимается итоговая согласованность (eventual consistency) данных с возможностью установки уровня согласования данных (tune consistency) каждого запроса.
NoSQL базы данных требуют в целом большего понимания их внутреннего устройства чем SQL. Эта статья будет описывать базовое строение, а в следующих статьях можно будет рассмотреть: CQL и интерфейс программирования; техники проектирования и оптимизации; особенности кластеров размещённых в многих центрах обработки данных.
Читать полностью »
Конкурс студенческих проектов InterSystems Student Innovator Awards 2012
2012-10-15 в 15:17, admin, рубрики: challenge, contest, dbms, intersystems, intersystems cache, nosql, Блог компании InterSystems, вуз, конкурс, призы, студент, метки: challenge, contest, dbms, InterSystems, InterSystems cache, nosql, вуз, конкурс, призы, студент Открыт прием заявок на ежегодный конкурс программных решений
Students Innovator Awards 2012.
Мы рассматриваем заявки на программные проекты на базе технологий InterSystems: Caché, DeepSee, Ensemble, GlobalsDB.
Прием заявок до 10 декабря.
Читать полностью »
NewSQL — новый виток в эволюции BigData, забираем лучшее из SQL и NoSQL
2012-10-12 в 13:13, admin, рубрики: acid, big data, Facebook, mysql, NewSQL, nosql, sql, Веб-разработка, метки: Facebook, mysql, NewSQL, nosql, sqlNewSQL
Начало
Сегодня очень легко наблюдать стремительный рост данных в интернете. Согласно одной оценке, данные, созданные в 2010, составляют приблизительно 1,200 ЭБ (1018 байт) и вырастут почти к 8,000 ЭБ к 2015 в Интернете, являющимся основным поставщиком данных к потребителю.
Этот рост опережает рост вместимости, приводя к появлению систем управления информацией, где данные хранятся распределенным способом, но получают доступ и анализируют, как будто они находятся на одной машине.
Пока программисты всего мира устраивают глобальные Holywars на тему: «SQL vs NoSQL», крупные компании, такие как Google и Facebook со своей миллиардной аудиторией всеми силами борются с нехваткой мощностей и предельными работами СУБД. Несмотря на появление новой технологии NoSQL, которая позволяла легко масштабировать данные, она так и не решила вопросы связанные с соответствием операций требованиям ACID (atomicity, consistency, isolation, durability — «атомарность, непротиворечивость, изолированность, долговечность») — стандарта, который гарантирует точность выполнения оперативных транзакций средствами СУБД, даже если работа системы прерывалась. На фоне всего этого компания VoltDB при поддержке нескольких других компаний, начали разрабатывать с чистого листа новый opensource проект под название NewSQL, сочетающий в себе лучшие стороны SQL и NoSQL.
Читать полностью »
