powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех.
25 сообщений из 101, страница 3 из 5
С пятницей всех.
    #40055673
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Мало ли ты встречал приложений завязанных на Oracle/MSSQL/etc которые сами следят за связностью данных в разных таблицах? А ведь это типичные RDBMS используемые в модели NR-DBMS и то что они используют язык запросов наследованный от SQL-92 не делает их реляционными.

Вопрос задан как-то странно. "Мало ли..."

Скажу так. Я встречал много плохих приложений которые благодаря законам и гарантиям RDBMS худо-бедно работали.
И я встречал "очень модные" попытки писать данные в Windows/NTFS и AWS/S3 которые впоследствии становились
мусорной свалкой где нельзя было ничего гарантировать и бизнес-логика должна была просто учитывать возможные
ошибки неконсистентности как данность.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055674
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

С другой стороны, я сейчас работаю с nosql базой (разработанной в начале 80-х), совершенно другой язык запросов, таблицы называют файлами и хранят структуру таблиц во внешних текстовых файлах... Но при этом весь доступ к БД организован через одну единственную билиотеку, которая читает те текстовые файлы и самостоятельно следит за целостностью ссылок. Так что несмотря на то что это "библиотека" - на практике получается классический embedded rdbms. При этом она считается и описывается как nosql, потом что там нет вообще ни грамма от sql :) Там конечно тоже не мало странностей и идиотизмов (в первую очередь из-за "встроенности" с которой надо уметь работать), но...

Что это за волшебная библиотека если не секрет? Я сейчас выпил два по 0.5 светлого и очень сентиментален
и уже готов взять в объятия это чудо и полюбить его крепче чем Oracle в БД и Erlang в отказоустойчивых системах.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055692
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
White Owl

С другой стороны, я сейчас работаю с nosql базой (разработанной в начале 80-х), совершенно другой язык запросов, таблицы называют файлами и хранят структуру таблиц во внешних текстовых файлах... Но при этом весь доступ к БД организован через одну единственную билиотеку, которая читает те текстовые файлы и самостоятельно следит за целостностью ссылок. Так что несмотря на то что это "библиотека" - на практике получается классический embedded rdbms. При этом она считается и описывается как nosql, потом что там нет вообще ни грамма от sql :) Там конечно тоже не мало странностей и идиотизмов (в первую очередь из-за "встроенности" с которой надо уметь работать), но...

Что это за волшебная библиотека если не секрет? Я сейчас выпил два по 0.5 светлого и очень сентиментален
и уже готов взять в объятия это чудо и полюбить его крепче чем Oracle в БД и Erlang в отказоустойчивых системах.
У меня есть форк Кодбейза, на котором работает 1С 7.7, но что там у Сова, я забыл. Возможно старый Advantage, таких было мало, где описания структур хранили отдельно.

Ах да, темка то %$#!@, но зачем?
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055702
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я имел в виду следующее. Стоимость поддержки изменений в реляционной БД ~ равна некой условной величине.
Назовем ее 1 story point. Добавить внешний ключ. 1 единица. Проиндексировать поле - тоже 1 единица. Порезать таблицу
вдоль на 2 суб-таблицы типа родитель-потомок - тоже 1 единица. Я утрирую конечно - но объем работ примерно
одинаков с точки зрения рисков. А в не-реляционных идет так. Сделать плюшку - 0.5 поинтов. Потом еще плюшка - 0.5 поинтов.
А потом прилетает плюшка которая стоит аж 100500 поинтов. Или ее сделать нереально или архитекторы просто ее не хотят
делать по причине того что модель уже настолько далека от желаемого что проще создать новую систему. При том что
в реляционной эта-же плюшка стоила бы ну 3-5 поинтов.
Вот это все - забудь.
Стоимость поддержки изменений в любой БД (реляционной и не) измеряется в IO.

