Pull to refresh

Comments 33

Nu pipelines use structured data so you can safely select, filter, and sort the same way every time. Stop parsing strings and start solving problems.

Т.е. мы уходим от парадигмы, что через пайп идет обычный текст? И это значит, что grep использовать нельзя и все существующие скрипты с nushell не совместимы?

Было бы удивительно, если бы скрипт, написанный под один шелл, был совместим с другим в общем случае (чистый sh - случай частный, и писать под него не так просто как кажется).

Nu pipelines use structured data so you can safely select, filter, and sort the same way every time. Stop parsing strings and start solving problems.

По сути, первую массовую реализацию этого подхода сделали Microsoft в своем PowerShell. И на самом деле, это правильный и логичный подход, который должен прийти на смену парсинга строк. Пора уже отходить от низкоуровневой шелловской парадигмы "всё - строка" к более структурированной парадигме "всё - объект".

Вот согласен, парсить надо только исходный файл, и дальше работатьс объектами, а не работа со строками на всех этапах.

И это круто, что PowerShell сделали кроссплатформенным, после того когда выпустили кроссплатформенный .NET. И можно использовать как доп инструмент, и не зависеть от используемого shell.

А еще элегантнее делать это через IFS и read, после чего работать с массивом.
Это уменьшает расходы на запуск внешних команд и позволяет создавать различные внутренние структуры данных.
Если же делать именно базу данных, то проще воспользоваться консольным клиентом к sql базе, которых есть под все, включая sqlite, который умеет возвращать результат в csv

И делаешь что-то вроде

mybase="Buy milk:2024-10-21:2:open:Bobby:Jack:
Call bank:2014-10-20:1:closed:Bobby Jack:"
IFS=":" read -a myarray<<< "$mybase"

echo ${myarray[5]}



Либо можно грепать и считывать построчно

Не хватает тега "Ненормальное программирование"

Осталось настроить индексы, журналирование и репликацию ;)

И обеспечить ссылочную целостность данных.

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

Знаете, есть такая штука, как Hive. Там нет индексов, нет транзакций, репликацию обеспечивает Hadoop HDFS. При этом в качестве хранилища данных поддерживается любой разумный формат файлов, какой можно преобразовать в колонки таблицы. Включая и CSV, само собой. Единственное ограничение - что формат этот один на таблицу/партицию. И все это вполне себе работает с терабайтами.

Конечно, правильнее было бы сказать, что ACID там уже появился, но в тоже время, много-много лет многие пользователи (включая меня) работали с этим как с промышленной СУБД, при некоторых ограничениях, само собой.

Ну т.е. я к чему - все эти свойства, они в общем случае не обязательны.

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

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

и возникает вопрос - зачем автор хотел натянуть сову на глобус?

Вы знакомы с нереляционными БД?

нереляционные БД тоже имеют структуру

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

И еще она разная. В пределах одной "таблицы". По сути, это и значит, что ее нет - она есть у каждой записи, но у следующей записи она может быть другая.

Нифига себе как мем проапгрейдили, в webp, конечно, он интереснее смотрится

чёта я не понял зачем. Чем какой-нибудь SQLite не устраивает? Чего достичь то пытаемся?

Это просто пост про мотивам "база данных.xlsx".

SQLite требует самой библиотеки/программ sqlite. А его может и не быть. Вы можете не иметь возможности устанавливать бинарные программы на компьютере, например, если у вас есть только user shell на машине и /home смонтирован noexec.

У вас нет допуска к запуску/установке программ на комп, но вам обязательно нужна на этом компе самопальная база данных... =))

ну я с таким встречался.
не то, чтобы база данных, но если у тебя есть какой-то набор,например 100-200-300 данных, то их уже не очень удобно хранить линейным списком, хочется упорядочить.

Базы такого уровня сложности проще вести в бумажном блокноте.

UFO landed and left these words here

Боже, но зачем? Sqlite весит немного, машстабируем, имеет стандартынй синтаксис команд и работает одинаково на любых системах

echo "Take out the trash:$(date -I):3:open" > tasks

Вот эквивалентный код на SQL:

INSERT INTO tasks VALUES('Take out the trash', CURDATE(), '3', 'open')

Вообще-то эквивалентным кодом на SQL будет:

DELETE FROM tasks;
INSERT INTO tasks VALUES('Take out the trash', CURDATE(), '3', 'open')

Супер, конечно, только это нифига не база данных.

< Картинка троллейбус_из_хлеба.жпг >

Sign up to leave a comment.

Articles