Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: С пятницей всех.  [new]
Dima T
Member

Откуда:
Сообщений: 15689
didgik
Dimitry Sibiryakov

пропущено...

Ага. Прочитать PID из файла, который не удалось открыть. Отличный план.

Может, не стоит маяться дурью с файлом, а сразу искать окно?..


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.

Не надо никуда PID писать. Вдруг твой процесс скоропостижно упал не стерев PID из файла, а другой запустился с этим же PID. Виндавс может выдать тот же PID другому процессу.

Просто перебери все процессы и смотри каким EXE они созданы. Найдешь свой, значит оно.

Затем перебираешь окна внутри процесса.

Но проще сразу искать нужное окно FindWindowEx()

Сообщение было отредактировано: 20 мар 21, 07:08
20 мар 21, 07:13    [22297606]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
petrav
Member

Откуда:
Сообщений: 2861
Dima T
didgik
пропущено...


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.

Не надо никуда PID писать. Вдруг твой процесс скоропостижно упал не стерев PID из файла, а другой запустился с этим же PID. Виндавс может выдать тот же PID другому процессу.

Факт того что кто-то держит эксклюзивные права на запись является подтверждением того, что PID актуальный.

Dima T
Просто перебери все процессы и смотри каким EXE они созданы. Найдешь свой, значит оно.

Кстати, да. Наверное, это самое простое. Перебрать все процессы и посмотреть полные пути к файлу .exe. Правда отсутствует некий функционал атомарности. Что будет если из одной папки практически одновременно будет дважды запущен один exe? Скорее всего они оба завершат свою работу.

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

Dima T
Но проще сразу искать нужное окно FindWindowEx()

Поиск по заголовку окна? Ну это никуда не годится.

Еще можно подумать про создание разделяемой области памяти куда что-то будем писать — pid, например.
Ну и вроде есть функционал временных файлов. Файлов, которые удаляет ОС при завершении процесса.
20 мар 21, 12:12    [22297644]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

petrav
Поиск по заголовку окна?

Обычно ищут по классу окна, а не заголовку.

Posted via ActualForum NNTP Server 1.5

20 мар 21, 12:58    [22297653]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
didgik
Dimitry Sibiryakov

пропущено...

Ага. Прочитать PID из файла, который не удалось открыть. Отличный план.

Может, не стоит маяться дурью с файлом, а сразу искать окно?..


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.

Там не нужны эксклюзивные права. Если запускать в поддереве %USER_PROFILE% то нам
скорее всего хватит обычных файловых прав. И нужны будут парочка ОС API функций
которые 1) берут свой собственный PID, 2) проверяют что среди списка процессов нету
заданного кастомного PID.

Можем попробовать набросать алгоритм.

Против семафоров я не имею ничего против но они должны быть именованные, чтобы
структура запускаемых процессов имела связи 1:1 семафор с user_dir текущего процесса.
20 мар 21, 13:17    [22297654]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
didgik
Member

Откуда:
Сообщений: 968
FindWindow не подошло. Если окон данного класса больше одного, то оно возвращает первый попавшийся хендл. Соответственно надо перебирать все окна и опять вычислять есть ли нужное.
20 мар 21, 13:24    [22297655]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

didgik
Соответственно надо перебирать все окна и опять вычислять есть ли нужное.

Да. В чём проблема? На две строчки больше кода написать - пальцы боишься стереть?..

Posted via ActualForum NNTP Server 1.5

20 мар 21, 13:40    [22297658]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
didgik
Member

Откуда:
Сообщений: 968
Dimitry Sibiryakov

didgik
Соответственно надо перебирать все окна и опять вычислять есть ли нужное.

Да. В чём проблема? На две строчки больше кода написать - пальцы боишься стереть?..

FindWindow тут не нужен.
20 мар 21, 13:42    [22297659]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

didgik
FindWindow тут не нужен.

Это самый простой из способов "активировать прогу уже запущенную из этой папки". Но смелые
эксперименты молодых сурков не остановить...

Posted via ActualForum NNTP Server 1.5

20 мар 21, 13:46    [22297660]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
didgik
Member

Откуда:
Сообщений: 968
Dimitry Sibiryakov

didgik
FindWindow тут не нужен.

Это самый простой из способов "активировать прогу уже запущенную из этой папки". Но смелые
эксперименты молодых сурков не остановить...