Хочешь обновить одну запись? Читаем с диска в память индекс, в нем находим где в таблице находится нужная запись, читаем тот самый сектор с диска, обновляем данные в памяти, записываем обновленный сектор обратно на диск. Если условия поиска записи не попадает ни под один индекс - поочередно читаем с диска всю таблицу, проверяем каждую запись на совпадение с условием поиска.
Если хочешь создать новый индекс - поочередно читаем с диска всю таблицу, строим индекс, записываем его на диск.
Самое дорогое - IO с диском. Поэтому и стараются давать кэши побольше, SSD диски побыстрее, индексы поточнее.
Нету никаких "единиц" есть только чтение-запись с диска.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055703
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
White Owl

Разница между реляционной и не-реляционной базой на самом деле очень маленькая. И заключается она всего-лишь в том, что в "реляционной" можно определить связи (внешние ключи которые) и сам движок БД будет отслеживать их целостность при изменении данных. А в не-реляционной такой возможности нет, там за целостностью данных надо следить на уровне приложения. И все.

Ну ты даёшь блин. Ну возьми бухгалтерскую учебную бд и втащи ее в не-реляционную с сохранением
целостности денег на транзакциях и отчотах.

Кстати перечисли те системы из класса не-реляционных на которые ты ссылаешся. Тема - это размытая.
Тут - каждый сам себе что-то имеет в виду.
То есть о таких вещах как dBase, FoxPro, Clipper, Clarion ты никогда не слышал и бухгалтерию ты на них никогда не видел, да?
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055704
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
White Owl

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

Разве в Оракле я не могу сделать такое?

Код: plsql
1.
update table1 set counter = counter + 1;

Можешь. Только это не счетчик получается, а в каждой записи в таблице, увеличиваешь значение в поле counter. Можно, но обычно бессмысленно :)
Код: plsql
1.
update table1 set counter = counter + 1 where id=1234;

будет получше слегка :)

mayton
Ровно тоже самое я хотел от Cassandra но она отказала мне в декларации таблиц а вовсе не в реализации этого чудесного DML.
Ну и? Это уникальность Кассандры. Она хочет чтобы твой counter находился в отдельной таблице. Ну так вынеси его.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table nodes(
 node_id text primary key,
 last_ip text,
 last_port int
);
create table node_counters(
 node_id text primary key,
 pings_requests counter,
 get_peeers_requests counter,
 find_nodes_requests counter
);

В одной таблице описание объекта, в другой счетчики. Причем с точки зрения производительности будет лучше даже не одну таблицу, а три сделать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table node_counter_pings(
 node_id text primary key,
 pings_requests counter
);
create table node_counter_peers(
 node_id text primary key,
 get_peeers_requests counter
);
create table node_counter_requests(
 node_id text primary key,
 find_nodes_requests counter
);

Чем меньше таблица в ширину, тем больше записей влезает на одну страницу. И при условии что надо будет обновлять несколько записей подряд - вместо одного IO на каждую запись может получиться один IO на несколько записей. Тут может помочь кластерная индексация, хотя это и не совсем совпадает с твоей текущей задачей.

А работать с этим ты будешь также как и раньше, просто в одну таблицу пихаешь описание ноды, а потом дергаешь счетчики во вторичной таблице.
Код: plaintext
1.
2.
insert into table_with_info (id, description) values (1234, 'some entity');
update table_with_counter counter = counter+1 where id = 1234;
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055705
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
White Owl
А в IQ нет нужды делать индексы, там каждое поле автоматически индексировано потому что у БД колоночный метод хранения таблиц - очень тормознуто на обновлениях, но для выборок - конфетка.

А вот с этого момента - поподробнее. Column-oriented это не про индекс а про форму хранения.
Не знаком c IQ но идеология column-oriented это не про обновления а про выборки-агрегации.
Разворот на 90 градусов data-row по сути.

Хотя может мы о разных вещах говорим?
Нет, все правильно. Просто колоночные БД хранят (могут хранить) данные в одно-полевых индексах. Для пользователя они практически не видны, и даже не всегда этим можно вручную управлять, но внутри файл базы данных может состоять целиком из индексов.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055706
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
White Owl

