|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Добрый день! я натолкнулся на одну мысль, и хотел бы спросить людей, возможно, сталкивающихся с подобным вопросом. А именно, вопрос касается хранения данных обычном текстовом файле. Предположим, нужно сделать БД для некоего бакалейного отдела. Здесь товары которые не нужно делить на какие-то особые свойства, а достаточно хранить обобщающие записи: Сахар-песок ; Сахар рафинад ; Гречневая крупа ; Гречневая крупа II сорт ; и т.д. не заводить же для этого таблицу под каждую категорию. И в итоге, я наткнулся на один совет на стаковерфлоу: SoftaТо, что Вы описали, это самое обычное решение данной задачи с точки зрения реляционных баз данных. Но оно, на мой взгляд, избыточно. Я Вам больше скажу - для этого вообще база данных не нужна. Недавно сталкивались с сходной проблемой. Думали-думали какая БД, какая структура. А потом прекратили думать и посчитали: несколько тысяч товаров, описание свойств каждого занимает сколько-то там (уже не помню) байт в среднем. И в целом все наши описания свойств (аналог вашей таблицы prod_attributes) товаров укладываются в менее чем в 200 килобайт. Мыслим дальше: данные меняются крайне редко, изоляции транзакций не нужно, данные используются крайне часто (по сути - это самая востребованная информация для сайта интернет-магазина). Данные можно организовать в виде удобной для конкретного языка программирования структуры (массив, список, кортеж, список списков и пр. и пр.) и займет это совсем немного места (ну что для современных серверов сотни килобайт оперативной памяти). Реализовали такую систему: при загрузке веб-приложения с диска из обычного текстового файла считываются свойства товаров и помещаются в оперативную память в виде удобной для дальнейшей работы структуры. При обновлении свойств (которое происходит раз в сутки) дергается специальный URI и происходит повторное чтение файла с данными и перезаполнение этой структуры. Повторяю: база данных для данной задачи вообще не нужна. BethrezenА как же фильтрация? Alex78191С помощью LINQ или Stream API. Так вот вопрос, вы бы как поступили? Делали ли бы, однозначно, всё на реляционках, или рассмотрели бы идею с плоским файлом? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2019, 22:42 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Я делал текстовые файлы. Но современные программисты не потянут: код писать придётся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2019, 23:04 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, скажите, а что имеется в виду, когда там говорится про то, что дёргается специальный uri ? т.е. предположим на сервере лежит текстовый файл, при загрузке сайта он закачивается в ОЗУ на клиенте (или нет)? в это время, на сервере, происходит обновление данных в основном файле, то клиенту как сообщить, что нужно переписать его клиентский ОЗУ? что тут именно подрузамевалось, под этим uri ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2019, 23:19 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
или всё же, вся работа с файлом ведётся на бекенде, также как и с бд? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2019, 23:20 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
У тебя другая задача, локальная, ничего этого не нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 01:52 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
palladin600Так вот вопрос, вы бы как поступили? Делали ли бы, однозначно, всё на реляционках, или рассмотрели бы идею с плоским файлом? Ну есть "ни два, ни полтора" - dbf-файлы. Т.е. это реляционнка, но вместе с тем плоские файлы. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 05:27 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
palladin600, в высказанной мысли затронуты только технические аспекты. Т.е. если это создаётся для себя, одной парой рук в ввиде сэмпла - ну да, имеет место быть. Или скажем для МК где данные грузятся-храняться-обрабатываются на MicroSD(к примеру). В Ваших рассуждениях есть "стоп слова" - "некий бакалейный отдел", "товары" и сам вектор задачи (насколько я понял из описания) - для заказчика, программа, есть присутствие учёта... надеюсь общий вектор мысли изложил... ну или с другой стороны... Если Вам хочется упростить - "начните с себя", уберите из переменных Вашу программу. Попытайтесь решить стандартными средствами офиса(к примеру)... оно как раз в стиле самописных текстовых ведосипедиков, с "идеально круглыми" колёсами... (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 09:00 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Интересно, а вот нафига этот мазохизм? 4Не, ну я использую текстовые файлы. Например, "дальние филиалы" готовят исходные данные в автономном приложении, а потом присылают результат в зазипованном json - файле. Данных - относительно мало (десятки тысяч позиций константных справочников плюс несколько сотен записей самих данных), и то приложение стартует секунд пять. То есть, для больших объемов не годится. Сделано так было, с одной стороны ради простоты - один икзешник плюс один файл данных, чтобы любой строитель смог разобраться. А с другой стороны - ради прикола, просто "попробовать сделать так". Ничто не мешало использовать, например, SQLite или FireBird Embedded. ...Хотя, наверное, раз я не занимался парсингом текстового файла руками, а использовал готовую библиотеку - то не считается. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 10:06 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ делал текстовые файлы. Но современные программисты не потянут: код писать придётся. да потянут, дорого только настройка выйдет - давно этим никто не занимается. Занятно, что все эти очевидности промелькивают потом на блоках гигантов как ноухау Хотя вся теория уже давно есть, просто ей никто не пользуется palladin600что тут именно подрузамевалось, под этим uri ? обычный запрос, обработчик которого перезагружает "базу" с диска ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 10:50 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
ёёёёёИнтересно, а вот нафига этот мазохизм? 4Не, ну я использую текстовые файлы. Например, "дальние филиалы" готовят исходные данные в автономном приложении, а потом присылают результат в зазипованном json - файле. Данных - относительно мало (десятки тысяч позиций константных справочников плюс несколько сотен записей самих данных), и то приложение стартует секунд пять. То есть, для больших объемов не годится. Сделано так было, с одной стороны ради простоты - один икзешник плюс один файл данных, чтобы любой строитель смог разобраться. А с другой стороны - ради прикола, просто "попробовать сделать так". Ничто не мешало использовать, например, SQLite или FireBird Embedded. ...Хотя, наверное, раз я не занимался парсингом текстового файла руками, а использовал готовую библиотеку - то не считается.SQLite делает тож самое, за что его и любят пихать во все дыры ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 10:51 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
kealon(Ruslan)ёёёёёИнтересно, а вот нафига этот мазохизм? 4Не, ну я использую текстовые файлы. Например, "дальние филиалы" готовят исходные данные в автономном приложении, а потом присылают результат в зазипованном json - файле. Данных - относительно мало (десятки тысяч позиций константных справочников плюс несколько сотен записей самих данных), и то приложение стартует секунд пять. То есть, для больших объемов не годится. Сделано так было, с одной стороны ради простоты - один икзешник плюс один файл данных, чтобы любой строитель смог разобраться. А с другой стороны - ради прикола, просто "попробовать сделать так". Ничто не мешало использовать, например, SQLite или FireBird Embedded. ...Хотя, наверное, раз я не занимался парсингом текстового файла руками, а использовал готовую библиотеку - то не считается.SQLite делает тож самое, за что его и любят пихать во все дыры Не, json в данном случае был хорош как результат сериализации объекта хранения. Для гридов от DevExpress был написан наследник TcxCustomDataSource, которого обучили [де]сериализоваться... работа была завершена за пять минут, поэтому больше ничего не рассматривали. Ну, сам json еще зиповали, и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 10:58 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
ёёёёё, ну видишь, это ж не каждый может осилить, а базу перегнать и поменять источник куда проще выглядит, SQLite за это и любят ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 11:05 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
kealon(Ruslan)ёёёёё, ну видишь, это ж не каждый может осилить, а базу перегнать и поменять источник куда проще выглядит, SQLite за это и любят Как раз наоборот, сериализация в json доступна практически изо всех ЯП, пара строк и всё, а по табличкам придется скорее всего руками раскидывать, да еще эти таблички создать надо. Но я в целом - за СУБД, а для переноса - json. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 11:10 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
В Delphi, например, есть ClientDataSet. Можно создать его, добавить столбцы разного типа, потом заполнять данные, и сохранять/читать в xml. Кроме того, любые изменения этого "файла" можно оформлять в виде "пакета", который можно передавать куда-то, например, на другую копию такого же файла (briefcase model). Так что да, тут база данных не нужна, даже sqlite. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 11:26 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
kdv, TClientDataSet - ничего хорошего, ибо одна плоская табличка, уж лучше SQLite. А json - и вложенные структуры, и связанные, и поиск разного рода. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 11:35 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
ёёёёёkdv, TClientDataSet - ничего хорошего, ибо одна плоская табличка, уж лучше SQLite. А json - и вложенные структуры, и связанные, и поиск разного рода.вот честно, положа ... сколько у вас процент программистов, которые могут написать банальный бинарный поиск? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:44 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
kealon(Ruslan), думаю, что 100%. А зачем, в данном конкретном случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:51 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
ёёёёё, а без ошибок :-)? ёёёёёkdv, TClientDataSet - ничего хорошего, ибо одна плоская табличка, уж лучше SQLite. А json - и вложенные структуры, и связанные, и поиск разного рода.я просто в большинстве контор такого не видел (имею ввиду 100% все смогут), и я понимаю архитектора, который говорит: "фигач таблицы" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 12:56 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
palladin600Добрый день! я натолкнулся на одну мысль, и хотел бы спросить людей, возможно, сталкивающихся с подобным вопросом. А именно, вопрос касается хранения данных обычном текстовом файле. Предположим, нужно сделать БД для некоего бакалейного отдела. Здесь товары которые не нужно делить на какие-то особые свойства, а достаточно хранить обобщающие записи: Сахар-песок ; Сахар рафинад ; Гречневая крупа ; Да. Исторически базы данных эволюционировали из текстовых файлов. Обычно - структурированных где каждая запись по длине равна предыдущей. Наподобие DBase/FoxPro. Некоторые хитрецы умудрялись отрезав заголовок dbf парсить такой файл как CSV. Ну не совсем СSV а с padding. Если вы делаете БД для бакалейного отдела для тестирования - тогда может быть взлетит. У вас БД не меняется а табличка только 1 раз читается с головы в хвост. Есть специальные JDBC-драйверы которые адаптируют текстовый файл к такой одно-табличной базе. Но радость закончится когда вы начнёте использовать такой файл для активных транзакций. обновлять. Удалять и вставлять записи в такой БД. Чем толще такой файлик - тем медленнее идет транзакция. Более того. Если в момент переписи старого файла выключат свет - то ваша система провиснет в некой сингулярности. Старый файл БД уже удалён. А новый еще не создан. Как поведёт себе ваша система после включения питания - бох его знает. Но такую архитеутуру нельзя признать удачной. И никто не гарантирует что все бакалейные товары выживут. Обычно все классические СУБД нормально переживают выключение POWER. С их точки зрения все состояния таблиц будут "откачены" в предыдущее устойчивое состояние. Тоесть все транзакции что были не финализировані commit-ом исчезнут из истории. Это малая потеря. По сравнению с потерей все базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 14:38 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
maytonЕсли в момент переписи старого файла выключат свет - то ваша система провиснет в некой сингулярности. Старый файл БД уже удалён. А новый еще не создан. Поэтому я и говорю: программировать надо. Писать в другой файл, переименовывать только после успешной записи. Не потянет аффтар. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 14:45 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Да. Такая практика есть в текстовых редакторах. Юниксовые тулзы пытаются обеспечить атомарность так. Но что будет если 2 конкурирующие обновлялки прилетели. Что будет? Потерянное обновление для одной из транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 14:52 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
maytonНо что будет если 2 конкурирующие обновлялки прилетели. Это для однопользовательских систем. Никакой конкуренции по определению. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 14:59 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmaytonНо что будет если 2 конкурирующие обновлялки прилетели. Это для однопользовательских систем. Никакой конкуренции по определению. Я-бы различал однопользовательскую и однопоточную. Тот еще ребус. Думаю даже спрашивать не стоит. Никакие requirements не формализованы. И от этого можно кодить как бох даст. Сахар песок еще не набрал столько чести. Мдя. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 15:05 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
palladin600хранения данных обычном текстовом файле. В 90-х была прога "Турбо -Бухгалтер" Они вместо привычного тогда DBF применяли именно такой метод. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 15:26 |
|
База данных в текстовом файле
|
|||
---|---|---|---|
#18+
maytonЯ-бы различал однопользовательскую и однопоточную. А смысл? Многопоточный случай лёгким движением руки превращается в однопоточный жёсткой сериализацией или монополизацией ресурса одним потоком. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2019, 16:23 |
|
|
start [/forum/topic.php?fid=35&tid=1552186]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 241ms |
total: | 391ms |
0 / 0 |