Я тоже так думал. Но оказалось, что это не так.
20 мар 21, 13:48    [22297661]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921
didgik
Я тоже так думал. Но оказалось, что это не так.

Оказалось, что ты просто и этого не сумел. Но хочу тебя огорчить: остальные способы не
только сложнее, но ещё и не работают. В современных Windows программа неспособна
активизироваться самостоятельно, без внешней помощи. И это правильно.

PS: Хотя, конечно, твоё "активироваться" может отличаться от моего "вывести окно на передний план".

Сообщение было отредактировано: 20 мар 21, 13:52
20 мар 21, 13:57    [22297665]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
didgik
Member

Откуда:
Сообщений: 968
Dimitry Sibiryakov

didgik
Я тоже так думал. Но оказалось, что это не так.

Оказалось, что ты просто и этого не сумел. Но хочу тебя огорчить: остальные способы не
только сложнее, но ещё и не работают. В современных Windows программа неспособна
активизироваться самостоятельно, без внешней помощи. И это правильно.


Вопрос не в том, как активизировать программу, а в том, чтоб найти нужную. И да, с помощью FindWindow я не сумел.
20 мар 21, 14:01    [22297666]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

didgik
Главный вопрос - активировать прогу

didgik
Вопрос не в том, как активизировать программу

didgik
а в том, чтоб найти нужную. И да, с помощью FindWindow я не сумел.

RTFM:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowthreadprocessid
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess
https://docs.microsoft.com/en-us/windows/win32/api/psapi/nf-psapi-getmodulefilenameexa

Posted via ActualForum NNTP Server 1.5

20 мар 21, 14:17    [22297673]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
В продолжение пятницы-субботы.

По мотивам https://www.sql.ru/forum/1334409/tshark-bencode

Решил писать события протокола DHT в Apache Cassandra. Задача без особого смысла. Так. Бесконечно играющая.
Я ее думаю в выходные дни. И когда жене от меня ничего не нужно. И в целях изучения таких ... распределённых
и децентрализованных штук. Но для начала - понаблюдать статистику. Сколько я вижу активных узлов в течение
дня. Сколько они ищут. Что они публикуют.

Первая идея была - фиксировать UDP-пакеты типа "поиск ноды"