С другой стороны, я сейчас работаю с nosql базой (разработанной в начале 80-х), совершенно другой язык запросов, таблицы называют файлами и хранят структуру таблиц во внешних текстовых файлах... Но при этом весь доступ к БД организован через одну единственную билиотеку, которая читает те текстовые файлы и самостоятельно следит за целостностью ссылок. Так что несмотря на то что это "библиотека" - на практике получается классический embedded rdbms. При этом она считается и описывается как nosql, потом что там нет вообще ни грамма от sql :) Там конечно тоже не мало странностей и идиотизмов (в первую очередь из-за "встроенности" с которой надо уметь работать), но...

Что это за волшебная библиотека если не секрет? Я сейчас выпил два по 0.5 светлого и очень сентиментален
и уже готов взять в объятия это чудо и полюбить его крепче чем Oracle в БД и Erlang в отказоустойчивых системах.
Она называется DBIO :)
И нет, это не шутка, она действительно так называется :)
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055716
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ФС как база данных.

Сценарии, когда такое прокатит и всё такое.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055769
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
mayton
пропущено...

Ну ты даёшь блин. Ну возьми бухгалтерскую учебную бд и втащи ее в не-реляционную с сохранением
целостности денег на транзакциях и отчотах.

Кстати перечисли те системы из класса не-реляционных на которые ты ссылаешся. Тема - это размытая.
Тут - каждый сам себе что-то имеет в виду.
То есть о таких вещах как dBase, FoxPro, Clipper, Clarion ты никогда не слышал и бухгалтерию ты на них никогда не видел, да?

dBase видел. Мы грузили с него телефонный трафик в Oracle.

Бухгалтерию не видел. Мы как раз смигрировали с одной старой dbf-системы на Парус предприятие.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055772
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table node_counter_pings(
 node_id text primary key,
 pings_requests counter
);
create table node_counter_peers(
 node_id text primary key,
 get_peeers_requests counter
);
create table node_counter_requests(
 node_id text primary key,
 find_nodes_requests counter
);

Чем меньше таблица в ширину, тем больше записей влезает на одну страницу. И при условии что надо будет обновлять несколько записей подряд - вместо одного IO на каждую запись может получиться один IO на несколько записей. Тут может помочь кластерная индексация, хотя это и не совсем совпадает с твоей текущей задачей.

Не могу согласится с таким разбиением. В инженерных задачах - эстетика тоже важна.
А я - большой эстет.

Я не ставлю себе задачей - суждать физический размер data-row. Эта цель - специфична для
bigdata - технологий. И оптимизация попаданий в кеш-линию мне тоже не нужна пока.
Мне важнее то насколько удобно я буду видеть статистику реквестов по нодам. Тем более
что они связны. Если нода сделала ping. То следующим реквестом оа запросит список
известных пиров или другиг нодов. Корреляция выходит. И зачем мне тогда таблицы
нарезанные узкими полосками? Тут самое толстое поле - это первичный ключ. Разумнее
склеивать.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055777
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А разве сам движок БД не мог бы размещать столбцы по отдельности, если в
определённых ситуациях это производительнее? Потому что размещать атрибуты в
отдельных таблицах — это беспредел.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055799
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton,

А разве сам движок БД не мог бы размещать столбцы по отдельности, если в
определённых ситуациях это производительнее? Потому что размещать атрибуты в
отдельных таблицах — это беспредел.

Apache ORC и Parquet так и делают. Но это не движки DBMS. А движки неких замороженных снимков
данных для аналитики. Обычно они - исторические. По сути это форматы бинарного хранения больших
данных. Даижком это назвать вряд-ли можно.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055808
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik
mayton, интересует запрет повторного запуска проги той же папки. Из другой можно. Главный вопрос - активировать прогу уже запущенную из этой папки.


Очень просто же, вешаешь мьютекс именованый глобальный, если создал -- ты первый. Если мьютекс уже был создан -- приложение уже было запущено, и ты завершаешься.

