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

Откуда: Minsk Power Station
Сообщений: 514
Добрый день!

я натолкнулся на одну мысль, и хотел бы спросить людей, возможно, сталкивающихся с подобным вопросом. А именно, вопрос касается хранения данных обычном текстовом файле.
Предположим, нужно сделать БД для некоего бакалейного отдела. Здесь товары которые не нужно делить на какие-то особые свойства, а достаточно хранить обобщающие записи: Сахар-песок; Сахар рафинад; Гречневая крупа; Гречневая крупа II сорт; и т.д.

не заводить же для этого таблицу под каждую категорию. И в итоге, я наткнулся на один совет на стаковерфлоу:
Softa
То, что Вы описали, это самое обычное решение данной задачи с точки зрения реляционных баз данных.
Но оно, на мой взгляд, избыточно.
Я Вам больше скажу - для этого вообще база данных не нужна. Недавно сталкивались с сходной проблемой. Думали-думали какая БД, какая структура.
А потом прекратили думать и посчитали: несколько тысяч товаров, описание свойств каждого занимает сколько-то там (уже не помню) байт в среднем. И в целом все наши описания свойств (аналог вашей таблицы prod_attributes) товаров укладываются в менее чем в 200 килобайт.

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

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

При обновлении свойств (которое происходит раз в сутки) дергается специальный URI и происходит повторное чтение файла с данными и перезаполнение этой структуры.

Повторяю: база данных для данной задачи вообще не нужна.

Bethrezen
А как же фильтрация?

Alex78191
С помощью LINQ или Stream API.


Так вот вопрос, вы бы как поступили? Делали ли бы, однозначно, всё на реляционках, или рассмотрели бы идею с плоским файлом?
28 окт 19, 22:42    [22004632]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
Dimitry Sibiryakov
Member

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

Я делал текстовые файлы. Но современные программисты не потянут: код писать придётся.

Posted via ActualForum NNTP Server 1.5

28 окт 19, 23:04    [22004638]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 514
Dimitry Sibiryakov, скажите, а что имеется в виду, когда там говорится про то, что дёргается специальный uri?
т.е. предположим на сервере лежит текстовый файл, при загрузке сайта он закачивается в ОЗУ на клиенте (или нет)?
в это время, на сервере, происходит обновление данных в основном файле, то клиенту как сообщить, что нужно переписать его клиентский ОЗУ?

что тут именно подрузамевалось, под этим uri?
28 окт 19, 23:19    [22004645]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 514
или всё же, вся работа с файлом ведётся на бекенде, также как и с бд?
28 окт 19, 23:20    [22004646]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
Dimitry Sibiryakov
Member

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

У тебя другая задача, локальная, ничего этого не нужно.

Posted via ActualForum NNTP Server 1.5

29 окт 19, 01:52    [22004681]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5688
palladin600
Так вот вопрос, вы бы как поступили? Делали ли бы, однозначно, всё на реляционках, или рассмотрели бы идею с плоским файлом?


Ну есть "ни два, ни полтора" - dbf-файлы.
Т.е. это реляционнка, но вместе с тем плоские файлы. :-)
29 окт 19, 05:27    [22004698]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kolobok0
Member

Откуда:
Сообщений: 2180
palladin600,

в высказанной мысли затронуты только технические аспекты. Т.е. если это создаётся для себя, одной парой рук в ввиде сэмпла - ну да, имеет место быть. Или скажем для МК где данные грузятся-храняться-обрабатываются на MicroSD(к примеру). В Ваших рассуждениях есть "стоп слова" - "некий бакалейный отдел", "товары" и сам вектор задачи (насколько я понял из описания) - для заказчика, программа, есть присутствие учёта...

надеюсь общий вектор мысли изложил...

ну или с другой стороны... Если Вам хочется упростить - "начните с себя", уберите из переменных Вашу программу. Попытайтесь решить стандартными средствами офиса(к примеру)... оно как раз в стиле самописных текстовых ведосипедиков, с "идеально круглыми" колёсами...