(уже декодированый пакет).
{
{
  "a" : {
    "id" : "2ecb156e5b97c9b0f5eda2d7a89a84b1dcf9b4a3",
    "target" : "2ecb156e5b97c9b0f5eda2d7a89a84b1dcf9b4a3"
  },
  "q" : "66696e645f6e6f6465 ( 'find_node' )",
  "t" : "b9390000",
  "v" : "5554b38e",
  "y" : "71 ( 'q' )"
}


И фиксировать количество таких find-s по каждому таргету. Я предполагал что популярные раздачи тогда
выйдут в некую неравномерную гистограмму.

Первый вариант таблицы был таков (это синтаксис CQL Apache Cassandra. Не-SQL!)
create table nodes(
 node_id text primary key,
 last_ip text,
 last_port int,
 pings_requests int,
 get_peeers_requests int,
 find_nodes_requests int
);


Далее поля счетчики *_requests я планировал обновлять одним update-ом. Типа

cqlsh:dhtspace> update nodes set find_nodes_requests = find_nodes_requests + 1 where node_id = '7d2c835df2f49462a73c00988c7eadcf722c57e1';
InvalidRequest: Error from server: code=2200 [Invalid query] message="Invalid operation (find_nodes_requests = find_nodes_requests + 1) for non counter column find_nodes_requests"

Не вышло. Cassandra не позволяет инкремент полей за 1 dml операцию если они не являются типом counter.
Окей. Переделал под счетчики. Но не тут-то было. Таблица со счетчиками не может содержать поля смешанного типа.
cqlsh:dhtspace> drop table nodes;
cqlsh:dhtspace> create table nodes(
            ...  node_id text primary key,
            ...  last_ip text,
            ...  last_port int,
            ...  pings_requests counter,
            ...  get_peeers_requests counter,
            ...  find_nodes_requests counter
            ... );
InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot mix counter and non counter columns in the same table"

Получается что для такого использования мне надо держать аж 2 таблицы. С одиаковыми ключами но с разными
атрибутами. Одни для счетчиков - а другие просто для вариативных типов данных.

Вот такой он этот жестокий и коварный No-SQL. Интересно бы узнать мотивацию к такому разделению?

Возможно это были требования жестокой атомарности? Или какие-то другие ограничения distributed систем?
20 мар 21, 18:51    [22297739]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
White Owl
Member

Откуда:
Сообщений: 12682
mayton
Получается что для такого использования мне надо держать аж 2 таблицы. С одиаковыми ключами но с разными атрибутами. Одни для счетчиков - а другие просто для вариативных типов данных.

Вот такой он этот жестокий и коварный No-SQL. Интересно бы узнать мотивацию к такому разделению?

Возможно это были требования жестокой атомарности? Или какие-то другие ограничения distributed систем?
Ключевые слова для гугления: нормализация, звезды и снежинки.

Проще говоря, делать классическую звезду (и снежинку как ее развитие) намного выгоднее с точки зрения производительности, и обновления и выборок, для задач подсчета количества.
Это уже с точки зрения выдачи результата проще писать запрос к одной таблице чем помнить что у тебя их две и правильно делать связку таблиц на каждый запрос, но это обычно решается вьюшками.
20 мар 21, 21:02    [22297782]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
White Owl
mayton
Получается что для такого использования мне надо держать аж 2 таблицы. С одиаковыми ключами но с разными атрибутами. Одни для счетчиков - а другие просто для вариативных типов данных.

Вот такой он этот жестокий и коварный No-SQL. Интересно бы узнать мотивацию к такому разделению?

Возможно это были требования жестокой атомарности? Или какие-то другие ограничения distributed систем?
Ключевые слова для гугления: нормализация, звезды и снежинки.

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

Какие снежинки? Какая нормализация?

Cassandra - это махровый NoSQL. Joins не поддерживается. Консистетность между таблицами - слабая.
Она есть на уровне eventual consistency. Тоесть грубо говоря каждая таблица лежит в своём собственном
времени.

Почему я взял cassandra? Не знаю. Просто так захотелось. Инженерное любопытство. У нее другие плюшки.
Но тема пока не об этом.
20 мар 21, 22:00    [22297799]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
White Owl
Member

Откуда:
Сообщений: 12682
mayton
Какие снежинки? Какая нормализация?

Cassandra - это махровый NoSQL.
И что?
От технической стороны организации базы данных, принципы организации данных не исчезают и не меняются.
NoSQL даже более удобен для организации звезд, и сильнее напоминает о пользе нормализации чем реляционные БД.
20 мар 21, 23:47    [22297811]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
White Owl
mayton
Какие снежинки? Какая нормализация?

Cassandra - это махровый NoSQL.
И что?
От технической стороны организации базы данных, принципы организации данных не исчезают и не меняются.
NoSQL даже более удобен для организации звезд, и сильнее напоминает о пользе нормализации чем реляционные БД.

Я думаю что о нормализации пока говорить раненько. Хотя-бы по той причине что в этом домене никто
"дупля не отсреливает". Я имею в виду DHT, KAD, Chord e.t.c. И я пока поставил простую задачу - учесть
количество запросов на публикацию контента от "id". По сути сделать 1 таблицу-лог которая просто фиксирует
число интеракций по id.

По мере поступления информации я буду эту модель нормализовывать. Но пока еще рано говорить о нормализации.
Я просто не знаю как связаны между собой атрибуты id, target, token. Как только уясню - сможем нормализовать.

Обычная бизнесовая проблема. Нехватка знаний по домену.
20 мар 21, 23:53    [22297814]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
White Owl
Member

Откуда:
Сообщений: 12682
mayton
Я думаю что о нормализации пока говорить раненько.
Лично я считаю что начинать надо именно с нормализованной базы. Вот есть у нас сущность, определяем ей id - делаем таблицу даже если кроме id ничего другого не известно. Есть атрибут у этой сущности - делаем другую таблицу. И только потом, если убеждаемся что этот атрибут уникален для сущности и его будут дергать часто - тогда можем перенести его в первую таблицу. А если этот атрибут нужен редко, то можно оставить его во вторичной таблице, этаком "расширении".
Денормализация будет полезна на этапе выборок из базы. Вот когда будешь делать отчетную систему на свою базу - тогда и надо заниматься денормализацией, а во всех остальных этапах и особенно на этапе проектирования БД - нормальзованные данные это необходимо.

mayton
И я пока поставил простую задачу - учесть
количество запросов на публикацию контента от "id". По сути сделать 1 таблицу-лог которая просто фиксирует
число интеракций по id.
Ну у тебя типичный OLAP куб уже же строится. Список сущностей (udp пакеты) имеющих атрибут (адрес), и надо подсчитать количество появления атрибута. Так что две таблицы для минимального куба идеально. Одно-лучевая звезда просто напрашивается!
И тут действительно nosql база будет хорошо работать и любые объемы съест не подавившись.

mayton
Я просто не знаю как связаны между собой атрибуты id, target, token. Как только уясню - сможем нормализовать.
Наоборот. Есть три атрибута? Расценивай их как три сущности. А потом уже смотри как они между собой взаимодействуют, что есть атрибут чего.
21 мар 21, 04:52    [22297830]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
petrav
Member

Откуда:
Сообщений: 2861
White Owl
mayton
Я думаю что о нормализации пока говорить раненько.
Лично я считаю что начинать надо именно с нормализованной базы. Вот есть у нас сущность, определяем ей id - делаем таблицу даже если кроме id ничего другого не известно. Есть атрибут у этой сущности - делаем другую таблицу.

Впервые слышу такое прочтение понятия нормализации.

Это NoSQL так на людей влияет?
21 мар 21, 12:08    [22297856]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
В NoSQL нормализацию заменяют на агрегацию. Это по сути наружение 1НФ и включение в один data-row
целой коллекции других типизированных data-row или документов.

Но в NoSQL - на самом деле технический долг еще более силён чем в реляционках.
Если в Oracle ты можешь по ходу развития доменной модели "подбрасывать" новые связи или
даже поменять роли первичных ключей или расширить их, то в NoSQL системе как один раз сделал дизайн ключей
- так они и будут навсегда. Исправлять - принципиально невозможно. Можно просто пересоздавать таблицы заново
(делать CTAS) и причем ОДНОВРЕМЕННО с изменением семантик. А делать CTAS в продуктовой работающей БД
- это смерти подобно. И диска не хватает обычно и времени регламента нету.

В середине 2010х мне один Моного-разработчик плакался. Жаловался что много информации хранится безо
всякого смысла в ихних базах. Не хватает схем (видимо создавали schema-less). И вообще - лучший способ
потерять какой-то атрибут навсегда - это положить его в документ Mongo.

Сообщение было отредактировано: 21 мар 21, 16:46
21 мар 21, 16:52    [22297900]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
White Owl
Member

Откуда:
Сообщений: 12682
mayton
В NoSQL нормализацию заменяют на агрегацию. Это по сути наружение 1НФ и включение в один data-row
целой коллекции других типизированных data-row или документов.
Ну так никто ж не обещал что люди будут понимать смысл и суть используемых инструментов.
То что NoSQL обычно удобнее для агрегации, не значит что надо заменять нормализацию. Кушать плюшки не требует переходить на плюшечную диету.

mayton
Но в NoSQL - на самом деле технический долг еще более силён чем в реляционках.
Если в Oracle ты можешь по ходу развития доменной модели "подбрасывать" новые связи или
даже поменять роли первичных ключей или расширить их, то в NoSQL системе как один раз сделал дизайн ключей
- так они и будут навсегда. Исправлять - принципиально невозможно. Можно просто пересоздавать таблицы заново
(делать CTAS) и причем ОДНОВРЕМЕННО с изменением семантик. А делать CTAS в продуктовой работающей БД
- это смерти подобно. И диска не хватает обычно и времени регламента нету.
А разве в реляционных БД по другому? Можно конечно и попытаться изменить ключ в существующей схеме, но если на изменяемую таблицу ссылаются хоты бы пара других - будет еще замечательно если ctas сработает. А частенько приходится делать полноценный etl, одноразовый, в рамках одной БД, но etl с большой буквой T.

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


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

Это все плюшки, уникальные и местами загадочные, но плюшки конкретных движков и технических решений примененных в них.
Но разве это отменяет принципы организации данных? Ты в любой базе можешь сделать как 0nf простынь, так и снежинку в 5nf (которая теоретический идеал, но никто не видел на практике).

Не, я конечно понимаю что некоторые местные люди считают что data structures в java и data structures в c++ это очень разные data structures и читать книжки использующие "вражеский язык" для понимания самих data structures это уголовно наказуемое деяние. Но ...


mayton
В середине 2010х мне один Моного-разработчик плакался. Жаловался что много информации хранится безо
всякого смысла в ихних базах. Не хватает схем (видимо создавали schema-less). И вообще - лучший способ
потерять какой-то атрибут навсегда - это положить его в документ Mongo.
Повторюсь: инструментом надо уметь пользоваться. От человеческой глупости никакой инструмент спасти не может.
Мало ли ты встречал приложений завязанных на Oracle/MSSQL/etc которые сами следят за связностью данных в разных таблицах? А ведь это типичные RDBMS используемые в модели NR-DBMS и то что они используют язык запросов наследованный от SQL-92 не делает их реляционными.
С другой стороны, я сейчас работаю с nosql базой (разработанной в начале 80-х), совершенно другой язык запросов, таблицы называют файлами и хранят структуру таблиц во внешних текстовых файлах... Но при этом весь доступ к БД организован через одну единственную билиотеку, которая читает те текстовые файлы и самостоятельно следит за целостностью ссылок. Так что несмотря на то что это "библиотека" - на практике получается классический embedded rdbms. При этом она считается и описывается как nosql, потом что там нет вообще ни грамма от sql :) Там конечно тоже не мало странностей и идиотизмов (в первую очередь из-за "встроенности" с которой надо уметь работать), но...