Либо также можно глобальный атом делать, либо другой любой именованый объект межпроцессного взаимодействия.
(в линуксах для этого используют часто реальные файлы в файловой системе)
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055814
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Нужны какие то тесты что ли....
Показывающие что "вот схема классик и бд не справляется" = наличие проблемы.
А вот схема заточенная на решение проблемы.
Ну а по теории, строят Логическую и Физическую схему.
В логической бизнес. В физической ключи, отношения, типы и последовательности.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055834
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Нужны какие то тесты что ли....
Показывающие что "вот схема классик и бд не справляется" = наличие проблемы.
А вот схема заточенная на решение проблемы.
Ну а по теории, строят Логическую и Физическую схему.
В логической бизнес. В физической ключи, отношения, типы и последовательности.

Нет-нет. Нету пока никаких тестов. И нету проблемы. Есть просто вопрос эстетики.
Мне не нравится когда таблица порезана на 3 вертикальных полоски просто так.
В угоду идеям перформанса. Я не знаю какова должна быть просадка перформанса
(явно больше 1000%) чтоб я начал думать о порезании таблич на куски.

Да и не ставлю я пока таких вопросов. Давайте поскипаем эту тему. Я подниму
ее чуть позже в Программировании в разрезе самого сетевого протокола.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055841
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Полоски это партицирование?
>поскипаем
= ОК
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055847
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще мне всегда казалось, что NoSQL был рождён из-за недостатков SQL. Проблема реляционных
баз данных в плохой масштабируемости. Когда возникает big data и тебе нужны десятки тысяч серверов
БД по всей планете, то SQL не справляется. Да, NoSQL не гарантирует связанности данных, но мы ей
жертвуем, что бы юзер хотя бы что-то мог найти в нашей распределённой БД.

Но в данном диалоге прослеживаются такие нотки, что мол вообще можно/нужно использовать NoSQL
просто повсеместно. Просто потому что это модно и молодёжно.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055852
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВообще мне всегда казалось, что NoSQL был рождён из-за недостатков SQL.

Да, но не тех, о которых ты говоришь. Когда очередной энтузазист делает свою собственную
СУБД с покером - он не осиливает полный парсер и оптимизатор SQL поэтому выкидывает его и
преподносит прямой доступ к внутренним структурам и функциям как достоинство. STFW FwMas.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055919
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу поля counter. Я думаю что все просто. Запросы с инкрементом - не идемпотентные. А поскольку
Apache Cassandra гарантирует работу таблиц одной базы в пределах земного шара - то ей нужны внятные механизмы
репликации которые не сломают реплику. Скорее всего такое разделение введено с целью разделить
два протокола. Один - простой для UPDATE .. SET field = value. А другой для UPDATE .. SET field = f(field)
который требует повышенного внимания в дубликатам сетевых собыйтий.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055921
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не могу согласится с таким разбиением. В инженерных задачах - эстетика тоже важна.
А я - большой эстет.

Я не ставлю себе задачей - суждать физический размер data-row. Эта цель - специфична для
bigdata - технологий. И оптимизация попаданий в кеш-линию мне тоже не нужна пока.
Мне важнее то насколько удобно я буду видеть статистику реквестов по нодам. Тем более
что они связны. Если нода сделала ping. То следующим реквестом оа запросит список
известных пиров или другиг нодов. Корреляция выходит. И зачем мне тогда таблицы
нарезанные узкими полосками? Тут самое толстое поле - это первичный ключ. Разумнее
склеивать.
Ну так вьюшку поверх накладываешь и все. У Кассандры даже материализванные предстваления есть.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055923
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... это мысль. Впрочем я пока думаю выкинуть Кассандру и вернуться к Postgresql. Это был творческий эксперимент.
Он наполовину удался. Я доволен.
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055925
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
- чтобы гарантировать в пределах земного шара достаточно не совпадения PK. Одно из решений GUID
- при GUID реплика не ломается
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055926
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хм... это мысль. Впрочем я пока думаю выкинуть Кассандру и вернуться к Postgresql. Это был творческий эксперимент.
Он наполовину удался. Я доволен.
итого - "делайте Модель в бд по бизнесу, а не потому что бд так легче"
...
Рейтинг: 0 / 0
С пятницей всех.
    #40055930
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
- чтобы гарантировать в пределах земного шара достаточно не совпадения PK. Одно из решений GUID
- при GUID реплика не ломается

Почему?
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 3 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]