(круглый)
29 окт 19, 09:00    [22004729]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
Интересно, а вот нафига этот мазохизм?
4Не, ну я использую текстовые файлы. Например, "дальние филиалы" готовят исходные данные в автономном приложении, а потом присылают результат в зазипованном json - файле. Данных - относительно мало (десятки тысяч позиций константных справочников плюс несколько сотен записей самих данных), и то приложение стартует секунд пять. То есть, для больших объемов не годится.
Сделано так было, с одной стороны ради простоты - один икзешник плюс один файл данных, чтобы любой строитель смог разобраться. А с другой стороны - ради прикола, просто "попробовать сделать так".
Ничто не мешало использовать, например, SQLite или FireBird Embedded.
...Хотя, наверное, раз я не занимался парсингом текстового файла руками, а использовал готовую библиотеку - то не считается.
29 окт 19, 10:06    [22004785]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 6360
Dimitry Sibiryakov
Я делал текстовые файлы. Но современные программисты не потянут: код писать придётся.
да потянут, дорого только настройка выйдет - давно этим никто не занимается.
Занятно, что все эти очевидности промелькивают потом на блоках гигантов как ноухау
Хотя вся теория уже давно есть, просто ей никто не пользуется

palladin600
что тут именно подрузамевалось, под этим uri?

обычный запрос, обработчик которого перезагружает "базу" с диска
29 окт 19, 10:50    [22004828]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 6360
ёёёёё
Интересно, а вот нафига этот мазохизм?
4Не, ну я использую текстовые файлы. Например, "дальние филиалы" готовят исходные данные в автономном приложении, а потом присылают результат в зазипованном json - файле. Данных - относительно мало (десятки тысяч позиций константных справочников плюс несколько сотен записей самих данных), и то приложение стартует секунд пять. То есть, для больших объемов не годится.
Сделано так было, с одной стороны ради простоты - один икзешник плюс один файл данных, чтобы любой строитель смог разобраться. А с другой стороны - ради прикола, просто "попробовать сделать так".
Ничто не мешало использовать, например, SQLite или FireBird Embedded.
...Хотя, наверное, раз я не занимался парсингом текстового файла руками, а использовал готовую библиотеку - то не считается.
SQLite делает тож самое, за что его и любят пихать во все дыры
29 окт 19, 10:51    [22004830]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
kealon(Ruslan)
ёёёёё
Интересно, а вот нафига этот мазохизм?
4Не, ну я использую текстовые файлы. Например, "дальние филиалы" готовят исходные данные в автономном приложении, а потом присылают результат в зазипованном json - файле. Данных - относительно мало (десятки тысяч позиций константных справочников плюс несколько сотен записей самих данных), и то приложение стартует секунд пять. То есть, для больших объемов не годится.
Сделано так было, с одной стороны ради простоты - один икзешник плюс один файл данных, чтобы любой строитель смог разобраться. А с другой стороны - ради прикола, просто "попробовать сделать так".
Ничто не мешало использовать, например, SQLite или FireBird Embedded.
...Хотя, наверное, раз я не занимался парсингом текстового файла руками, а использовал готовую библиотеку - то не считается.
SQLite делает тож самое, за что его и любят пихать во все дыры


Не, json в данном случае был хорош как результат сериализации объекта хранения. Для гридов от DevExpress был написан наследник TcxCustomDataSource, которого обучили [де]сериализоваться... работа была завершена за пять минут, поэтому больше ничего не рассматривали. Ну, сам json еще зиповали, и всё.
29 окт 19, 10:58    [22004835]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 6360
ёёёёё,

ну видишь, это ж не каждый может осилить, а базу перегнать и поменять источник куда проще выглядит, SQLite за это и любят
29 окт 19, 11:05    [22004842]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
kealon(Ruslan)
ёёёёё,

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

Как раз наоборот, сериализация в json доступна практически изо всех ЯП, пара строк и всё, а по табличкам придется скорее всего руками раскидывать, да еще эти таблички создать надо. Но я в целом - за СУБД, а для переноса - json.
29 окт 19, 11:10    [22004856]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29805
В Delphi, например, есть ClientDataSet.
Можно создать его, добавить столбцы разного типа, потом заполнять данные, и сохранять/читать в xml.
Кроме того, любые изменения этого "файла" можно оформлять в виде "пакета", который можно передавать куда-то, например, на другую копию такого же файла (briefcase model).
Так что да, тут база данных не нужна, даже sqlite.
29 окт 19, 11:26    [22004871]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
kdv,

TClientDataSet - ничего хорошего, ибо одна плоская табличка, уж лучше SQLite.

А json - и вложенные структуры, и связанные, и поиск разного рода.
29 окт 19, 11:35    [22004880]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 6360
ёёёёё
kdv,

TClientDataSet - ничего хорошего, ибо одна плоская табличка, уж лучше SQLite.

А json - и вложенные структуры, и связанные, и поиск разного рода.
вот честно, положа ...
сколько у вас процент программистов, которые могут написать банальный бинарный поиск?
29 окт 19, 12:44    [22004946]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
ёёёёё
Member

Откуда:
Сообщений: 2017
kealon(Ruslan),

думаю, что 100%.