Сообщение было отредактировано: 21 мар 21, 20:16
21 мар 21, 20:21    [22297951]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
White Owl

mayton
Но в NoSQL - на самом деле технический долг еще более силён чем в реляционках.
Если в Oracle ты можешь по ходу развития доменной модели "подбрасывать" новые связи или
даже поменять роли первичных ключей или расширить их, то в NoSQL системе как один раз сделал дизайн ключей
- так они и будут навсегда. Исправлять - принципиально невозможно. Можно просто пересоздавать таблицы заново
(делать CTAS) и причем ОДНОВРЕМЕННО с изменением семантик. А делать CTAS в продуктовой работающей БД
- это смерти подобно. И диска не хватает обычно и времени регламента нету.
А разве в реляционных БД по другому? Можно конечно и попытаться изменить ключ в существующей схеме, но если на изменяемую таблицу ссылаются хоты бы пара других - будет еще замечательно если ctas сработает. А частенько приходится делать полноценный etl, одноразовый, в рамках одной БД, но etl с большой буквой T.

Я имел в виду следующее. Стоимость поддержки изменений в реляционной БД ~ равна некой условной величине.
Назовем ее 1 story point. Добавить внешний ключ. 1 единица. Проиндексировать поле - тоже 1 единица. Порезать таблицу
вдоль на 2 суб-таблицы типа родитель-потомок - тоже 1 единица. Я утрирую конечно - но объем работ примерно
одинаков с точки зрения рисков. А в не-реляционных идет так. Сделать плюшку - 0.5 поинтов. Потом еще плюшка - 0.5 поинтов.
А потом прилетает плюшка которая стоит аж 100500 поинтов. Или ее сделать нереально или архитекторы просто ее не хотят
делать по причине того что модель уже настолько далека от желаемого что проще создать новую систему. При том что
в реляционной эта-же плюшка стоила бы ну 3-5 поинтов.

Вот это я имел в виду. Непрогнозируемые затраты.
21 мар 21, 20:40    [22297955]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
White Owl

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

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

Кстати перечисли те системы из класса не-реляционных на которые ты ссылаешся. Тема - это размытая.
Тут - каждый сам себе что-то имеет в виду.
21 мар 21, 20:46    [22297956]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
White Owl

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

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

update table1 set counter = counter + 1;


Ровно тоже самое я хотел от Cassandra но она отказала мне в декларации таблиц а вовсе не в реализации этого
чудесного DML.
21 мар 21, 21:08    [22297960]     Ответить | Цитировать Сообщить модератору
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51019
White Owl
А в IQ нет нужды делать индексы, там каждое поле автоматически индексировано потому что у БД колоночный метод хранения таблиц - очень тормознуто на обновлениях, но для выборок - конфетка.

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

Хотя может мы о разных вещах говорим?
21 мар 21, 21:25    [22297963]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / C++ Ответить