А зачем, в данном конкретном случае?
29 окт 19, 12:51    [22004951]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 6360
ёёёёё,
а без ошибок :-)?
ёёёёё
kdv,

TClientDataSet - ничего хорошего, ибо одна плоская табличка, уж лучше SQLite.

А json - и вложенные структуры, и связанные, и поиск разного рода.
я просто в большинстве контор такого не видел (имею ввиду 100% все смогут), и я понимаю архитектора, который говорит: "фигач таблицы"
29 окт 19, 12:56    [22004958]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
palladin600
Добрый день!

я натолкнулся на одну мысль, и хотел бы спросить людей, возможно, сталкивающихся с подобным вопросом. А именно, вопрос касается хранения данных обычном текстовом файле.
Предположим, нужно сделать БД для некоего бакалейного отдела. Здесь товары которые не нужно делить на какие-то особые свойства, а достаточно хранить обобщающие записи: Сахар-песок; Сахар рафинад; Гречневая крупа;

Да. Исторически базы данных эволюционировали из текстовых файлов. Обычно - структурированных где каждая
запись по длине равна предыдущей. Наподобие DBase/FoxPro. Некоторые хитрецы умудрялись отрезав заголовок
dbf парсить такой файл как CSV. Ну не совсем СSV а с padding.

Если вы делаете БД для бакалейного отдела для тестирования - тогда может быть взлетит. У вас БД не меняется
а табличка только 1 раз читается с головы в хвост. Есть специальные JDBC-драйверы которые адаптируют текстовый
файл к такой одно-табличной базе.

Но радость закончится когда вы начнёте использовать такой файл для активных транзакций. обновлять.
Удалять и вставлять записи в такой БД. Чем толще такой файлик -
тем медленнее идет транзакция. Более того. Если в момент переписи старого файла выключат свет - то ваша система
провиснет в некой сингулярности. Старый файл БД уже удалён. А новый еще не создан. Как поведёт себе ваша система
после включения питания - бох его знает. Но такую архитеутуру нельзя признать удачной. И никто не гарантирует
что все бакалейные товары выживут.

Обычно все классические СУБД нормально переживают выключение POWER. С их точки зрения все состояния таблиц будут "откачены"
в предыдущее устойчивое состояние. Тоесть все транзакции что были не финализировані commit-ом исчезнут из истории.
Это малая потеря. По сравнению с потерей все базы.
29 окт 19, 14:38    [22005096]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
Dimitry Sibiryakov
Member

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

mayton
Если в момент переписи старого файла выключат свет - то ваша система
провиснет в некой сингулярности. Старый файл БД уже удалён. А новый еще не создан.

Поэтому я и говорю: программировать надо. Писать в другой файл, переименовывать только
после успешной записи. Не потянет аффтар.

Posted via ActualForum NNTP Server 1.5

29 окт 19, 14:45    [22005111]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Да. Такая практика есть в текстовых редакторах. Юниксовые тулзы пытаются обеспечить атомарность так.
Но что будет если 2 конкурирующие обновлялки прилетели. Что будет? Потерянное обновление для одной из транзакций.
29 окт 19, 14:52    [22005129]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
Dimitry Sibiryakov
Member

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

mayton
Но что будет если 2 конкурирующие обновлялки прилетели.

Это для однопользовательских систем. Никакой конкуренции по определению.

Posted via ActualForum NNTP Server 1.5

29 окт 19, 14:59    [22005141]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Dimitry Sibiryakov
mayton
Но что будет если 2 конкурирующие обновлялки прилетели.

Это для однопользовательских систем. Никакой конкуренции по определению.

Я-бы различал однопользовательскую и однопоточную. Тот еще ребус. Думаю даже спрашивать не стоит.
Никакие requirements не формализованы. И от этого можно кодить как бох даст. Сахар песок еще
не набрал столько чести. Мдя.
29 окт 19, 15:05    [22005159]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
982183
Member

Откуда: VL
Сообщений: 3386
palladin600
хранения данных обычном текстовом файле.


В 90-х была прога "Турбо -Бухгалтер"
Они вместо привычного тогда DBF применяли именно такой метод.
29 окт 19, 15:26    [22005206]     Ответить | Цитировать Сообщить модератору
 Re: База данных в текстовом файле  [new]
Dimitry Sibiryakov
Member

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

mayton
Я-бы различал однопользовательскую и однопоточную.

А смысл? Многопоточный случай лёгким движением руки превращается в однопоточный жёсткой
сериализацией или монополизацией ресурса одним потоком.

Posted via ActualForum NNTP Server 1.5

29 окт 19, 16:23    [22005325]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить