|
|
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
SQL queries alternative Утверждается, что в некоторых случаях можно работать с огромными базами данных, в которых все предсказуемые SQL запросы могут быть заменены своими эквивалентами, типа как в Clipper’e, так чтобы не терять существенно в производительности. Здесь опубликована часть будущей статьи для обсуждения. Август 2009 года Возможно, здесь будут высказаны очень спорные утверждения. Я представляю, какого можно разбудить зверя в этой тихой гавани. И на какие нелестные отзывы нарваться. Однако, это не помешает мне попытаться реализовать изложенные концепции в собственном коде. Полная их проверка потребует достаточно много времени. Однако для целей нашего демонстрационного программирования они вполне могут служить руководством к действию. В случае возможного неуспеха, всегда можно будет сказать, что отрицательный результат – тоже результат :) . Говоря кратко, альтернативой SQL запросам могут служить два основных метода: 1. Индексация данных. 2. «Проводка» данных или дублирование данных в другом (нужном) порядке. Вообще говоря, сюда следует записать еще такие достаточно «очевидные» утверждения, как 3. Оптимальная организация базы данных. 4. Использование циклов для фильтрации и выборки данных, там, где это эффективно . Речь идет не столько о принципиальной возможности избежать использования операторов SQL запросов (думаю, это вполне очевидно), а об альтернативе, которая сопоставима по производительности с SQL запросами провайдеров данных и внешних библиотек баз данных . Понятно, что ценой этому будет строгая структура и достаточно жесткий порядок работы с нашей базой данных и, особенно, дополнительный (избыточный) объем данных , который мы вынуждены будем задействовать, чтобы избежать «лишних» запросов. Используя эти методы можно вполне отказаться от непосредственного использования SQL запросов , а, следовательно, привлечения определенного «движка» (сервера) базы данных. Тем не менее, сервер баз данных может пригодиться для выполнения редких, непредсказуемых операций, эмуляция которых данными методами может занять слишком много времени, например, для разового преобразования данных, либо для «экзотического» экспорта – импорта . Однако особо следует отметить организацию разделенного (совместного) доступа к данным с помощью внешних библиотек баз данных . Программировать это самим достаточно трудно. Другое важное применение сервера БД это минимизация объема (дублирования) данных, за счет использования SQL запросов , ну и, конечно же, это защита данных и разделение полномочий и привилегий доступа к данным . Данные методы эти задачи просто не решают. Тем не менее, даже скромные возможности индексации, проводок, оптимизации и циклов достаточно интересны, чтобы рассмотреть их подробнее на данном этапе. Самое существенное для программиста здесь это индексация. Оптимизация структуры программы и базы данных тоже очень важна, но ей очень трудно научиться. Тут нужна либо хорошая интуиция, либо достаточно большой опыт программирования схожих задач. Думаю, если будут поступать замечания по поводу оптимизации , то их всегда можно будет обсудить и задействовать в наших проектах. Пока ограничимся кратким замечанием по поводу «правильной» структуры данных . Очень важно четко понимать организацию своей базы данных. Скажем, для учетных задач можно выделить первичные и вторичные таблицы. Первичные таблицы (справочники) служат для определения объектов , например, сотрудника, контрагента, фирмы, банковского счета и т.д. А вторичные таблицы определяют отношения между объектами (операции) , например, документы прихода, расхода, перемещения, переоценки или списания ресурсов и т.п. Далее важна правильная структура подчиненных таблиц (отношение один ко многим) и ссылок на записи (элементы, объекты) других таблиц (отношение многие к одному) . Затем нужно четко контролировать дублирование данных и проводки на их основе . Желательно вместо копирования данных использовать ссылки на них. А при изменении базовых элементов отслеживать зависимые вычисления, особенно для уже проведенных документов . Полезно также для дублированных данных установить режим «только чтение» . Но к этому мы еще вернемся, когда наша демонстрационная программа достигнет соответствующего уровня развития и мы сможем говорить, например, об учете ресурсов более предметно. Таким образом, точнее будет говорить об индексации, проводках, циклах и «правильной» структуре базы данных как об инструментах оптимизации нашего способа избежать явного применения SQL запросов (т.е. не использовать внешних провайдеров и библиотек баз данных) без существенной потери эффективности работы программы с базами данных . «Сложность» индексации только в том, что она используется явно достаточно редко, так как любой программист всегда имеет возможность применения либо бесплатных провайдеров данных и различных библиотек баз данных, либо платных коммерческих продуктов. В дальнейшем мы также продемонстрируем работу с такими внешними программными продуктами, но сейчас нам интересно выяснить эффективность собственного «движка» базы данных эмулирующего работу с базой данных VFP-9 . Следующим пунктом идет «Алгоритм создания CDX файлов» , тоже незаконченный фрагмент статьи. Тем не менее, думаю, что для обсуждения материала достаточно. Единственное. Что не надо думать, что я пытаюсь «отменить» промышленные базы данных . По сути, речь больше идет [b]о «ручном управлении» в частных случаях[b], интересных нам как программистам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 12:36:14 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery, ТЫ это все серьезно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 13:04:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Интересно, сколько миллионов человеко-часов готов для этого предложить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 13:17:33 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
WorobjoffИнтересно, сколько миллионов человеко-часов готов для этого предложить? Весьма немного. Где-то 0.0001 «миллиона человеко-часов», чтобы опубликовать следующую (пятую) статью с демонстрационным кодом. Вот ссылка на четвертую статью: MFC-04. MMF чтение и создание DBF файлов вместо сериализации для виртуальных списков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 13:43:41 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Любая попытка придумать заменитель SQL рано или поздно приводит к очередному диалекту того же SQL (проверено, плавали). Дело в том, что в основе все равно лежит язык ALPHA Кодда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 14:20:23 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
А альтернатива в чем? Убирание SQL и работа с данными на процедурных языках. При создание SQL обратно шли, чтобы отцепиться БЕЗ ОСОБОЙ ПОТЕРИ ЭФФЕКТИВНОСТИ. А эффективность разных реализаций SQL - это как собственно СУБД реализована! И что - попытка сделать свою СУБД под одну задачу? Вот ПРОЛОГ может быть и уже был, а точнее есть - алтьтернатива SQL. Например, DalaLog или СУБД Mnesia Erlang. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 15:11:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Любая попытка придумать заменитель SQL рано или поздно приводит к очередному диалекту того же SQL (проверено, плавали). Дело в том, что в основе все равно лежит язык ALPHA Кодда. +1 и дело не в технологиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 15:16:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
_модЛюбая попытка придумать заменитель SQL рано или поздно приводит к очередному диалекту того же SQL (проверено, плавали). Дело в том, что в основе все равно лежит язык ALPHA Кодда. Я хочу не «заменитель», а временный «отменитель». Т.е. не использовать SQL вообще, пока в нем не возникнет исключительная потребность. Есть масса достаточно примитивных задач, где есть элементы баз данных, но нет желания использовать дорогую или громоздкую базу данных. Например, что-то типа шароварной программы – напоминателя дней рождений своих друзей. Таких программ в интернете валом, за все просят небольшие, но бабки, и везде реализация таблицы данных реализована из рук вон плохо. Хранят данные либо обычным текстом, либо в виде сериализации. Ясень пень, что лепить сюда внешний движок базы данных абсолютно бессмысленно. Здесь практически одна таблица, в которой максимум что надо делать это сортировку и поиск. Другой пример, который я уже цитировал в соседнем топике это возможность решить задачу «Несложная специфическая БД для 200 млн записей.» средствами С++ & MFC (ради интерфейса). Для подобных задач применять коммерческие движки баз данных достаточно глупо, а использование безплатных библиотек типа MySQL, MyLibSql и т.д. слишком громоздко для таких простых задач (особенно первой). Так что важный вывод, для написания относительно несложных шароварных программ с элементами баз данных лучше всего использовать небольшой по объему, общедоступный код (например, в моем варианте, который я со временем опубликую полностью), без явного применения SQL запросов, что должно сказаться положительно на качестве шароварных программ и их конкурентно способности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 15:43:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Есть масса достаточно примитивных задач, где есть элементы баз данных, но нет желания использовать дорогую или громоздкую базу данных. SQLite - дорог или громоздок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 15:55:52 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
AlexandrPlusА альтернатива в чем? Убирание SQL и работа с данными на процедурных языках. При создание SQL обратно шли, чтобы отцепиться БЕЗ ОСОБОЙ ПОТЕРИ ЭФФЕКТИВНОСТИ. А эффективность разных реализаций SQL - это как собственно СУБД реализована! И что - попытка сделать свою СУБД под одну задачу? Вот ПРОЛОГ может быть и уже был, а точнее есть - алтьтернатива SQL. Например, DalaLog или СУБД Mnesia Erlang. Альтернатива – в не использовании внешнего движка БД без крайней необходимости, без существенной потери эффективности. Не под «одну задачу», а «класс задач». Таких задач достаточно много. Например, шароварные программы, в которых присутствуют элементы баз данных. Скажем, напоминальщики дней рождений ваших друзей. Или домашняя база данных мультимедийных файлов. За такие программулины обычно просят не большие, но бабки. Причем таблицы данных используются из рук вон плохо, поскольку нет средств работы с БД. В лучшем случае используют сериализацию для хранения данных, а обычно просто текстовые файлы. Но даже в таких задачах желательно инлайн редактирование, хранение данных в известных форматах БД, сортировка и поиск. Ну, может быть еще отбор по значению. Понятно, что лепить сюда движок БД глупо, даже если это SQLite. Проще воспользоваться несколькими килобайтами открытого кода для работы, скажем с dbf / cdx файлами. И для такого класса задач вполне достаточно и выглядеть будет прилично. А то я встречал в Интернете один такой «напоминатель» написанный на Яве, с сотней метров самой Явы и сфарганенного как из «царства мертвых». Еще одна характерная задача сформулирована здесь на форуме. Я уже говорил о ней в соседней теме. Это «Несложная специфическая БД для 200 млн записей» . Вот такую проблему стоит решить без привлечения внешних БД. И полезно и приятно и дешево и не долго. Другой такой класс задач – учетные задачи для предприятия, Типа учета ресурсов, зарплаты, бухгалтерии. Сами по себе эти задачи могут быть достаточно сложны, однако все запросы там предсказуемы и легко могут быть замещены их аналогом. То что эта метода эффективная, я уже доказал самому себе на своей работе. Отвлекаться не буду, так как уже не по теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 18:50:56 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ИзопропилSQLite - дорог или громоздок? Нет, но что это доказывает? Что ее нужно обязательно использовать, даже если в ней явной необходимости? Будет необходимость, можно будет прилепить к своему клиенту и промышленные SQL сервера – какие проблемы? Принцип минимальной целесообразности еще никто не отменял . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 18:57:20 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > */Утверждается, что в некоторых случаях можно работать с огромными > базами данных, в которых все предсказуемые SQL запросы могут быть > заменены своими эквивалентами, типа как в Clipper’e, так чтобы не терять > существенно в производительности./* А при чём тут собственно SQL или нет ? Скорость работы зависит от алгоритмов обработки данных, т.е. в основном от алгоритма поиска нужных записей. Там уже SQL или нет -- всё равно. > Говоря кратко, альтернативой SQL запросам могут служить два основных метода: > > *1. Индексация* данных. Индексация данных -- это один из основных, если не единственный, способ повышения (или поддержания на приемлимом уровне) производительности СУБД. И при этом вовсе не важно, на каком языке обрабатываются данные, SQL это или нет -- по барабану. Я прочитал всё вместе, и понял, что это либо полный бред, либо на столько неграмотно изложено, что воспринимать можно только как полный бред. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 20:34:46 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Я хочу не «заменитель», а временный «отменитель». Т.е. не использовать > SQL вообще, пока в нем не возникнет исключительная потребность. Есть Ну не используй, кто ж тебя заставляет-то ? Есть у твоей СУБД другие средства -- работай ими. Только быстрее-то не будет. Т.е. может быть быстрее, да только ты пока даже не заикался про то, почему бы это могло быть так. В смысле, я-то знаю, почему может быть быстрее, но ты, видимо, нет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 20:39:02 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery, Что такое "явная необходимость" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 21:48:05 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery... Тезисы изложены весьма сумбурно. Мне кажется я местами понимаю вашу мысль, но вам как-бы не хватает последовательности изложения материала. Почитайте примеры оформления аналогичных статей-предложений и посмотрите, какие пункты вы должны обязательно отметить. Здесь должны быть и введение, основная часть, заключение и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 22:22:44 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
mayton, еще Выводы добавь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 22:36:14 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
да вообще, надо уже галерею славы из них делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 22:58:44 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivА при чём тут собственно SQL или нет ? Скорость работы зависит от алгоритмов обработки данных, т.е. в основном от алгоритма поиска нужных записей. Там уже SQL или нет -- всё равно. А при том, что без внешних серверов БД очень трудно работать со своими БД. Обычно таким сервером БД является SQL server, поэтому о нем и идет речь. Но внешняя БД или библиотека для работы с ней стоит некоторых денег, что следует принимать в расчет, когда собираешься распространять свой продукт. Зачем покупать лицензию на распространение библиотек чьей-то БД, если без них можно, в некоторых случаях, обойтись? Понятно, что алгоритмы прошиты в библиотеках баз данных. Если вы можете написать собственные лучшие алгоритмы или, хотя бы, достаточные по производительности для собственной БД, то почему бы не воспользоваться ими? Множество алгоритмов опубликовано, проблема здесь больше выбора из имеющихся, чем изобретение нового. MasterZivИндексация данных -- это один из основных, если не единственный, способ повышения (или поддержания на приемлимом уровне) производительности СУБД. И при этом вовсе не важно, на каком языке обрабатываются данные, SQL это или нет -- по барабану. В нашем контексте SQL важен не как язык, а как сервер, в котором реализованы функции для эффективной работы с вашей БД. Именно об временном отказе от сторонних библиотек поддержки БД и идет речь, а не о языке работы с этими БД. MasterZivЯ прочитал всё вместе, и понял, что это либо полный бред, либо на столько неграмотно изложено, что воспринимать можно только как полный бред. Бред очень трудно реализовывать в виде серии последовательных статей и демонстрационного кода. Вы читали мою четвертую статью? В пятой будет добавлена поддержка индексных cdx файлов и замерена производительность создания индексов в сравнении с VFP-9 (хотя бы для некоторых, интересных для меня случаев). Тесты по скорости создания индексов с помощью самого VFP-9 я уже показал, затем хочу сравнить со своей реализацией. Будут неприемлемые результаты, буду работать со сторонними библиотеками, нет, тогда со своими. Что здесь бредового то? MasterZivНу не используй, кто ж тебя заставляет-то ? Есть у твоей СУБД другие средства -- работай ими. Только быстрее-то не будет. Т.е. может быть быстрее, да только ты пока даже не заикался про то, почему бы это могло быть так. В смысле, я-то знаю, почему может быть быстрее, но ты, видимо, нет. Любое частное решение всегда можно сделать лучшим, чем универсальное, хотя бы и от таких монстров, как Майкрософт. Я не ставлю целью, написать аналог СУБД. По большом счету, меня интересуют, на данном этапе, только алгоритмы индексации. Про оптимизацию моих программ вряд ли мне кто-либо скажет больше, чем я сам. Про алгоритмы создания cdx файлов у меня здесь есть статья. Она еще не закончена и выбор алгоритмов еще не закончен. Опубликовал ее с единственной целью услышать конструктивные замечания. Пока таких не было. Если вам есть что сказать по этому поводу, то скажите, если нет, то критика «вообще» меня интересует мало. Я там писал, что Майкрософт не публикует своих алгоритмов. Однако это не совсем так. Частично публикует, только бесплатные первоисточники находятся с большим трудом. Например, нашел кое-какие оригинальные статьи Рудольфа Байера, изобретателя B+ деревьев, лежащих в основе создания индексов. Есть и другие интересные статьи по этому поводу. Все на английском, поэтому нужно время, чтобы переварить. Так что я не думаю, что ваше «ноу-хау» будет оставаться в «секрете» слишком долго. Меня сейчас занимают некоторые обнаруженные «секреты» Майкрософт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 23:25:22 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ИзопропилEmery, Что такое "явная необходимость" ? Это когда хочется без этого обойтись, но не можется :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 23:30:12 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryИзопропилEmery, Что такое "явная необходимость" ? Это когда хочется без этого обойтись, но не можется :) . Есть Embedded-SQL сервера. Это которые только с данными программы работают. При чем, 99% из них - совершенно бесплатные решения с той же производительностью, как и полномасштабные промышленные сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 02:33:21 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinEmeryИзопропилEmery, Что такое "явная необходимость" ? Это когда хочется без этого обойтись, но не можется :) . Есть Embedded-SQL сервера. Это которые только с данными программы работают. При чем, 99% из них - совершенно бесплатные решения с той же производительностью, как и полномасштабные промышленные сервера. Я займусь SQL серверами, когда почувствую в этом «явную необходимость» :) . Пока же мне интересно исследовать предложенную концепцию насчет временного отказа от внешних SQL серверов за счет ручного управления собственными базами данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 09:22:10 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Изопропил SQLite - дорог или громоздок? что значит дорог или громоздок??? я последнее время только его и использую в массах - с цинком или аиром - ваще заглядение!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 09:31:50 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
quazareИзопропил SQLite - дорог или громоздок? что значит дорог или громоздок??? я последнее время только его и использую в массах - с цинком или аиром - ваще заглядение!!! Я юзал различные ORM (фирменные и кустарные) для формирования отчётности и пришёл к выводу что удобнее SQL (отчётности!) пока еще ничено не придумано. Особенно это касается тех случаев, когда надо "быринько" подправить несколько условий в отчёте, добавить поля и изменить ранжирование и сортировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 09:45:18 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > В нашем контексте SQL важен не как язык, а как сервер, в котором > реализованы функции для эффективной работы с вашей БД. Именно об > временном отказе от сторонних библиотек поддержки БД и идет речь, а не о > языке работы с этими БД. Тогда я совсем ничего не понимаю. > Бред очень трудно реализовывать в виде серии последовательных статей и > демонстрационного кода. Вы читали мою четвертую статью? В пятой будет Нет, не читал. > добавлена поддержка индексных cdx файлов и замерена производительность > создания индексов в сравнении с VFP-9 (хотя бы для некоторых, интересных > для меня случаев). Тесты по скорости создания индексов с помощью самого > VFP-9 я уже показал, затем хочу сравнить со своей реализацией. Будут > неприемлемые результаты, буду работать со сторонними библиотеками, нет, > тогда со своими. Что здесь бредового то? А зачем создавать свои собственные индексы, тем более в FoxPro, где есть и SQL, и не SQL ? > Любое частное решение всегда можно сделать лучшим, чем универсальное, > хотя бы и от таких монстров, как Майкрософт. Я не ставлю целью, написать Индексы очень сложно сделать лучше, чем они уже сделаны. И там особых частностей нет. Всё универсальное, и всё одинаковое. > Пока таких не было. Если вам есть что сказать по этому поводу, то НУ я и пытаюсь, но как-то пока очень не понятно, чего же ты хочешь. > скажите, если нет, то критика «вообще» меня интересует мало. Я там > писал, что Майкрософт не публикует своих алгоритмов. Однако это не Да ёлы-палы, если вам нужны алгоритмы и структуры для индексирования, то это не проблема. Литературы по этому делу навалом. > на английском, поэтому нужно время, чтобы переварить. Так что я не > думаю, что ваше «ноу-хау» будет оставаться в «секрете» слишком долго. Это какое такое ноу-хау ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 11:41:55 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivТогда я совсем ничего не понимаю. Что ж тут непонятного? Зачем платить за чужие библиотеки, если без них вполне можно обойтись в своих программах? Если уж нельзя, тогда другое дело придется покупать. MasterZivНет, не читал. Почитайте, если будет желание и время. «MFC-04. MMF чтение и создание DBF файлов вместо сериализации для виртуальных списков» В пятой статье логично для своих программ обеспечить поддержку индексов, В формате VFP потому, что так удобней. В шестой статье будет идти речь о непосредственном подключении и работе с vfp9r.dll / vfp9renu.dll . Затем, может быть, для примера будут взяты безплатные движки БД. Однако, я хочу чтобы моя программа работала как с движками БД, так и без них. MasterZivА зачем создавать свои собственные индексы, тем более в FoxPro, где есть и SQL, и не SQL ? Чтобы иметь возможность юзверю не платить за библиотеки Visual FoxPro (или чтобы мне не требовалось обязательно дистрибутировать их, так как за это нужно платить денежку). Но ежели у пользователя уже есть такие библиотеки (при желании их можно найти в интернете), но он сможет спокойно подключиться к ним и работать на полную катушку. Другое дело, если такая дистрибуция будет окупать себя. Тогда можно будет подумать и об этом. Что касается безплатных библиотек БД, то с ними я пока слабо знаком, но не думаю, что они сильно лучше библиотек VFP (проще говоря, до них еще не дошли руки). MasterZivИндексы очень сложно сделать лучше, чем они уже сделаны. И там особых частностей нет. Всё универсальное, и всё одинаковое. У VFP очень хорошая производительность в их создании, ну просто очень хорошая. Если мне удастся достичь хотя бы 80% это будет очень большой успех для меня. Насчет универсальности не очень согласен. В создании CDX файлов есть много специфики, может быть даже запатентованной, Майкрософт. Кое о чем я веду речь в «Алгоритм создания CDX файлов» . Сейчас я читаю статьи Гоца Грейфа из Майкрософт . Хочу выяснить для себя следующую проблему. Майкрософт умудряется сохранять физический порядок в индексном файле при разовой вставке / модификации записи без его явного физического переупорядочивания . Если бы внутри файловые указатели CDX файла были бы относительными, а не абсолютными, то этого можно было бы достичь путем вставки нужного сегмента данных в файловый связный список на уровне операционной системы и корректировкой нескольких связей на логическом уровне. Для нас это выглядело бы практически мгновенным (как оно и есть на самом деле). Однако абсолютные внутри файловые смещения в указателях меняют дело. Может быть каким-то образом операционная система может автоматически регулировать эти указатели? Тот же Гоц Грэйф пишет, что «Чтобы избежать последующего обновления соседних страниц, традиционная цепочка страниц с использованием физических идентификаторов страниц заменяется логической цепочкой страниц с использованием разделительных ключей (separator key) , т.е. каждая страница несет в качестве нижнего и верхнего барьеров разделительный ключ, копируемый в страницу родительского узла при отщеплении страницы от ее соседей. В дополнение к поддержке тех же проверок согласованности и других технических операций, что и те, которые поддерживаются традиционными физическими цепочками страниц, барьерные ключи упрощают и улучшают блокировку диапазонов значений ключа, поскольку никогда не требуется перемещаться к соседней листовой странице для нахождения правого значения ключа в диапазоне. После замены физических цепочек страниц логическими барьерными ключами физические идентификаторы страниц остаются только в указателях детей, и только их требуется изменять при перемещении узла на новое место на диске .» Правда до конца я так и не понял :) . Как видите, даже этот пример показывает, что не все так просто. А вообще-то очень сильно учитывается специфика работы компьютерного оборудования и операционной системы, чтобы выжать из алгоритма максимум производительности. Понятно, что до всех этих нюансов мне трудно докопаться одному. MasterZivДа ёлы-палы, если вам нужны алгоритмы и структуры для индексирования, то это не проблема. Литературы по этому делу навалом. С теоретическими алгоритмами я знаком, но они не могут объяснить физический порядок индексов в CDX файле, наряду с логическим. Там нигде не идет речь об упаковке данных в индексных листьях также. Так что литературы валом, а практического толку мало. Тот же Алексей Долгачев , который написал библиотеку для работы с dbf / cdx файлами работает только с чужими индексами и не создает собственных. Поэтому и достижений у него немного, собственный грид (который все равно не лучше CListCtrl, особенно для виртуального режима) и утилиты просмотра / редактирования dbf файлов. Стоило ли вообще огород городить? MasterZivЭто какое такое ноу-хау ? Ваши слова: MasterZivВ смысле, я-то знаю, почему может быть быстрее, но ты, видимо, нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 15:20:33 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Уже такой длинный топик, а слово Рашмор еще не прозвучало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 15:50:58 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
miksoftУже такой длинный топик, а слово Рашмор еще не прозвучало Посмотри ссылку на «Алгоритм создания CDX файлов» чуть выше. Так это слово встречается трижды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 16:18:34 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
можно вопрос? а на кой лад нужны альтернативы sql запросам? вот честно? у нас рынок раздулся и программисты не знают как быстрее избавиться от печатания select * from MYSUPERPUPERTOTALTABLE? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 18:25:06 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Волна ORM-* и embed-* мании поднимается каждые 3-4 года. Пошумит-пошумит и потом утихнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 18:29:18 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
АСУ ТПшникможно вопрос? а на кой лад нужны альтернативы sql запросам? вот честно? у нас рынок раздулся и программисты не знают как быстрее избавиться от печатания select * from MYSUPERPUPERTOTALTABLE? :) Вот цитирую самого себя с начала этой страницы: «Что ж тут непонятного? Зачем платить за чужие библиотеки, если без них вполне можно обойтись в своих программах? Если уж нельзя, тогда другое дело придется покупать». Для себя любимого можно и пиратскими копиями воспользоваться, но юзверям надо предлагать безупречное решение. С другой стороны это просто интересно, иначе можно озадачится вопросом Митрофанушки: «Зачем учить географию, если извозчики есть, отвезут куда надо!» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 19:56:37 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryБред очень трудно реализовывать в виде серии последовательных статей и демонстрационного кода. Вы сильно ошибаетесь. EmeryАСУ ТПшникможно вопрос? а на кой лад нужны альтернативы sql запросам? вот честно? у нас рынок раздулся и программисты не знают как быстрее избавиться от печатания select * from MYSUPERPUPERTOTALTABLE? :) Вот цитирую самого себя с начала этой страницы: «Что ж тут непонятного? Зачем платить за чужие библиотеки, если без них вполне можно обойтись в своих программах? Если уж нельзя, тогда другое дело придется покупать». Совершенно верно, зачем платить, если можно взять бесплатные. Хотя об этом уже говорили. tchingizда вообще, надо уже галерею славы из них делать Это да. Хотя можно повесить одну доску на всех, все равно похожи как клоны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 22:20:47 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > *Майкрософт умудряется сохранять физический порядок в индексном файле > при разовой вставке / модификации записи без его явного физического > переупорядочивания*. Я опять ничего не понимаю. DBF имеет записи только фиксированной длины. Т..е файл -- это массив (регулярная структура) записей. Указатель на запись -- это просто её номер по порядку с начала. Записи никогда из DBF не удаляются физически. Только логически. Физическое удаление выполняется только в монопольном режиме захвата файла коммандой PACK. Добавляются записи тольк в конец. Так что ж сложного-то в сохранении физического порядка записей ? > Правда до конца я так и не понял :) . > Как видите, даже этот пример показывает, что не все так просто. А Ну, подобные техники опять-таки достаточно распространены в литературе. Но конечно покопать придётся. > В смысле, я-то знаю, почему может быть быстрее, но ты, видимо, нет. Ну, это было совсем не про это, видимо, уже. Я имел в виду, что преобразование SQL в физические алгоритмы обработки могут быть не всегда оптимальными, если вы пишите их руками, может получится выигрыш. Но тоже не всегда :-) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 00:40:40 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
c127Совершенно верно, зачем платить, если можно взять бесплатные. Хотя об этом уже говорили. Зачем брать бесплатные на несколько метров (МБ), если можно не брать и воспользоваться своим кодом на несколько килограммов (КБ)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 07:34:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emeryc127Совершенно верно, зачем платить, если можно взять бесплатные. Хотя об этом уже говорили. Зачем брать бесплатные на несколько метров (МБ), если можно не брать и воспользоваться своим кодом на несколько килограммов (КБ)? ИМХО - начните лучше с ОС. А то они уже за несколько Гб переваливают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 08:42:26 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emeryc127Совершенно верно, зачем платить, если можно взять бесплатные. Хотя об этом уже говорили. Зачем брать бесплатные на несколько метров (МБ), если можно не брать и воспользоваться своим кодом на несколько килограммов (КБ)? Я-бы для начала исследовал возможность использования "того что уже есть" в нормальном Windows XP/Vista. Посмотрите в сторону драйверов MS-Jet (движок Access). Дополнительно, почитайте про MS-SQL Express, особенно про встраивание в приложения. Насколько мне известно, он бесплатен для применения. Уж коли этих возможностей не будет хватать, тогда следует садиться за разработку чего-то кустарного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 09:16:54 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivEmery пишет: > *Майкрософт умудряется сохранять физический порядок в индексном файле > при разовой вставке / модификации записи без его явного физического > переупорядочивания*. Я опять ничего не понимаю. DBF имеет записи только фиксированной длины. Т..е файл -- это массив (регулярная структура) записей. Указатель на запись -- это просто её номер по порядку с начала. Записи никогда из DBF не удаляются физически. Только логически. Физическое удаление выполняется только в монопольном режиме захвата файла коммандой PACK. Добавляются записи тольк в конец. Так что ж сложного-то в сохранении физического порядка записей ? Ну, речь идет не о dbf файле, а об cdx файле. Про dbf вы все правильно пишите. А в cdx ситуация примерно такая. Вставка идет обычным классическим методом в связный список под управлением дерева (расщепление узла и редактирование нескольких логических связей). Физически индексный ключ оказывается в конце, если ему нет места в середине. А дальше начинается «мистика». Если cdx файл достаточно большой, то происходит замещение физической последовательности сегментов файла логической . Об этот как раз и говорит Гоц Грэйф из Майкрософт . Т.е. физическое переупорядочивание файла идет на уровне операционной системы (абсолютное чтение / запись физического диска). Менять содержимое файла (внутри файловых указателей) нет никакой необходимости, так как реально мы имеем дело с аналогом физической дефрагментацией жесткого диска (которое не влияет на содержимое файла). А вот визуально эффект присутствует. Вставка в гигабайтный индексный файл ключа, который логически должен быть в начале, оказывается в начале и «физически». Т.е. просматривая этот файл через любой шестнадцатеричный редактор, мы видим, что «физически» эта запись присутствует в самом начале файла (имеет соответствующее файловое смещение), тогда как ссылка на эту запись говорит, что реально она находится в конце файла. Вот пример того, что мы имеем на логическом уровне в нашем гигабайтном cdx файле после вставки в него ключа с 70-ю нулями и буквой «z»: Адрес листа в файле Ссылка на RList Кол-во ключей4096 1023870976 34608 3072 45120 4096 65632 4608 66144 5120 66656 5632 67168 6144 67680 7680 68192 8192 68704 8704 69216 9216 69728 9728 610240 10240 610752 11264 6 До вставки этого ключа была физически и логически упорядоченная структура с 6-ю ключами во всех листовых индексах. А реальное «физическое» представление после вставки этого ключа показано на прилагаемом рисунке. MasterZivНу, подобные техники опять-таки достаточно распространены в литературе. Но конечно покопать придётся. Вот я и «копаю» :) . MasterZivЯ имел в виду, что преобразование SQL в физические алгоритмы обработки могут быть не всегда оптимальными, если вы пишите их руками, может получится выигрыш. Но тоже не всегда :-) Вот эта и есть одна из причин моего «ручного управления» базами данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 09:42:38 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Да, забыл добавить, что может быть в этом и заключается один из секретов Рашмора (Rushmore’s secret) ? Правда не совсем понятно, какое преимущество дает «замещение физической последовательности файла логической» ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 10:29:01 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
GYGYИМХО - начните лучше с ОС. А то они уже за несколько Гб переваливают. Следуя ваше логике, в простенькую программу на 30-50 Кб «напоминателей дней рождения ваших друзей», где всего одна таблица и максимум, что нужно это сортировка и поиск в не более чем 1000 записей (вряд ли у вас больше друзей), нужно обязательно прилепить безплатный движок БД только потому, что он безплатный? А у меня на эту сортировку и поиск в собственном dbf файле уже написано несколько килобайт кода. Так что мне этот код выбросить и обязательно прилепить какой-нибудь sqlite? А если мне этого не хочется делать, так что по этому поводу надо ёрничать? Позвольте другим быть другими и это вам зачтется в будущей жизни! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 10:30:58 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonЯ-бы для начала исследовал возможность использования "того что уже есть" в нормальном Windows XP/Vista. Посмотрите в сторону драйверов MS-Jet (движок Access). Дополнительно, почитайте про MS-SQL Express, особенно про встраивание в приложения. Насколько мне известно, он бесплатен для применения. Уж коли этих возможностей не будет хватать, тогда следует садиться за разработку чего-то кустарного. Знаете, провайдеры данных меня не очень устраивают, если уж на то пошло, то меня более привлекают библиотеки коммерческих БД, например, работа напрямую с библиотеками vfp9t.dll / vfp9renu.dll (и другие мои сообщения в этой теме) безо всякой регистрации в реестре. Я уже пытался это делать и имею неплохие результаты (причем с этими dll-ками напрямую никто не работает). Об этом более подробно будет идти речь в моей шестой статье (а сейчас я готовлю пятую). Так что всему свое время . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 10:38:56 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЗнаете, провайдеры данных меня не очень устраивают, если уж на то пошло, то меня более привлекают библиотеки коммерческих БД, например, работа напрямую с библиотеками vfp9t.dll / vfp9renu.dll (и другие мои сообщения в этой теме) безо всякой регистрации в реестре. Я уже пытался это делать и имею неплохие результаты (причем с этими dll-ками напрямую никто не работает). Об этом более подробно будет идти речь в моей шестой статье (а сейчас я готовлю пятую). Так что всему свое время . Спасибо за ссылку. Почитаю. С Visual FoxPro мне работать не приходилось, хотя я много наслышан о из знаменитом индексе rush more и о скорости выполнения транзакций в однопользовательском режиме. Смотрели эту ссылку? А у меня на эту сортировку и поиск в собственном dbf файле уже написано несколько килобайт кода. Так что мне этот код выбросить и обязательно прилепить какой-нибудь sqlite? А если мне этого не хочется делать, так что по этому поводу надо ёрничать? Позвольте другим быть другими и это вам зачтется в будущей жизни! Здесь, позвольте с вами не согласиться. Для современных систем (слава богу) требования объёма кода в бинарнике уже перестали быть критичными. Прошли те времена, когда надо было в оверлейный буфер пихать всю возможную логику. Поэтому мне кажется большее внимание стоит обращать на то, как софт использует и освобождает heap memory и какие механизмы управления этим предоставляет. По поводу ёрничания. Вы взяли на себя смелось написать статью в популярный портал разработчиков. Это - большая ответстсвенность. Вы - несёте "своё" учение. Многие неокрепшие умы после прочтения этого материала перестанут быть "другими" и начнут думать как вы. P.S. Поэтому не обижайтесь на пристальное внимание и критику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 11:19:59 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery SQL queries alternative Утверждается, что в некоторых случаях можно работать с огромными базами данных, в которых все предсказуемые SQL запросы могут быть заменены своими эквивалентами, типа как в Clipper’e, так чтобы не терять существенно в производительности. Здесь опубликована часть будущей статьи для обсуждения. Август 2009 года Возможно, здесь будут высказаны очень спорные утверждения. Я представляю, какого можно разбудить зверя в этой тихой гавани. И на какие нелестные отзывы нарваться. Однако, это не помешает мне попытаться реализовать изложенные концепции в собственном коде. Полная их проверка потребует достаточно много времени. Однако для целей нашего демонстрационного программирования они вполне могут служить руководством к действию. В случае возможного неуспеха, всегда можно будет сказать, что отрицательный результат – тоже результат :) . Говоря кратко, альтернативой SQL запросам могут служить два основных метода: 1. Индексация данных. 2. «Проводка» данных или дублирование данных в другом (нужном) порядке. Вообще говоря, сюда следует записать еще такие достаточно «очевидные» утверждения, как 3. Оптимальная организация базы данных. 4. Использование циклов для фильтрации и выборки данных, там, где это эффективно . Речь идет не столько о принципиальной возможности избежать использования операторов SQL запросов (думаю, это вполне очевидно), а об альтернативе, которая сопоставима по производительности с SQL запросами провайдеров данных и внешних библиотек баз данных . Понятно, что ценой этому будет строгая структура и достаточно жесткий порядок работы с нашей базой данных и, особенно, дополнительный (избыточный) объем данных , который мы вынуждены будем задействовать, чтобы избежать «лишних» запросов. Используя эти методы можно вполне отказаться от непосредственного использования SQL запросов , а, следовательно, привлечения определенного «движка» (сервера) базы данных. Тем не менее, сервер баз данных может пригодиться для выполнения редких, непредсказуемых операций, эмуляция которых данными методами может занять слишком много времени, например, для разового преобразования данных, либо для «экзотического» экспорта – импорта . Однако особо следует отметить организацию разделенного (совместного) доступа к данным с помощью внешних библиотек баз данных . Программировать это самим достаточно трудно. Другое важное применение сервера БД это минимизация объема (дублирования) данных, за счет использования SQL запросов , ну и, конечно же, это защита данных и разделение полномочий и привилегий доступа к данным . Данные методы эти задачи просто не решают. Тем не менее, даже скромные возможности индексации, проводок, оптимизации и циклов достаточно интересны, чтобы рассмотреть их подробнее на данном этапе. Самое существенное для программиста здесь это индексация. Оптимизация структуры программы и базы данных тоже очень важна, но ей очень трудно научиться. Тут нужна либо хорошая интуиция, либо достаточно большой опыт программирования схожих задач. Думаю, если будут поступать замечания по поводу оптимизации , то их всегда можно будет обсудить и задействовать в наших проектах. Пока ограничимся кратким замечанием по поводу «правильной» структуры данных . Очень важно четко понимать организацию своей базы данных. Скажем, для учетных задач можно выделить первичные и вторичные таблицы. Первичные таблицы (справочники) служат для определения объектов , например, сотрудника, контрагента, фирмы, банковского счета и т.д. А вторичные таблицы определяют отношения между объектами (операции) , например, документы прихода, расхода, перемещения, переоценки или списания ресурсов и т.п. Далее важна правильная структура подчиненных таблиц (отношение один ко многим) и ссылок на записи (элементы, объекты) других таблиц (отношение многие к одному) . Затем нужно четко контролировать дублирование данных и проводки на их основе . Желательно вместо копирования данных использовать ссылки на них. А при изменении базовых элементов отслеживать зависимые вычисления, особенно для уже проведенных документов . Полезно также для дублированных данных установить режим «только чтение» . Но к этому мы еще вернемся, когда наша демонстрационная программа достигнет соответствующего уровня развития и мы сможем говорить, например, об учете ресурсов более предметно. Таким образом, точнее будет говорить об индексации, проводках, циклах и «правильной» структуре базы данных как об инструментах оптимизации нашего способа избежать явного применения SQL запросов (т.е. не использовать внешних провайдеров и библиотек баз данных) без существенной потери эффективности работы программы с базами данных . «Сложность» индексации только в том, что она используется явно достаточно редко, так как любой программист всегда имеет возможность применения либо бесплатных провайдеров данных и различных библиотек баз данных, либо платных коммерческих продуктов. В дальнейшем мы также продемонстрируем работу с такими внешними программными продуктами, но сейчас нам интересно выяснить эффективность собственного «движка» базы данных эмулирующего работу с базой данных VFP-9 . Следующим пунктом идет «Алгоритм создания CDX файлов» , тоже незаконченный фрагмент статьи. Тем не менее, думаю, что для обсуждения материала достаточно. Единственное. Что не надо думать, что я пытаюсь «отменить» промышленные базы данных . По сути, речь больше идет [b]о «ручном управлении» в частных случаях[b], интересных нам как программистам. Был когда популярен Btrieve. Сейчас есть и его бесплатный open source вариант. Не пошло, понимаешь. Очень трудно потом поддерживать и изменять данные. Даже Pervasive сделал свой SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 11:41:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Я имел в виду, что преобразование SQL в физические алгоритмы обработки могут > быть не всегда оптимальными, если вы пишите их руками, может получится > выигрыш. Но тоже не всегда :-) > > > Вот эта и есть одна из причин моего «ручного управления» базами данных. Ты про неё не говорил до сих пор ни слова. Не, ну я тоже не понимаю, зачем изобретать свой велосипед. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 11:55:04 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Да, забыл добавить, что может быть в этом и заключается один из > *секретов Рашмора (Rushmore’s secret)*? Правда не совсем понятно, какое Rushmore -- это технология применения индексов для выполнения запросов, а не технология организации индексного файла. > преимущество дает *«замещение физической последовательности файла > логической»*? Да мне тоже не понятно, о чём ты. Там описываются обычные методики организации индексного дерева. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 11:57:14 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryGYGYИМХО - начните лучше с ОС. А то они уже за несколько Гб переваливают. Следуя ваше логике, в простенькую программу на 30-50 Кб «напоминателей дней рождения ваших друзей», где всего одна таблица и максимум, что нужно это сортировка и поиск в не более чем 1000 записей (вряд ли у вас больше друзей), нужно обязательно прилепить безплатный движок БД только потому, что он безплатный? А у меня на эту сортировку и поиск в собственном dbf файле уже написано несколько килобайт кода. Так что мне этот код выбросить и обязательно прилепить какой-нибудь sqlite? А если мне этого не хочется делать, так что по этому поводу надо ёрничать? Позвольте другим быть другими и это вам зачтется в будущей жизни! То, что Вам интересно в этом ковыряться - это понятно. Не очень понятно, как Вы собираетесь все это применять. В смысле оммерческого использования. Для "«напоминателей дней рождения ваших друзей», где всего одна таблица и максимум, что нужно это сортировка и поиск в не более чем 1000 записей " - можно вообще обойтись текстовым файлом для хранения, потом все операции в памяти. Какие тут нужны индексы? Для задач, требующих большей производительности, как уже говорилось, есть куча продуктов, в т.ч. бесплатных... Так что +1. Зачем изобретать велосипед? ЗЫ Про ОС - тоже + 1. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 12:25:06 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
моя напоминалка др весит 4 кб., без базы. ------------- Sapienti sat! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 12:27:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonСмотрели эту ссылку? Смотрел, только у меня между 4-й и 5-й статьями стоят другие задачи. Вы можете для себя не воспринимать концепцию, изложенную в этой теме. Только традиционные устоявшиеся взгляды в программировании не отменят ее значения. Я говорю не просто так, у меня на работе это метода (пока только частично) задействована профессионально и приносит очень хороший эффект и для меня и для предприятия. Правда, пока это не связанно с С++, на который я ныне ориентируюсь. Вообще-то я по жизни программирую не стандартно, однако это не мешает мне получать хорошие результаты «малой кровью». maytonЗдесь, позвольте с вами не согласиться. Для современных систем (слава богу) требования объёма кода в бинарнике уже перестали быть критичными. Прошли те времена, когда надо было в оверлейный буфер пихать всю возможную логику. Поэтому мне кажется большее внимание стоит обращать на то, как софт использует и освобождает heap memory и какие механизмы управления этим предоставляет. Опять же, «два юриста – три мнения», как говорил наш любимый Михаил Сергеевич. Пусть даже так, с этим никто не спорит. Однако, вопрос то в другом, писать программы так, чтобы получать от этого еще и удовольствие . Лично меня не прикалывает слепое поклонение SQL серверам, хоть платным, хоть бесплатным. До сих пор я применяю файл – серверную технологию доступа к данным, вместо клиент –серверной. И ничего, на моем предприятии все прекрасно работает. И перейду я на клиент – сервер только тогда, когда почувствую в этом внутреннюю потребность, а не внешнее «принуждение». maytonПо поводу ёрничания. Вы взяли на себя смелось написать статью в популярный портал разработчиков. Это - большая ответстсвенность. Вы - несёте "своё" учение. Многие неокрепшие умы после прочтения этого материала перестанут быть "другими" и начнут думать как вы. Вы, наверное, любите пафосный тон? :) . Интересно, а соседние 25 тысяч статей «в популярном портале разработчиков» не влияют на «неокрепшие умы»? Или на них действуют только мои статьи? Может быть, тогда в них рекламу разместить, чтобы покупали «сникерсы»? Глядишь, мне какой-то процент отчислений пойдет :) ? Не думаю, что это серьезно. С таким же успехом вы можете сказать, не пишите глупости в интернет, их могут читать дети! И пишут и читают и ничего, мир не рухнул. Вообще-то это надо очень постараться, что получить влияние на массы за счет пропаганды своих идей. Для многих это запредельная мечта. Думаю, интернет это вообще хорошее противоядие на информационную отраву. У людей возник такой стойкий иммунитет к информации, что их уже ничем не проймешь. А у кого еще не возник, по малоопытности, то возникнет. Так что собака зарыта в другом месте, а не в этом :) . maytonP.S. Поэтому не обижайтесь на пристальное внимание и критику. Да я не обижаюсь, поскольку конструктивной критики как таковой почти нет. Есть элементарное несогласие с моей точкой зрения. Мол, у меня есть своя точка зрения, значит ваша не правильная! А это мы проходили уже не раз, чтобы обижаться. Я ведь соглашаюсь с вашими точками зрения и не пытаюсь «отменить» их, ибо понимаю причины, почему вы так думаете. Но сам я думаю по другому (иногда :) ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 12:30:36 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
битыйБыл когда популярен Btrieve. Сейчас есть и его бесплатный open source вариант. Не пошло, понимаешь. Очень трудно потом поддерживать и изменять данные. Даже Pervasive сделал свой SQL. Ну и что из этого следует? Для любой популярной программы есть тысячи клонов. Одних только решений автоматизации предприятий предлагают сотни фирм. И сотни тысяч программистов – сотрудников фирм пишут для своих контор свои варианты учета на предприятии. И что? И ничего! Я тоже пишу свой вариант. Если бы помалкивал, то и вопросов бы не было. Но вот решил пообщаться с народом на эту тему, а «народу» это не нравиться. Ну не нравиться, могу и не говорить. Это что решение вопроса – загонять его в угол? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 12:46:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryGYGYИМХО - начните лучше с ОС. А то они уже за несколько Гб переваливают. Следуя ваше логике, в простенькую программу на 30-50 Кб «напоминателей дней рождения ваших друзей», где всего одна таблица и максимум, что нужно это сортировка и поиск в не более чем 1000 записей (вряд ли у вас больше друзей), нужно обязательно прилепить безплатный движок БД только потому, что он безплатный? ИХМО - для этого и DBF то не нужен Emery А у меня на эту сортировку и поиск в собственном dbf файле уже написано несколько килобайт кода. Так что мне этот код выбросить и обязательно прилепить какой-нибудь sqlite? А если мне этого не хочется делать, так что по этому поводу надо ёрничать? Статья в начале топика - это оправдание этого утверждения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 12:47:14 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivEmery пишет:> Вот эта и есть одна из причин моего «ручного управления» базами данных. Ты про неё не говорил до сих пор ни слова. Так я много о чем еще не успел сказать! Просто не было повода. MasterZivEmery пишет:Не, ну я тоже не понимаю, зачем изобретать свой велосипед. Это не «велосипед», а «тренировка». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 12:58:52 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivRushmore -- это технология применения индексов для выполнения запросов, а не технология организации индексного файла. Ну а разве любой SQL не основан на «технологии применения индексов для выполнения запросов»? Вы хотите сказать, что бывают другие варианты, типа тупым перебором? За что тут давать патент то? Да, выражения FOR прописаны в CDX файлах и индексы там сильно с выражениями FOR связаны (если они присутствуют). Конечно, это должно входить в технологию Rushmore. Однако почему вы думаете, патент Rushmore только на организацию выражений FOR и индексов на его основе в CDX файлах? Я предполагаю, что логично будет, что и «замещение физической последовательности файла логической» входит в этот патент. Ни вы не можете предъявить этот патент, ни я, так что дальнейший спор вряд ли что даст. MasterZiv> преимущество дает *«замещение физической последовательности файла > логической»*? Да мне тоже не понятно, о чём ты. Там описываются обычные методики организации индексного дерева. Моя таблица и рисунок вам ничего не говорят? А они не вписываются в «обычную методику организации индексного дерева». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 13:14:31 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Michael_NТо, что Вам интересно в этом ковыряться - это понятно. Не очень понятно, как Вы собираетесь все это применять. В смысле оммерческого использования. Для "«напоминателей дней рождения ваших друзей», где всего одна таблица и максимум, что нужно это сортировка и поиск в не более чем 1000 записей " - можно вообще обойтись текстовым файлом для хранения, потом все операции в памяти. Какие тут нужны индексы? Для задач, требующих большей производительности, как уже говорилось, есть куча продуктов, в т.ч. бесплатных... Можно, так все и делают и еще имеют наглость просить за это баксы. Только если все смотрят «Дом-2», не означает, что и я его должен смотреть. Мне подобную задачу предложили в качестве теста на программистские способности. Только я всех послал с ихними тестами. Но в памяти отложилось, и волей неволей стал думать, как бы я эту задачу оформил. Сначала хотел просто использовать обычный CListCtrl с инлайн редактированием и сериализацию данных. Ну и плюс свертку в трэй. Однако в своей 4-й статье, которую я здесь упоминал уже много раз, пришел к мнению, что лучше вместо сериализации делать поддержку собственных dbf файлов. Почему dbf? Да просто потому, что это старейший и простейший формат баз данных и на него есть масса внешних вьюеров, в том числе встроенных в Total Commander. Кроме того и CListCtrl и dbf файл работают исключительно со строками (не считая наших преобразований форматов). А CDX логично следуют из DBF, тем более что класс задач на их основе можно значительно расширить. Вы, конечно, можете в «напоминателе дней рождения ваших друзей» использовать хранение данных в текстовых файлах и не использовать индексы для сортировки и поиска. Однако, по-моему, это очень не профессиональный подход. За такую работу надо ставить «двойки». Впрочем, я вам не преподаватель, а вы мне не студент, делайте, как вам хочется. Просто мне такой подход не нравиться, и тут даже спорить глупо. Michael_NТак что +1. Зачем изобретать велосипед? Я уже говорил, что это не «велосипед», а «тренировка». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 13:36:58 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
quazareмоя напоминалка др весит 4 кб., без базы. Да хоть 4 байта, интересно не это. Лучше расскажите, как у вас организована работа с базой данных? И какой функционал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 13:43:59 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emeryquazareмоя напоминалка др весит 4 кб., без базы. Да хоть 4 байта, интересно не это. Лучше расскажите, как у вас организована работа с базой данных? И какой функционал? все ооочень просто! юзер через запятую вводит информацию о днях рождениях - дата, фио, поздравление, если нет поздравления - берется стандартное. ну и при открытии станицы - пхп скрипт генерирует соответствующую страницу... сделано за 30 мин :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 13:49:34 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
GYGYИХМО - для этого и DBF то не нужен Годиться любой стандартный формат базы данных, у которого достаточно внешних вьюеров, в т.ч. встроенных для Total Commander. Считайте это техзаданием. Текстовые файлы и сериализацию не предлагать, как непрофессиональное решение, на мой взгляд. Объем кода поддержки БД должен быть умеренным. GYGYEmery А у меня на эту сортировку и поиск в собственном dbf файле уже написано несколько килобайт кода. Так что мне этот код выбросить и обязательно прилепить какой-нибудь sqlite? А если мне этого не хочется делать, так что по этому поводу надо ёрничать? Статья в начале топика - это оправдание этого утверждения? Скорее это «оправдание» для утверждения «Несложная специфическая БД для 200 млн записей» .Вот хорошая задача, для темы этой статьи! Я уже писал, что возможно я еще займусь ею, только мне не известны технические детали и нет тестовой БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 13:56:11 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryТекстовые файлы и сериализацию не предлагать, как непрофессиональное решение, на мой взгляд. На любую задачу есть свои решения. Почему не нравятся текстовые файлы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 13:58:17 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
quazareвсе ооочень просто! юзер через запятую вводит информацию о днях рождениях - дата, фио, поздравление, если нет поздравления - берется стандартное. ну и при открытии станицы - пхп скрипт генерирует соответствующую страницу... сделано за 30 мин :) Я так и думал, что такой вариант мне не понравиться. Поэтому остаюсь при своем мнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:02:58 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
quazareEmeryТекстовые файлы и сериализацию не предлагать, как непрофессиональное решение, на мой взгляд. На любую задачу есть свои решения. Почему не нравятся текстовые файлы? Не масштабируемое решение, да и не солидно как-то предлагать в космический век каменный топор (хотя в свое время это была нужная вещь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:10:13 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryquazareEmeryТекстовые файлы и сериализацию не предлагать, как непрофессиональное решение, на мой взгляд. На любую задачу есть свои решения. Почему не нравятся текстовые файлы? Не масштабируемое решение, да и не солидно как-то предлагать в космический век каменный топор (хотя в свое время это была нужная вещь).Имхо, текстовые файлы надолго переживут ваши DBF-ы и CDX-ы. Например, средства импорта данных из текстовых файлов есть практически у всех СУБД, чего нельзя сказать про импорт DBF-файлов. Имхо, опоздали вы со своими статьями лет так на 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:20:17 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryGYGYИХМО - для этого и DBF то не нужен Годиться любой стандартный формат базы данных, у которого достаточно внешних вьюеров, в т.ч. встроенных для Total Commander. Считайте это техзаданием. Текстовые файлы и сериализацию не предлагать, как непрофессиональное решение, на мой взгляд. Объем кода поддержки БД должен быть умеренным. У текстовых форматов напрмер вообще нет проблем с отсутствием внешних вьюверов. Emery Скорее это «оправдание» для утверждения «Несложная специфическая БД для 200 млн записей» .Вот хорошая задача, для темы этой статьи! Я уже писал, что возможно я еще займусь ею, только мне не известны технические детали и нет тестовой БД. Там во втором посте даже предложен вариант - BerkeleyDB Emery Не масштабируемое решение, да и не солидно как-то предлагать в космический век каменный топор А DBF/CDX - это свежак? И с масштабируемостью тоже вообще никаких проблем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:35:42 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
что старее еще вопрос txt или dbf92 ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:38:26 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryДо сих пор я применяю файл – серверную технологию доступа к данным, вместо клиент –серверной. И ничего, на моем предприятии все прекрасно работает. И перейду я на клиент – сервер только тогда, когда почувствую в этом внутреннюю потребность, а не внешнее «принуждение». Emery, есть ли примеры удачных внедрений вашей технологии? Где она работает в данный момент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:51:36 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
вот могу доказать, что текстовый файл совершеннее dbf. делаем так - допустим есть многопользовательское решение. таблицу dbf сразу заклинит для других если ей будет пользоваться 1 пользователь. а если мы разместим каждую запись в отдельный текстовый файл, то мы получим решение на уровне строки, аля мс скл серв )))) даже постгрес таким не похвастается)) ------------- Sapienti sat! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 14:53:41 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
miksoftИмхо, текстовые файлы надолго переживут ваши DBF-ы и CDX-ы. Например, средства импорта данных из текстовых файлов есть практически у всех СУБД, чего нельзя сказать про импорт DBF-файлов. От того что вы не любите DBF, совершенно не значит, что TXT его переживет. Если формат текстового файла можно считать первым форматом, то DBF это второй формат, а посему он или его аналог (для 8-ми байтных указателей) будет также «вечен», как и формат TXT. Насчет импорта. Из DBF файла легко можно сделать текстовой парой строчек кода. Далее импортируйте как свой любимый текст в любую БД. Однако все это не важно. Лично я ориентируюсь на Visual FoxPro 6-9, чтобы именно он мог работать с моими данными как со своими родными. А это вполне современный продукт, даже если вы его тоже не любите. А я с FoxPro работал достаточно долго, чтобы оценить его достоинства и недостатки. miksoftИмхо, опоздали вы со своими статьями лет так на 15. А организовывать пусть даже несложные базы данных в виде текстовых файлов было актуально лет 25 назад, но не сейчас. А 15 лет назад не было ни 95-го Windows, ни VFP, ни даже MS VS C++ 6 & MFC, ни MMF.А это все продукты и технологии, с которыми я имею дело. Так что, вы слегка преувеличиваете :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 15:07:19 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery[quot miksoft] А организовывать пусть даже несложные базы данных в виде текстовых файлов было актуально лет 25 назад, но не сейчас. XML, JSON и т.д. - в топку? Emery А 15 лет назад не было ни 95-го Windows, ни VFP, ни даже MS VS C++ 6 & MFC, ни MMF.А это все продукты и технологии, с которыми я имею дело. Так что, вы слегка преувеличиваете :) . VFP уже была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 15:24:35 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
GYGYУ текстовых форматов напрмер вообще нет проблем с отсутствием внешних вьюверов. Зато есть проблемы с масштабируемостью с точки зрения использования их как БД. GYGYТам во втором посте даже предложен вариант - BerkeleyDB Да, но предложен и другой вариант, ограничиться собственным кодом. Вам нравится первый вариант – применяйте его, мне второй, я буду использовать его. Разве плохо, когда есть два варианта вместо одного? Ну откуда у вас такая потребность все нивелировать? Это риторический вопрос для всех. GYGYEmeryНе масштабируемое решение, да и не солидно как-то предлагать в космический век каменный топор А DBF/CDX - это свежак? И с масштабируемостью тоже вообще никаких проблем? С точки зрения VFP-9 вполне. Продукт современный, ядро у него очень шустрое (про интерфейс промолчу). В DBF-ах есть ссылка на DBC файл (контейнер базы данных VFP), чего не было ранее. Единственный недостаток 4-х байтная адресация данных. Который, однако, легко снимается, переходом к собственному расширению типа DBFX (когда будет официальный аналог, можно будет перейти на него), поддерживающим 8-ми байтные указатели. Имея собственный код, это можно сделать с пол-пинка (с привлечением MMF). А насчет CDX, то они организованы очень и очень неплохо. Патент за Rushmore им дали не зря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 15:33:07 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Ну а разве любой SQL не основан на «технологии применения индексов для выполнения запросов»? Вы хотите сказать, что бывают другие варианты, типа тупым перебором? 1. Не поверишь, но в определенных случаях full scan быстрее индексного доступа 2. акромя всяких доступов, есть еще вопросы соединения таблиц в запросе, сортировки результата и проч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 15:47:22 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmerymiksoftИмхо, опоздали вы со своими статьями лет так на 15.А организовывать пусть даже несложные базы данных в виде текстовых файлов было актуально лет 25 назад, но не сейчас. А 15 лет назад не было ни 95-го Windows, ни VFP, ни даже MS VS C++ 6 & MFC, ни MMF.А это все продукты и технологии, с которыми я имею дело. Так что, вы слегка преувеличиваете :) .Я говорю не о цифрах в версиях продуктов, а об общем идеологическом устаревании. Равно как и устарел ваш тезис "Зачем платить за чужие библиотеки, если без них вполне можно обойтись в своих программах?" Сейчас стоимость (во всех смыслах, включая стоимость дальнейшего сопровождения) прикручивания к с своей программе, например, sqlite значительно ниже стоимости чтения вашего материала и написания качественного когда на его основе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 15:48:46 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonEmery, есть ли примеры удачных внедрений вашей технологии? Где она работает в данный момент? У меня внедрен учет зарплаты и учет ресурсов (материалы, ОС, банк и касса, забалансовый учет, частично налоговый учет) на трех предприятиях в моем небольшом городе (в Украине). Лучше всего все работает на моем предприятии, которое я могу контролировать. Решение на базе 1С77 (только справочники, обработки, перечисления и константы) + ядро VFP 8 (для 9-й версии надо переписывать часть кода, а меня «наламывает») для «зарплаты». Все под терминальным режимом. Есть собственный универсальный генератор отчетов уровня пользователя. Можно было бы оптимизировать и расширяться в этой области и дальше, но решил перейти на С++. Хочу сделать простой аналог ядра 1С77 на MFC. Поддержка БД сторонними библиотеками опционально (предусматривается вариант работы вообще без внешних БД). Весь процесс своей нынешней работы отражаю в своих статьях здесь на sql.ru и на codeproject.com. Пока не надоест :) . В принципе можно было опубликовать и свой код на 1C77 + VFP. Но программирование там настолько нестандартно, что без обстоятельного пояснения делать это достаточно безсмыслено. Да и переписать этот код, с целью оптимизации и дополнительного масштабирования не мешало бы. Только заниматься этим мне сейчас не хочется, поскольку работаю с С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 16:05:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
GYGYXML, JSON и т.д. - в топку? Я под TXT понимаю обычные *.txt файлы, а не *.html, *.xml и т.п. файлы. С точки зрения MIME64 любой бинарный файл является текстовым. Так что будем понимать под TXT то что было еще на заре компьютерной эпохи. GYGYEmery А 15 лет назад не было ни 95-го Windows, ни VFP, ни даже MS VS C++ 6 & MFC, ни MMF.А это все продукты и технологии, с которыми я имею дело. Так что, вы слегка преувеличиваете :) . VFP уже была. VFP в 1994 году не было. Был FP только, то бишь, FoxPro v. 2.6a под MS-DOS. Визуальный FoxPro появился, начиная с 5-й версии под Win32, а его то как раз еще не было в это время. Хотя, если честно, Windows-95 была опубликована 1 августа 1994 года, так что строго говоря, Win32 уже как бы появилась (если не брать в расчет 32-х разрядные «расширители» под Windows 3.1 / 3.11). Только вряд ли это что меняет в данном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 16:24:39 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Хочу сделать простой аналог ядра 1С77 на MFC. Написать замену SQL, написать замену VFP, написать аналог 1С... -> я про ОС уже спрашивал - нет? Непонятно только зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 16:27:20 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
чет не пойму. а что мало альтернатив у скл? современные нереляционные бд типа CouchDB выбирают по map/reduce без всякого скл _______________________________________ 2pro4U ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 16:33:21 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tru551. Не поверишь, но в определенных случаях full scan быстрее индексного доступа Ну почему не поверю, если сам использую довольно часто. Кстати, речь о циклах у меня идет четвертым пунктом этой статьи. tru552. акромя всяких доступов, есть еще вопросы соединения таблиц в запросе, сортировки результата и проч. Это я могу сам сделать вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 17:30:28 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
miksoftЯ говорю не о цифрах в версиях продуктов, а об общем идеологическом устаревании. Равно как и устарел ваш тезис "Зачем платить за чужие библиотеки, если без них вполне можно обойтись в своих программах?" Сейчас стоимость (во всех смыслах, включая стоимость дальнейшего сопровождения) прикручивания к с своей программе, например, sqlite значительно ниже стоимости чтения вашего материала и написания качественного когда на его основе. Правильнее говорить о «моральном» устаревании. Ну а, в общем, никто вас не заставляет читать мои опусы. Можете написать свои, с пропагандой любых идей и любой критикой, если дадите ссылку почитаю. Я могу быть с вами не согласен, но вряд ли буду агитировать вас в свою «веру». Зачем мне это? Думаю, надо быть терпимее к чужим взглядам, даже если вы с ними не согласны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 17:38:23 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emerytru551. Не поверишь, но в определенных случаях full scan быстрее индексного доступа Ну почему не поверю, если сам использую довольно часто. Кстати, речь о циклах у меня идет четвертым пунктом этой статьи. Зачем тогда фраза про "технологию применения индексов"? И кстати, причем здесь циклы? Emery tru552. акромя всяких доступов, есть еще вопросы соединения таблиц в запросе, сортировки результата и проч. Это я могу сам сделать вручную. [/quot] А выбрать из нескольких способов наилучший - тоже? Перебором или еще как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 17:38:48 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tru55А выбрать из нескольких способов наилучший - тоже? Перебором или еще как? Статистики и прочая - все это хрень, их придумали проклятые буржуины что бы дороже продавать свои многомегабайтные библиотеки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 17:44:34 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
GYGYEmery Хочу сделать простой аналог ядра 1С77 на MFC. Написать замену SQL, написать замену VFP, написать аналог 1С... -> я про ОС уже спрашивал - нет? Непонятно только зачем? Только потому, что мне это интересно. Надоест, не буду писать. Неужели для вас это так важно, что я пишу и зачем? В Интернете много чего написано, одно интересно одним, другое другим, третье вообще никому не интересно, но ведь кому-то было не влом писать. И что на все, что не вашем вкусе, надо тратить свои эмоции? По-моему, достаточно одного безразличия, если что-то действительно глупо. Хотите пропагандировать собственные идеи – пишите, почитаем. Как там, у классика, «писатель пописывает, читатель почитывает» :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 17:45:39 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tru55Emerytru551. Не поверишь, но в определенных случаях full scan быстрее индексного доступа Ну почему не поверю, если сам использую довольно часто. Кстати, речь о циклах у меня идет четвертым пунктом этой статьи. Зачем тогда фраза про "технологию применения индексов"? И кстати, причем здесь циклы? А чем «full scan» отличается от перебора в цикле? Индексы нужны для сортировки, поиска и выборки данных по условию. tru55Emerytru552. акромя всяких доступов, есть еще вопросы соединения таблиц в запросе, сортировки результата и проч. Это я могу сам сделать вручную. А выбрать из нескольких способов наилучший - тоже? Перебором или еще как?[/quot] У меня достаточный опыт разработки и внедрения учетных задач на реальных предприятиях, чтобы уже других обучать этому ремеслу. Поверьте, с оптимизацией кода и данных у меня проблем нет. Есть проблема только переписать хороший работающий код в еще лучший. Просто нет достаточного стимула для этого. Работает и ладно. Есть даже неписанный закон программистов, «не трогай, без крайней необходимости, нормально работающую программу» :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 17:56:50 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery А чем «full scan» отличается от перебора в цикле? Так и индексный доступ организуется через цикл (если только нужно выбрать не одну запись). Это очевидно, зачем об этом говорить? Emery Индексы нужны для сортировки, поиска и выборки данных по условию. 1. сортировка результата может осуществляться и при отсутствии индекса 2. для поиска и выборки и fullscan используется Emery У меня достаточный опыт разработки и внедрения учетных задач на реальных предприятиях, чтобы уже других обучать этому ремеслу. Поверьте, с оптимизацией кода и данных у меня проблем нет. Хм-м-м... У меня тоже опыт немалый, но при необходимости соединить в SQL-запросе десяток таблиц я лично не берусь с ходу сказать, лучше начинать соединять первую со второй, или сначала пятую с десятой. Да и способы соединения могут быть разные (nested loops, hash join и проч). Собственно, поиском наилучшего решения и занимаются оптимизаторы SQL баз. Также как и использовать / неиспользовать индексы (и какие), особенно если их несколько ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 18:07:06 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Если вам нужен движок БД для локального доступа - типа напоминалки ДР друзей - посмотрите MS JET Blue . Разумеется, если Вы не хотите изобретать самокат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 19:40:55 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryGYGYXML, JSON и т.д. - в топку? Я под TXT понимаю обычные *.txt файлы, а не *.html, *.xml и т.п. файлы. С точки зрения MIME64 любой бинарный файл является текстовым. Так что будем понимать под TXT то что было еще на заре компьютерной эпохи. У sgml нет привязки к средствам отображения, чего про dbf не скажешь. т.е. как бы это ни было, но это всего лишь текст. Emery VFP в 1994 году не было. Был FP только, то бишь, FoxPro v. 2.6a под MS-DOS. Визуальный FoxPro появился, начиная с 5-й версии под Win32, а его то как раз еще не было в это время. Хотя, если честно, Windows-95 была опубликована 1 августа 1994 года, так что строго говоря, Win32 уже как бы появилась (если не брать в расчет 32-х разрядные «расширители» под Windows 3.1 / 3.11). Только вряд ли это что меняет в данном случае. первый VFP был 3.0 под 3.11 - насчет года не помню 94/95 - но где то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 19:41:42 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tru55Так и индексный доступ организуется через цикл (если только нужно выбрать не одну запись). Это очевидно, зачем об этом говорить? Затем, что есть еще и второй пункт статьи – «проводки» (организация повторных промежуточных данных в нужном порядке), которые в паре с циклом могут заменить некоторые типы sql запросов. tru551. сортировка результата может осуществляться и при отсутствии индекса 2. для поиска и выборки и fullscan используется Кому мы тут ликбез устраиваем? 1. Попробуйте без индекса осуществить гигабайтную сортировку данных. Вас прикалывает ждать? Меня нет. 2. Тот же «full scan» или полный перебор в цикле эффективен тогда, когда задействованы все данные, например для формирования сложного отчета по всей таблице (однако если вычисления очень громоздкие и типичные, то следует подумать о промежуточных вычислениях («проводках»)). Если данных очень много, а нужна только их существенно малая часть, то без индексов программа будет работать «бесконечно» долго. Все это очевидные вещи, к чему разговор то? tru55У меня тоже опыт немалый, но при необходимости соединить в SQL-запросе десяток таблиц я лично не берусь с ходу сказать, лучше начинать соединять первую со второй, или сначала пятую с десятой. Да и способы соединения могут быть разные (nested loops, hash join и проч). Собственно, поиском наилучшего решения и занимаются оптимизаторы SQL баз. Также как и использовать / неиспользовать индексы (и какие), особенно если их несколько Мне не нравится такой подход. Свою базу данных нужно «чувствовать», как «чувствовать» эффективность разных алгоритмов еще до их использования. Очень часто можно существенно упростить используемые sql-запросы за счет реорганизации своей базы. Оптимизацию нельзя доверять программным «оптимизатором». Это занятие не для профессионала. Для новичка да, пусть пользуется мастерами, генераторами кода и оптимизаторы. С «возрастом» эта «болезнь» пройдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 20:12:09 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Gerros Emery Если вам нужен движок БД для локального доступа - типа напоминалки ДР друзей - посмотрите MS JET Blue . Разумеется, если Вы не хотите изобретать самокат. Я пишу цикл статей по практическому программированию. В четвертой статье я показал преимущества собственных dbf файлов перед сериализацией. В пятой будет идти речь об организации собственных индексов и выбор нужных алгоритмов. В шестой – работа с мультитрэдовыми рантайм библиотеками VFP-9. Затем не исключена возможность демонстрации работы с какими-нибудь бесплатными БД. И т.д. Так что я знаю, что я делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 20:19:00 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Только потому, что мне это интересно. Надоест, не буду писать. Неужели для вас это так важно, что я пишу и зачем? В Интернете много чего написано, одно интересно одним, другое другим, третье вообще никому не интересно, но ведь кому-то было не влом писать. И что на все, что не вашем вкусе, надо тратить свои эмоции? По-моему, достаточно одного безразличия, если что-то действительно глупо. Хотите пропагандировать собственные идеи – пишите, почитаем. Как там, у классика, «писатель пописывает, читатель почитывает» :) . Я и не тратил эмоций. Хотел узнать зачем человек хочет нестандартно изобрести велосипед. Узнал, что человеку просто интересно писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 20:22:11 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
а че про xml никто не вспоминает? странная какая-то дискуссия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 23:18:46 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Полудённыйа че про xml никто не вспоминает? Слегка было Полудённыйстранная какая-то дискуссиясогласен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2009, 23:45:27 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Позвольте другим быть другими и это вам зачтется в будущей жизни! Так никто ж не запрещает, нравится писать - пишите. Но Вы приходите со своими идеями на профильный форум, упорно настаиваете на прочтении Ваших статей, на которые потом ссылаетесь по номерам (этот вопрос я рассмотрел в седьмом абзаце своей четвертой статьи), но это не важно, а потом дуетесь на критику. Зачем приходил однако? (С) Кстати, раз озоглавили топик "Альтернатива SQL запросам", то давайте об SQL запросах и говорить. Например как в Вашей системе будет альтернатива запросу select * from table_1 where id not in (select id from table_2); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 00:49:36 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Виноват, фразу "Например как в Вашей системе будет альтернатива запросу" следует читать "Например как в Вашей системе будет выглядеть альтернатива запросу" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 00:52:34 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > типа тупым перебором? За что тут давать патент то? Да, выражения FOR Я не знаю патент, поэтому не могу сказать. > прописаны в CDX файлах и индексы там сильно с выражениями FOR связаны > (если они присутствуют). Конечно, это должно входить в технологию > Rushmore. Однако почему вы думаете, патент Rushmore только на > организацию выражений FOR и индексов на его основе в CDX файлах? Я > последовательности файла логической» входит в этот патент. Ни вы не Вы патент когда-нибудь видели ? Патент -- это одно изобретение, решение одной конкретной задачи. Ладно, я что-то уже совсем ничего не понимаю. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 02:17:35 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > переживет. Если формат текстового файла можно считать первым форматом, > то DBF это второй формат, а посему он или его аналог (для 8-ми байтных > указателей) будет также «вечен», как и формат TXT. DBF -- это и есть TXT, текстовый файл, с записями (строками) постоянной длины и с бинарным заголовком. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 02:20:19 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
GYGY пишет: > А 15 лет назад не было ни 95-го Windows, ни VFP, ни даже MS VS C++ 6 & > MFC, ни MMF. > > VFP уже была. +1. в 95 мы уже переписывали проги на FP под винду с доса. Кстати, MFC тоже уже был достаточно давно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 02:22:07 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > VFP в 1994 году не было. Был FP только, то бишь, FoxPro v. 2.6a под > MS-DOS. Визуальный FoxPro появился, начиная с 5-й версии под Win32, а > его то как раз еще не было в это время. С 3-ей, а не с пятой. Хотя, если честно, Windows-95 > была опубликована 1 августа 1994 года, так что строго говоря, Win32 уже > как бы появилась (если не брать в расчет 32-х разрядные «расширители» Ты знаешь, платформа Win32 существовала ДО Windows-95. Кстати, если не ошибаюсь, первый VFP как раз на ней и работала. Т.е. ей было не обязательно работать под Windows-95 или NT. До VFP была 2.6 под Windows, мало чем отличавшаяся по сути от VFP, а если и отличавшаяся, то в лучшую сторону. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 02:26:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Gerros Emery Если вам нужен движок БД для локального доступа - типа напоминалки ДР друзей - посмотрите MS JET Blue . Разумеется, если Вы не хотите изобретать самокат. а еще был парадокс, а к нему был парадокс енжин на си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 03:31:12 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Я пишу цикл статей по практическому программированию. В четвертой статье я показал преимущества собственных dbf файлов перед сериализацией. В пятой будет идти речь об организации собственных индексов и выбор нужных алгоритмов. В шестой – работа с мультитрэдовыми рантайм библиотеками VFP-9. Затем не исключена возможность демонстрации работы с какими-нибудь бесплатными БД. И т.д. Так что я знаю, что я делаю. Вчера подрубил dbf файл к php движку. особых приимуществ я не заметил. я вообще считаю, что самое правильное - это исходить из соображений трудозатрат. чем меньше времени я потрачу на изготовление программы, тем лучше. и совершенно неважно, будет ли в качестве бд dbf, sqlite, txt, json, xml, mysql, mssql, postgresql - всеми этими технологиями я владею и буду применять их в зависимости от ситуации... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 09:09:13 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
c127Так никто ж не запрещает, нравится писать - пишите. Но Вы приходите со своими идеями на профильный форум, упорно настаиваете на прочтении Ваших статей, на которые потом ссылаетесь по номерам (этот вопрос я рассмотрел в седьмом абзаце своей четвертой статьи), но это не важно, а потом дуетесь на критику. Зачем приходил однако? (С) Ну, откровенно говоря, я ожидал большей критики и неприятия. Так что это еще цветочки :) . Зачем приходил? Да по простой причине, мне не нравиться культ клиент – серверных технологий, не вообще, а в силу как бы истины в последней инстанции. Единственное что я хочу показать, что на SQL свет клином не сошелся и доминирование этой технологии больше вызвано коммерческими причинами чем, технической необходимостью. Просто у каждой технологии есть свой ниша. Промышленные и бесплатные SQL сервера хороши в своей нише, а альтернативные технологии (файл – сервер, эквиваленты SQL запросов и др.) в своей. Я признаю ваше право на существование вашей технологии, а вы мое и все, нет никаких проблем, а есть конструктивное сотрудничество. Проблемы начинаются тогда, когда есть желание одной стороны обратить в свою «веру» другую сторону. Те же бесконечные споры сторонников Win32 и Linux или COM серверов и CORBA и т.п. В принципе, есть модератор, который управляет форумом. Пусть он и решает, что правильно, а что нет. c127Кстати, раз озоглавили топик "Альтернатива SQL запросам", то давайте об SQL запросах и говорить. Я просто отвечаю на те вопросы и замечания, которые задаются. c127Например как в Вашей системе будет альтернатива запросу select * from table_1 where id not in (select id from table_2); Количество кода будет немного побольше, зато не будет операторов Select SQL. Вообще-то все запросы у меня должны быть осмыслены, насколько часто они используются, можно ли избавится от них, реорганизовав свою базу данных, т.е. база данных должна быть спроектирована под минимальное количество несложных запросов. Я приведу здесь эквивалентный код на VFP, все используемые функции имеют или будут иметь у меня свои аналоги и на С++. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 09:18:18 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Количество кода будет немного побольше, зато не будет операторов Select SQL. Вообще-то все запросы у меня должны быть осмыслены, насколько часто они используются, можно ли избавится от них, реорганизовав свою базу данных, т.е. база данных должна быть спроектирована под минимальное количество несложных запросов. В SQL-технологии (и в частности в sql-engines) заложено очень много возможностей. Версионность, изоляция транзакций. Вы в вашей постановке отказываетесь от этих возможностей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 09:24:23 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivВы патент когда-нибудь видели ? Патент -- это одно изобретение, решение одной конкретной задачи. Буржуи уже давно выдают патенты на алгоритмы и технологии. MasterZivЛадно, я что-то уже совсем ничего не понимаю. Как бы там ни было, я пока не собираюсь заниматься физической дефрагментацией файлов, ради ускорения процесса построения и выборки индексов. Просто примем к сведению, что для CDX файлов такая фишка существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 09:32:02 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emeryc127Например как в Вашей системе будет альтернатива запросу select * from table_1 where id not in (select id from table_2); Количество кода будет немного побольше, зато не будет операторов Select SQL. Вообще-то все запросы у меня должны быть осмыслены, насколько часто они используются, можно ли избавится от них, реорганизовав свою базу данных, т.е. база данных должна быть спроектирована под минимальное количество несложных запросов. Я приведу здесь эквивалентный код на VFP, все используемые функции имеют или будут иметь у меня свои аналоги и на С++. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. А, во-вторых, где вся та работа с DBF и CDX (а не использование чужих библиотек), о которой вами написано столько текста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 09:37:25 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivDBF -- это и есть TXT, текстовый файл, с записями (строками) постоянной длины и с бинарным заголовком. Я это и имел в виду, когда писал, что DBF переводится в TXT парой строчкой кода. Однако, убрав заголовок, текст не получишь. Во-первых, последний символ DBF – бинарный, во-вторых, нет переводов строки между записями, поэтому импорт такого «текста» просто так не осуществишь и, в-третьих, иногда присутствуют бинарные нули в полях, которые заполнены значениями не полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 09:42:50 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivС 3-ей, а не с пятой. Может быть, значит, я их пропустил, когда сидел на FP 2.6 /2.6а MasterZivТы знаешь, платформа Win32 существовала ДО Windows-95. Кстати, если не ошибаюсь, первый VFP как раз на ней и работала. Т.е. ей было не обязательно работать под Windows-95 или NT. Не хочется мне на эту тему спорить, пусть будет так. MasterZivДо VFP была 2.6 под Windows, мало чем отличавшаяся по сути от VFP, а если и отличавшаяся, то в лучшую сторону. FP 2.6 /2.6а я неплохо знаю, она если и работала под Windows-95, так только в DOS-сессии. Это 16-ти разрядное приложение, а не 32-разрядное. Насчет «лучшей стороны» очень спорный вопрос. Ядро у FP / VFP отличное, чего не скажешь про интерфейс. Даже нынешний интерфейс VFP-9 мне очень не нравиться, но DOS-овский интерфейс это вообще полная «дупа». Он работал через BIOS в рамках объема 640 КБ, даже если на компьютере была расширенная память. Причем, в эти 640 входил объем самого интерпретатора FP (компилятора в экзешник у меня не было), так что на интерфейс оставалось в лучшем случае 350 – 380 КБ. А это позволяло открыть одновременно не более 6 окон в программе. Далее, банальная нехватка памяти. Чтобы выкрутится, приходилось писать практически безинтерфейсные программы, что сильно портило впечатление о FP. Ситуация мало изменилась сейчас, с интерфейсом VFP лучше не работать, вон «Парус» (или, другой пример, «Тендер-Контракт») пошел по этому пути и проиграл. Интерфейс у него работал жутко медленно, поэтому сейчас он стал делить общие программы на автономные подпрограммы, что тоже не очень хорошо. Зато работа напрямую с мультитрэдовыми рантайм библиотеками из интерфейса MFC меня очень привлекает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 10:06:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryбитыйБыл когда популярен Btrieve. Сейчас есть и его бесплатный open source вариант. Не пошло, понимаешь. Очень трудно потом поддерживать и изменять данные. Даже Pervasive сделал свой SQL. Ну и что из этого следует? Для любой популярной программы есть тысячи клонов. Одних только решений автоматизации предприятий предлагают сотни фирм. И сотни тысяч программистов – сотрудников фирм пишут для своих контор свои варианты учета на предприятии. И что? И ничего! Я тоже пишу свой вариант. Если бы помалкивал, то и вопросов бы не было. Но вот решил пообщаться с народом на эту тему, а «народу» это не нравиться. Ну не нравиться, могу и не говорить. Это что решение вопроса – загонять его в угол? Да нет, не в угол. Я привёл Вам решение, которое имело коммерческий успех одно время. Кроме того,прелесть SQL Вы прочувствуете, как только количество пользователей превысит сотню другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 10:06:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tchingizа еще был парадокс, а к нему был парадокс енжин на си. Хорошо, буду иметь в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 10:08:28 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
quazareВчера подрубил dbf файл к php движку. особых приимуществ я не заметил. Сам по себе dbf никаких преимуществ не имеет, разве что прост, хорошо известен и имеет кучу внешних вьюеров. Плюс удобен для обмена данными в С++. quazareя вообще считаю, что самое правильное - это исходить из соображений трудозатрат. чем меньше времени я потрачу на изготовление программы, тем лучше. и совершенно неважно, будет ли в качестве бд dbf, sqlite, txt, json, xml, mysql, mssql, postgresql - всеми этими технологиями я владею и буду применять их в зависимости от ситуации... Я тоже не сторонник садо-мазо. И ориентируюсь, прежде всего на то, что хорошо знаю (до тех пор пока это устраивает меня по производительности). Вообще-то, я планирую использовать интерфейс MFC и ядро VFP для своих бизнес приложений (учетных задач). Решил по этому поводу написать несколько статей. Поскольку все демонстрировалось с нуля, то для начала хотел хранить данные с помощью сериализации (для небольших объемов данных). Однако увидел, фактически сериализация ни чуть не сложнее чем запись в файл БД, например, DBF. Зато вместо последовательного доступа получил произвольный, что мне очень понравилось. Далее, совершенно логично возник вопрос, а почему бы не попробовать сделать и индексный CDX файл? Тем более что до сих пор не приходилось ни разу применять свои знания по сортировке, поиску, деревьям и т.п. в случае непосредственного программирования. А то этим вещам учат программистов, а использовать эти знания негде. Оказалось, что это весьма увлекательное занятие, тем более что сразу обнаружился отрыв теории от практики. Попутно возникла идея попробовать поработать со своей базой данных без SQL запросов, опять же в целях нового опыта, тренировки ума и лучшего понимания этой фундаментальной концепции в серверах БД. Как только я почувствую ограничения такого подхода, сразу перейду на библиотеки VFP или какого-нибудь другого SQL сервера, тем более, что в демонстрационных целях, я планирую делать это параллельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 10:29:51 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonВ SQL-технологии (и в частности в sql-engines) заложено очень много возможностей. Версионность, изоляция транзакций. Вы в вашей постановке отказываетесь от этих возможностей? Да никто не отказывается, просто есть желание попробовать прочувствовать эти вещи, путем их самостоятельного программирования в учебно – познавательно – тренировательных целях. Я уже говорил, чтобы хорошо программировать, программу свою нужно «чувствовать». А чтобы прочувствовать все SQL навороты, нужно попытаться попрограммировать их. Я же веду речь, в общем-то, о демонстрационно-показательном программировании с уклоном на практический результат. Если вам препод по программированию дает задание на первом курсе написать программу вычисления sin(x) или тупейший учет ваших файлов мультимедиа на вашем компьютере для ваших собственных целей, вы же не станете говорить ему, что такие программы уже есть в любом программируемом калькуляторе, или подобный учет и даже круче уже реализован в программе A, B и даже С. Преп, скажет, ну и что мне нужен не результат, как таковой, а ваше умение получить его самостоятельно, проще говоря, уметь умножать не только на калькуляторе, но и вручную. А то, что вы по жизни можете ходить с карманным калькулятором в магазин и перепроверять на нем расчет продавца, его мало волнует. Скажите, а корень квадратный вы сможете вычислить вручную? А ведь в школе этому, по крайней мере, в мое время учили. За всю жизнь я его если пару раз вычислил вне школы, то и хорошо, но ведь вопрос не стоит о том, чтобы не обучать этому в школе. Если хотите, можете воспринимать эту статью, как для школьников, которых учат вручную извлекать квадратный корень. Будут они это делать реально или нет, не важно, важно, что будут иметь об этом представление и уже не поведутся на покупку супер-пуперной программы за килобакс по вычислению квадратного корня для любого целого числа аж до ста!Ьшыешл1537я ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 10:51:50 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery, я считаю, что ваши подходы к программированию (в частности из-за использовании dbf) устарели. сейчас более продвинутый формат есть, нежели dbf - > sqlite. тот же файл с возможность запросов sql + несколько таблиц может быть в файле + ссылочность по ключам dbf не поддерживается современными технологиями в частности такими как AIR. а sqlite наооборот преобладает и развивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:08:42 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
битыйЯ привёл Вам решение, которое имело коммерческий успех одно время. Кроме того,прелесть SQL Вы прочувствуете, как только количество пользователей превысит сотню другую. Я как раз к этому и стремлюсь (спроектировать систему учета на пару сотен пользователей). Жаль только, что на нашей фирме пользователей значительно меньше и трудно прочувствовать эту «прелесть» :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:08:56 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Я тоже не сторонник садо-мазо. И ориентируюсь, прежде всего на то, что хорошо знаю (до тех пор пока это устраивает меня по производительности). Вообще-то, я планирую использовать интерфейс MFC и ядро VFP для своих бизнес приложений (учетных задач). Решил по этому поводу написать несколько статей. Т.е. в любом случае вы хотите изготовливать программы на продажу (за деньги), а не для себя, например в учебных или академических целях. 1. Больше 20 активных пользователей на базу ваша технология вряд-ли потянет. 2. Отлаживая движок вы долго с ним провозитесь. 3. Вряд-ли найдете последователей. Когда вам надоест с этим играться, внедрёные бизнес приложения придётся заменять на более майнстримовские. В результате вы имеете конкуретное отставание, по сравнению с другими внедренцами. Я бы, на свою фирму вас не пустил, с таким подходом к делу. Emery Зато вместо последовательного доступа получил произвольный, что мне очень понравилось. Далее, совершенно логично возник вопрос, а почему бы не попробовать сделать ... Оказалось, что это весьма увлекательное занятие, тем более что сразу обнаружился отрыв теории от практики. Попутно возникла идея попробовать поработать со своей базой данных без SQL запросов, опять же в целях нового опыта, тренировки ума .... понравилось, увлекательное занятие, попробовать - Это всё очень замечательное и приятное времяпрепровождение. Но совершенно не коструктивно, если вы собираетесь делать законченные бизнес приложения. Если же, хотите продвигать всё же движок, то нужно выяснить чем он будет лучше остальных движков. "Не использовать SQL" - это не приемущество, а просто глупая блажь, хотя и её уже реализовали. Есть другие приемущества? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:10:02 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Ну, откровенно говоря, я ожидал большей критики и неприятия. Так что это > еще цветочки :) . Зачем приходил? Да по простой причине, мне не > нравиться культ клиент – серверных технологий, не вообще, а в силу как > бы истины в последней инстанции. Единственное что я хочу показать, что Увы, хочу тебя огорчить, культ этот обоснован технически. Дело в том, что в современных приложениях важны две вещи: -- ACID -транзакции -- многопользовательских доступ. Вот эти самые штуки очень плохо делаются в не клиент-серверных архитектурах, и очень замечательно -- в клиент-серверных архитектурах. А SQL или не SQL -- это дело десятое, ты тут опять путаешь калий с кальцием. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:19:35 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Да никто не отказывается, просто есть желание попробовать прочувствовать эти вещи, путем их самостоятельного программирования в учебно – познавательно – тренировательных целях ... Я же веду речь, в общем-то, о демонстрационно-показательном программировании с уклоном на практический результат. .... Не надо мешать в одну кучу практический результат, в виде бизнес приложений и учебно – познавательное програмирование!!! Это очень плохо кончиться для пары сотен пользователей, когда вас, не дай бог, передет автомобиль. Ещё раз повторю, с таким подходом вас до такого количества никто не допустит. (хотя менеджмент наш самый советский, ещё и не такого можно ожидать...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:20:59 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Вы патент когда-нибудь видели ? Патент -- это одно изобретение, > решение одной конкретной задачи. > > > Буржуи уже давно выдают патенты на алгоритмы и технологии. Я не об этом. Один патент выдаётся всегда на одно решение, никто тебе не даст один патент одновременно на алгоритм поиска записей по индексу и способ организации индексного файла. Это будут два патента, как минимум. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:21:43 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > оставалось в лучшем случае 350 – 380 КБ. А это позволяло открыть > одновременно не более 6 окон в программе. Далее, банальная нехватка > памяти. А на кой фиг пользователю-то 6 окон на экране ОДНОВРЕМЕННО ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 11:24:06 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Если вам препод по программированию дает задание на первом курсе написать программу вычисления sin(x) или тупейший учет ваших файлов мультимедиа на вашем компьютере для ваших собственных целей, вы же не станете говорить ему, что такие программы уже есть в любом программируемом калькуляторе, или подобный учет и даже круче уже реализован в программе A, B и даже С. Преп, скажет, ну и что мне нужен не результат, как таковой, а ваше умение получить его самостоятельно, ... Реальная жизнь, это не препод по программированию, снимите наконец розовые очки. В реальной жизни от вас требуется только одно умение - получать конкретный, экономически выгодный, результат. Ваш вариант проигрышный со всех сторон, кроме одной - удовлетворение ваших амбиций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 12:13:13 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery 1. Попробуйте без индекса осуществить гигабайтную сортировку данных. Вас прикалывает ждать? Меня нет. Так ведь сортировки могут быть по достаточно большому чилу полей. А индексы - это ведь палка о двух концах. С одной стороны, ускоряют выборку, с другой - удорожают DML. Значит либо мы делаем кучу индексов для всех сортировок, встречающихся в приложениях, а потом будем после каждого нажатия "Сохранить" идем пить кофе, либо таки придется ждать сортировки. Тем паче, что индекс помогает при сортировке, когда у нас только одна таблица в выборке (что бывает редко), и не факт, что он может помочь при выборке из группы таблиц... Emery 2. Тот же «full scan» или полный перебор в цикле эффективен тогда, когда задействованы все данные, например для формирования сложного отчета по всей таблице (однако если вычисления очень громоздкие и типичные, то следует подумать о промежуточных вычислениях («проводках»)). Если данных очень много, а нужна только их существенно малая часть, то без индексов программа будет работать «бесконечно» долго. Все это очевидные вещи, к чему разговор то? Отнюдь не все. Если рассмотреть на примере Oracle, то он при full scan читает из таблицы не по одному блоку, а сразу несколько (сколько - задается параметром и возможностями ОС). Поэтому часто даже при выборке 10% записей full scan оказывается эффективнее выборки по индексу (у Кайта есть пример с цифирками). А подобные выборки могут составлять существенную часть. Кроме того, если данных много,существуют и другие методы ускорения помимо индексов, например, секционирование таблиц в Oracle Emery Мне не нравится такой подход. Свою базу данных нужно «чувствовать», как «чувствовать» эффективность разных алгоритмов еще до их использования. Очень часто можно существенно упростить используемые sql-запросы за счет реорганизации своей базы. Оптимизацию нельзя доверять программным «оптимизатором». Это занятие не для профессионала. Для новичка да, пусть пользуется мастерами, генераторами кода и оптимизаторы. С «возрастом» эта «болезнь» пройдет. Хех... Так ведь эффективность доступа часто зависит от данных, т.е. от их количества и распределения (равномерное / существенно неравномерное). Т.е. метод доступа, эффективный при одних данных, может перестать быть эффективным при других. Оптимизатор и призван это отслеживать на основе собираемых статистик. А человек? Должен постоянно сопровождать базу и периодически переписывать свои выборки, если начнут поступать жалобы на долгую работу? Так что утверждение, что пользование оптимизаторами - это "болезнь", вызывает ве-е-есьма существенные сомнения. Так можно вообще отказаться от автоматизации и вернуться к ручной работе (и не только в ИТ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 12:44:42 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Т.е. в любом случае вы хотите изготовливать программы на продажу (за деньги), а не для себя, например в учебных или академических целях. 1. Больше 20 активных пользователей на базу ваша технология вряд-ли потянет. 2. Отлаживая движок вы долго с ним провозитесь. 3. Вряд-ли найдете последователей. Когда вам надоест с этим играться, внедрёные бизнес приложения придётся заменять на более майнстримовские. В результате вы имеете конкуретное отставание, по сравнению с другими внедренцами. Я бы, на свою фирму вас не пустил, с таким подходом к делу. Да нет, я не планирую брать деньги за свои программы и ее код будет опубликован полностью вместе с пояснением всех принципиальных моментов по самой свободной лицензии. 1. «20 активных пользователей на базу» без привлечения внешних БД весьма неплохой результат. Но опционально я планирую возможность переключаться на некоторые коммерческие и безплатные библиотеки БД. 2. А я никуда не спешу, у меня появилось свободное время, которое «нечем» занять, решил вот получать удовольствие от программирования. Вы имеете возможность для такой «роскоши»? 3. Последователи, как таковые мне не нужны. Я ведь не мессия какой-то! Мне интересен сам процесс общения с профессионалами (не только по программированию). Менять что-либо когда-либо все равно придется, что мои решения, что ваши. Однако мой практический опыт показывает, что есть масса предприятий, которых устроят и мои решения. Говорить о конкурентном отставании глупо, ибо я живу в провинции, а не в «Силиконовой долине», тут немного другие взгляды на изобретения Майкрософта и иже с ним. В моей нише, так вообще ни «гу-гу», днем с огнем никого не сыщешь. Все ведь ориентируются на «современные» технологии, законодатели мод в которых считанное число фирм – монополистов. Не знаю, какие учетные системы предприятий (недорогие, шустрые, удобные и полнофункциональные) вы имеете в виду, но что-то я не вижу на горизонте ни одной подходящей для нашего предприятия (вполне типичного). Меня брали на работу не как программиста, а как внедренца любой недорогой программы, способной делать все, что нужно нам, а не фирмам производителям. Единственное требование, чтобы я отвечал за работу выбранной программы. Так знаете, я много чё перепробовал и понял, что если не напишу свою программу, именно то, что нужно нашему предприятию, с возможностью расширения, то никогда не смогу гарантировать ее работу при очень скромном бюджете, который мне может быть выделен. Пришлось «покарячиться» некоторое время и я такие программы сделал и внедрил. Все прекрасно работает и вот почему у меня появилось свободное время. Есть ли альтернатива моему решению? Безусловно, только вряд ли оно будет дешевле и стабильнее. Чтобы развиваться дальше, нужно быть на той фирме, чьи потребности ты собираешься удовлетворять. Ибо нюансы всегда есть и сторонние универсальные танковые решения не всегда приемлемы, по разным причинам. А поскольку в нашем городе более крупных организаций почти нет или они уже забиты толпой «программистов», то трудно найти новую «площадку» для дальнейшего профессионального роста. Чтобы не размениваться по мелочам решил пока потусоваться в Интернете до лучших времен. А слишком категоричные работодатели меня тоже не устраивают. Лучше скажите, какую зарплату вы готовы платить тем, кто вам нравиться? :) ЕВА 2000понравилось, увлекательное занятие, попробовать - Это всё очень замечательное и приятное времяпрепровождение. Но совершенно не коструктивно, если вы собираетесь делать законченные бизнес приложения. Если же, хотите продвигать всё же движок, то нужно выяснить чем он будет лучше остальных движков. "Не использовать SQL" - это не приемущество, а просто глупая блажь, хотя и её уже реализовали. Есть другие приемущества? Лично я полагаю, что плох тот работник, который не любит свою работу. Работодатель, который «ломает» своего работника через колено – плохой работодатель . Я хочу, чтобы у моего пользователя всегда был выбор применять велосипедный (или даже реактивный) движок собственной конструкции, либо переключиться на стандартный танковый двигатель (если он у него есть). В этом смысле программа должна быть независима от «двигателя». Преимущество, по крайней мере одно, даже если придется работать с какой-нибудь промышленной БД, восприятие ее после кодирования своего варианта сервера будет более адекватным, за счет чего можно будет получить дополнительную масштабируемость и эффективность. Но реальное решение нужно определять «на месте», в зависимости от возможностей и потребностей предприятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 12:49:41 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery, бесплатные все ж 10 раз уже не описка :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 12:59:44 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivУвы, хочу тебя огорчить, культ этот обоснован технически. Дело в том, что в современных приложениях важны две вещи: -- ACID -транзакции -- многопользовательских доступ. Вот эти самые штуки очень плохо делаются в не клиент-серверных архитектурах, и очень замечательно -- в клиент-серверных архитектурах. Это все вещи хорошие – для универсальных промышленных серверов. Они ведь «затачиваются» на все случаи жизни. Хотя в обзорах можно прочесть, что те же «ACID -транзакции» хорошо сделаны в Oracle и значительно хуже в MS SQL Server 2005. Так что для компьютерных «религиозных войн» всегда можно найти повод, было бы желание. Но я ведь не корпорация «Майкрософт» и мне нет особой нужды думать решениях на все случаи жизни. Достаточно «удовлетворять» только фирму, в которой работаешь. А уровень требований в разных конторах, как между небом и землей. Где-то программист не устраивает работодателя, где-то наоборот, а где-то есть полюбовное соглашение. Так что всегда найдутся ниши и для файл-сервера и для VFP и для самопальных БД. Спектр потребностей тут непрерывный . Хотя конечно специализацию никто не отменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 13:27:09 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery 1. «20 активных пользователей на базу» без привлечения внешних БД весьма неплохой результат. Но опционально я планирую возможность переключаться на некоторые коммерческие и безплатные библиотеки БД. Да не плохой, сколько по вашему условных человеко-часов вы на это потратите? Emery 2. А я никуда не спешу, у меня появилось свободное время, которое «нечем» занять, решил вот получать удовольствие от программирования. Вы имеете возможность для такой «роскоши»? Да, такой роскоши я не имею. Emery 3. Последователи, как таковые мне не нужны. Я ведь не мессия какой-то! Мне интересен сам процесс общения с профессионалами (не только по программированию). Менять что-либо когда-либо все равно придется, что мои решения, что ваши. Однако мой практический опыт показывает, что есть масса предприятий, которых устроят и мои решения. Говорить о конкурентном отставании глупо, ибо я живу в провинции, а не в «Силиконовой долине», тут немного другие взгляды на изобретения Майкрософта и иже с ним. В моей нише, так вообще ни «гу-гу», днем с огнем никого не сыщешь. Все ведь ориентируются на «современные» технологии, законодатели мод в которых считанное число фирм – монополистов. Ну т.е. вы пересадили предприятие с иглы "монополистов" на иглу собственного изготовления. Молодцом! Конкуренции естественно можно не бояться теперь. Как программист, я вас очень понимаю. Как представитель работадателя, я не допускаю от своих подчинёных, таких выкрутасов. Emery А поскольку в нашем городе более крупных организаций почти нет или они уже забиты толпой «программистов», то трудно найти новую «площадку» для дальнейшего профессионального роста. Это работадателя должно волновать? Что вам расти не куда. Переезжайте в нерезиновую или в силиконовую долину. Emery Лично я полагаю, что плох тот работник, который не любит свою работу. Работодатель, который «ломает» своего работника через колено – плохой работодатель . Ну т.е. для вашего работадателя прибыль предприятия - пустой звук. Главное, работников удовлетворить. Всех? Emery Я хочу, чтобы у моего пользователя всегда был выбор применять велосипедный (или даже реактивный) движок собственной конструкции, либо переключиться на стандартный танковый двигатель (если он у него есть). В этом смысле программа должна быть независима от «двигателя». Это дополнительный, не нужный работадателю, функционал "независимость от «двигателя»". За чей счет банкет? EmeryПреимущество, по крайней мере одно, даже если придется работать с какой-нибудь промышленной БД, восприятие ее после кодирования своего варианта сервера будет более адекватным, за счет чего можно будет получить дополнительную масштабируемость и эффективность. Но реальное решение нужно определять «на месте», в зависимости от возможностей и потребностей предприятия. И все таки не понял, какие-такие "потребности предприятия", диктуют вам не использовать бесплатный, очень хорошо отрегулированный, качественно собранный, хорошо масштабируемый, стандартный танковый движок? В который уже вбухано очень много человеко-лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 13:40:49 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Не надо мешать в одну кучу практический результат, в виде бизнес приложений и учебно – познавательное програмирование!!! Это очень плохо кончиться для пары сотен пользователей, когда вас, не дай бог, передет автомобиль. Знаете конечного бесплатного кода в Интернете опубликовано валом, но мало кто может в нем разобраться. Я пишу конечное приложение с пояснениями как я это делаю, иногда с «лирическими» отступлениями, чтобы продемонстрировать гибкость подхода. Что в этом плохого? Только то, что так еще никто не делал? По крайней мере, я об этом не знаю? Я хочу научить людей делать удочку, а не только ловить рыбу. Если научаться, то я им буду не нужен. Вы по жизни такой придирчивый? ЕВА 2000Ещё раз повторю, с таким подходом вас до такого количества никто не допустит. (хотя менеджмент наш самый советский, ещё и не такого можно ожидать...) Я вам тоже повторю, вы слишком категоричный для работодателя, вряд ли это будет способствовать успеху вашей фирмы. Все работники при случае «слиняют». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 13:46:33 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery, Ведь есть миллиард нерешенных задач. Зачем ты тратишь свое время на бессмысленые вещи? Какой нафиг фокс, дбф????? Сделай гант, который оптимизирует. Будешь миллионером. Илог продает за 30 штук евро в год (такая политика лицензирования). У них хреново сделано. Да кучу всего, куда не .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 13:48:02 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZivА на кой фиг пользователю-то 6 окон на экране ОДНОВРЕМЕННО ? Неужели интересны «дела давно минувших дней»? :) Считаем, 1. Базовое окно (меню / десктоп) 2. Основной список 3. Подчиненный список 4. Следующий подчиненный список 5. Диалог 6. Окно выбора чего-то для поля диалога Все, лимит исчерпан. Обычно это хватало, но не всегда. У меня были потребности и в 7-м окне. Иногда глючило и на 6-м окне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 13:54:22 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
кажется тема перешла в бред.... ------------- Sapienti sat! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 14:00:58 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
2 MasterZiv MasterZiv Увы, хочу тебя огорчить, культ этот обоснован технически. Дело в том, что в современных приложениях важны две вещи: -- ACID -транзакции -- многопользовательских доступ. +1 Я так думаю, Emery разрабатывает весьма специализированные системы (скорее всего) однопользовательского доступа (1 клиент=1 база). Я нечто подобное тоже пописывал, но сейчас думаю сделал бы по другому. 2 All По поводу собственно идеи. Я полистал исходники Enery, почитал и понял, что речь идёт о "memory mapping DBF files" для сериализации состояния некоторых контролов, а также для иммитации работы встраиваемой СУБД. Насколько я понял, автор развивает эту идею и пропогандирует её для применения в промышленном масштабе. Если это так - тогда у меня есть несколько вопросов. 1) По сериализации контролов вроде-бы всё ясно. Здесь у меня нет возражений. Далее. Аспекты иммитации работы СУБД. Как известно современные СУБД используют режим "опережающей записи" транзакций в специальный кольцевой буфер, который находится на диске. (В MS-SQL - это просто монотонно растущий файл). В табличные файлы (сегмент данных) грязные строки (блоки строк) сбрасываются в фоновом "режиме" по таймеру или по достижению контрольных точек из оперативной памяти. Такой режим работы обеспечивает "мягкую" нагрузку на диск (только по записи) и обеспечивает 100% возможность воостановления ситемы после crashdown-s. Этот же режим даёт возможность максимально быстрого update для строк которые идут не последовательно, а в случайном порядке. (В качестве примера - те цифры которые приводил автор. 200 млн строк проапдейтить по сложному индексу. Априори известно что будут проапдейчены 33% из этого количества и расположены они в сегмента данных абсолютно случайно. Если применить технологию отображения памяти в файл (вы помните, что я насчитал 6.5 Гигабайт пространства в другом топике) то мы будем постоянно выходить на неоптимальные операции I/O. Здесь не поможет ни дисковый буфер с его жалкими 16-32Мб, ни технологии TCQ, т.к объём данных которые надо изменить чрезвычайно велик и расположен неупорядоченно). Возникает разумный вопрос, насколько глубоко автор реализовал подобные идеи дисковой оптимизации? Если да - то как? Если нет - то почему? Короче меня интересуют скорость OLTP и аналитических транзакций. Сюда-же можно добавить вопрос о восстановлении системы после сбоя класса "отключили питание". Если автор считает что мой пример с update слишком искусственный - то пускай обоснует. 2) Аспекты изоляции транзакций. Как? Можно-ли? Каким образом я могу получить доступ к такому DBF из multithreaded приложения? Как могу блокировать строку для обновления? 3) Прочие технические ограничения. Цифры. Сколько можно создать таблиц? Какое макс. количество строк на таблицу поддерживается? Максимальное количество столбцов на таблицу? Какой макс. размер сегмента данных (физический объём базы)? Варианты с применением библиотек vfp9r.dll / vfp9renu.dll мы рассматривать не будем. Это неинтересно т.к код "от вендора" и говорить здесь особо не о чём т.к. нет новой идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 14:03:24 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Реальная жизнь, это не препод по программированию, снимите наконец розовые очки. В реальной жизни от вас требуется только одно умение - получать конкретный, экономически выгодный, результат. Ваш вариант проигрышный со всех сторон, кроме одной - удовлетворение ваших амбиций. Лично от меня явно никто ничего не требует. Обычно я требую сам от себя. И, как правило, больше, чем от меня неявно ожидают. Иногда приходишь к руководству и говоришь, давайте я вам сделаю еще такой и такой учет. А мне говорят, ну если ТЕБЕ надо, то делай. А лично мне то оно как раз и не надо. Я ведь работаю не в программисткой фирме, а в обычном среднем производственном предприятии. Поскольку я уже с лихвой сделал все, что от меня «неявно ожидали», то могу позволить себе делать то, что мне надо. Так что вы с вашими претензиями явно «не в теме». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 14:03:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕВА 2000Реальная жизнь, это не препод по программированию, снимите наконец розовые очки. В реальной жизни от вас требуется только одно умение - получать конкретный, экономически выгодный, результат. Ваш вариант проигрышный со всех сторон, кроме одной - удовлетворение ваших амбиций. Лично от меня явно никто ничего не требует. Обычно я требую сам от себя. И, как правило, больше, чем от меня неявно ожидают. Иногда приходишь к руководству и говоришь, давайте я вам сделаю еще такой и такой учет. А мне говорят, ну если ТЕБЕ надо, то делай. А лично мне то оно как раз и не надо. Я ведь работаю не в программисткой фирме, а в обычном среднем производственном предприятии. Поскольку я уже с лихвой сделал все, что от меня «неявно ожидали», то могу позволить себе делать то, что мне надо. Так что вы с вашими претензиями явно «не в теме». Не хотел нагнетать, но не удержусь. Если вы уже всё необходимое сделали, почему бы вас не уволить? Или ваш дядя (или тётя) владелец этого бизнеса? Тогда конечно, я явно «не в теме». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 14:12:26 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tru55Так ведь сортировки могут быть по достаточно большому чилу полей. А индексы - это ведь палка о двух концах. С одной стороны, ускоряют выборку, с другой - удорожают DML. Значит либо мы делаем кучу индексов для всех сортировок, встречающихся в приложениях, а потом будем после каждого нажатия "Сохранить" идем пить кофе, либо таки придется ждать сортировки. Тем паче, что индекс помогает при сортировке, когда у нас только одна таблица в выборке (что бывает редко), и не факт, что он может помочь при выборке из группы таблиц... Странно все это слышать. Что мы хотим конкретный учет на конкретном предприятии или собственную универсальную базу данных на все случаи жизни? Я ж веду речь о прогнозируемых ситуациях . А здесь принципиальная «фишка» в том, что используя конкретную структуру и конкретные условия задачи или определенного класса задач можно сильно упростить решение по сравнению с обще-универсальным . А многие пытаются смотреть на предложенные концепции как годящиеся на все случаи жизни. Мы делаем, не «кучу индексов», а ровно столько сколько нужно, заодно еще и думаем, а можно ли их еще уменьшить без потери функциональности. Насчет выборки данных из группы таблиц это отдельная тема разговора и не предназначенная для решения вообще. Мы ведь делаем не средство разработки, а конечное решение для определенного класса задач с фиксированной структурой данных и запросов . Зная заранее эту фиксированную структуру, можно вести речь об оптимизации и выборе нужного движка БД для нашего клиента. tru55Отнюдь не все. Если рассмотреть на примере Oracle, то он при full scan читает из таблицы не по одному блоку, а сразу несколько (сколько - задается параметром и возможностями ОС). Поэтому часто даже при выборке 10% записей full scan оказывается эффективнее выборки по индексу (у Кайта есть пример с цифирками). А подобные выборки могут составлять существенную часть. Кроме того, если данных много,существуют и другие методы ускорения помимо индексов, например, секционирование таблиц в Oracle Все, о чем вы говорите, вполне можно пытаться программировать самим, в том объеме, в котором это необходимо, особенно учитываю стоимость Оракла и его лицензий. Опять же, зная конкретную структуру БД и выборки можно уверено говорить что тогда лучше, full scan, секционирование или индексация. tru55Так ведь эффективность доступа часто зависит от данных, т.е. от их количества и распределения (равномерное / существенно неравномерное). Т.е. метод доступа, эффективный при одних данных, может перестать быть эффективным при других. Оптимизатор и призван это отслеживать на основе собираемых статистик. А человек? Должен постоянно сопровождать базу и периодически переписывать свои выборки, если начнут поступать жалобы на долгую работу? Так что утверждение, что пользование оптимизаторами - это "болезнь", вызывает ве-е-есьма существенные сомнения. Так можно вообще отказаться от автоматизации и вернуться к ручной работе (и не только в ИТ) Мы думаем о разных классах задач, отсюда и «непонятки». Для распределенных БД отдельная песня. Класс задач, который я постоянно имею в виду это типичный учет на предприятии: заработной платы, рабочего времени, ресурсов и конечный бухгалтерский учет. Именно в этих классах задач ощущается повышенная потребность, в тех краях, где я обитаю :) . Если, скажем, предприятие торговое, то будет выбран один подход, производственное – другой. Ибо слишком много специфики в каждом случае. Я не хочу заниматься всеми классами задач одновременно, это неподъемная задача для одного человека. Лучше всего ориентироваться на одно конкретное предприятие с хорошим бюджетом. Однако в рамках этого предприятия нужно делать максимально «широкое» решение.chi22 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 14:50:26 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery...заработной платы, рабочего времени, ресурсов и конечный бухгалтерский учет... У вас что и бух учёт самописный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 15:07:39 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Это все вещи хорошие – для универсальных промышленных серверов. Они ведь Это -- просто хорошие вещи. Для всех. И поэтому всем нужны универсальные промышленные сервера, которые эти хорошие вещи поддерживаются. Причина -- и следствие. > «затачиваются» на все случаи жизни. Хотя в обзорах можно прочесть, что > те же «ACID -транзакции» хорошо сделаны в Oracle и значительно хуже в MS > SQL Server 2005. Ты это где отрыл ерунду такую ? Нормально они сделаны и там, и там. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 15:28:00 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Странно все это слышать. Что мы хотим конкретный учет на конкретном предприятии или собственную универсальную базу данных на все случаи жизни? Я ж веду речь о прогнозируемых ситуациях . А здесь принципиальная «фишка» в том, что используя конкретную структуру и конкретные условия задачи или определенного класса задач можно сильно упростить решение по сравнению с обще-универсальным . А многие пытаются смотреть на предложенные концепции как годящиеся на все случаи жизни. Я немало поработал разработчиком на несофтовых предприятиях, поэтому знаю, что потребности пользователей склонны к расширению. Т.е. могут появляться новые запросы, а соответственно может потребоваться модификация структуры БД. Поэтому речи про какую-то фиксированную (или "конкретную", или определенную при проектировании) структуру мне непонятны. Emery Мы делаем, не «кучу индексов», а ровно столько сколько нужно, заодно еще и думаем, а можно ли их еще уменьшить без потери функциональности. Насчет выборки данных из группы таблиц это отдельная тема разговора и не предназначенная для решения вообще. Мы ведь делаем не средство разработки, а конечное решение для определенного класса задач с фиксированной структурой данных и запросов . Зная заранее эту фиксированную структуру, можно вести речь об оптимизации и выборе нужного движка БД для нашего клиента. 1. Непонятно, что значит "сколько нужно". Если требуется какя-то сортировка в выборке, обязательно ли для нее нужен индекс (именно об этом шла речь выше)? Особенно если отчет выполняется раз в месяц 2. Если выборка из группы таблиц не предназначена для решения, тогда мне вообще непонятно о чем речь. Ибо по моему опыту, выборки из одной таблицы бывают редко (если не сказать - крайне редко) Emery Все, о чем вы говорите, вполне можно пытаться программировать самим, в том объеме, в котором это необходимо, особенно учитываю стоимость Оракла и его лицензий. Опять же, зная конкретную структуру БД и выборки можно уверено говорить что тогда лучше, full scan, секционирование или индексация. Программировать конечно можно все, вопрос в целесообразности. Когда-то существовала шутка, что каждый программист сам себе пишет текстовый редактор. Описанное не из этой области? Особенно учитывая то, что для небольших систем у Oracle есть БЕСПЛАТНАЯ СУБД Oracle 10 XE (у других производителей аналогично). Emery Мы думаем о разных классах задач, отсюда и «непонятки». Для распределенных БД отдельная песня. Класс задач, который я постоянно имею в виду это типичный учет на предприятии: заработной платы, рабочего времени, ресурсов и конечный бухгалтерский учет. Именно в этих классах задач ощущается повышенная потребность, в тех краях, где я обитаю :) . Если, скажем, предприятие торговое, то будет выбран один подход, производственное – другой. Ибо слишком много специфики в каждом случае. Я не хочу заниматься всеми классами задач одновременно, это неподъемная задача для одного человека. Лучше всего ориентироваться на одно конкретное предприятие с хорошим бюджетом. Однако в рамках этого предприятия нужно делать максимально «широкое» решение. 1. о распределенных БД речи вообще не шло и ни одно мое высказывание их не касалось - там куча своих игрушек 2. специфика безусловно важна, но это вовсе не значит, что каждый раз надо начинать программироване с нуля, не пользуясь уже наработанным (в том числе и наработанным другими) 3. если речь идет о совсем узком решении в очень узкой области, стоит ли писать статьи и устраивать дискуссии в Инете. Ведь если оно настолько узко, значит нигде кроме оговоренного предприятия оно не пригодится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 15:30:24 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery пишет: > Неужели интересны «дела давно минувших дней»? :) > Считаем, > 1. Базовое окно (меню / десктоп) Нафига оно ВСЕГДА ? выбрал из меню -- закрыл форму. > 2. Основной список То же самое. Выбрал --- закрыл. > 3. Подчиненный список То же самое. > 4. Следующий подчиненный список То же самое. > 5. Диалог Ну, преред этим род. список можно не закрывать. > 6. Окно выбора чего-то для поля диалога Тут тоже можно род. диалог не закрывать. > Все, лимит исчерпан. Игого -- 3 формы как максимум одновременно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 15:30:38 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Да не плохой, сколько по вашему условных человеко-часов вы на это потратите? То, что я хочу получить в конце это два-три года. ЕВА 2000Ну т.е. вы пересадили предприятие с иглы "монополистов" на иглу собственного изготовления. Молодцом! Конкуренции естественно можно не бояться теперь. Как программист, я вас очень понимаю. Как представитель работадателя, я не допускаю от своих подчинёных, таких выкрутасов. Судя по всему, вы не очень хорошо владеете ситуацией. Во-первых, я публикую все не только бесплатно, но и с пояснениями, куда уж лучше. Готов даже опубликовать свой исходный код внедренных разработок, но чтобы народ их «воспринял» их надо тоже оформить в виде серии статей, а реально, переписать заново. Во-вторых, вы утверждаете мифы, «как представитель работодателя». Ибо мы это все уже проходили и это все совсем не так как вы думаете. Очень трудно удержаться в рамках стандартного решения, обязательно неизбежны «правки» вашим программистов (в силу необходимости). И в любом случае новый программист будет испытывать дискомфорт и сложности с освоением своего «хозяйства». И постоянно его будут посещать мысли, зачем вы это сделали так, когда все можно сделать иначе и лучше или давайте я вам все переделаю «как надо». Могут быть принципиальные «непонятки» вплоть до увольнения. А может быть ситуация прижмет вас так, что вы вынуждены будете согласиться на это и тогда прощай стандартизация. Я это все уже наблюдал своими глазами не раз и могу вам откровенно сказать, что политика жесткого контроля программиста, ничуть не лучше политики полного доверия ему. Обычно программисты люди творческие и внутренне свободные и не любят жесткий контроль над своей деятельностью, тем более, что работодатель мало что смыслит в их работе. В таких случаях они чаще увольняются. Там, где программист предоставлен самому себе, на условиях к такому-то сроку, нужно сделать то-то, а, как и когда работодателя не интересует, пусть даже его на работе вообще не будет, там программист, как правило, добровольно не увольняется и фирма с ним проблем не имеет. Если взять фарс-мажорную ситуацию, например я поссорился с фирмой и ушел хлопнув дверью, не предоставив ни своего кода, ни своей замены. Чтобы сделала моя фирма. Она бы просто обратилась к моим «конкурентам» и те, за моих две-три годовых зарплаты (в рассрочку) и три-четыре месяца запустили бы свой проект. Чувствительно для фирмы, в общем-то, да, но не «смертельно». Это она себе вполне может позволить на фоне тысячи сотрудников, которых имеет. Мне бы они могли перекрыть дорогу на работу в любой фирме моего города. Так что «хлопать дверью» мне нет никакого резона. Гораздо лучше, если найду себе более высокооплачиваемую работу, подготовить себе замену (администратора моих база данных) и периодически, по мере необходимости вносить изменения в свой код (обычно это нужно делать не очень часто). Так что хорошее отношение фирмы ко мне, в любом случае выливается в мое хорошее отношение к ней. И нет необходимости в никаком жестком контроле, а тем более принуждении. Так что на месте работодателя я бы отказался от такого «представителя» :) . ЕВА 2000Это работадателя должно волновать? Что вам расти не куда. Переезжайте в нерезиновую или в силиконовую долину. Разве об этом речь? Профессионально расти мне есть куда, достаточно просто писать программы, пусть даже не востребованные пока. Не востребованы сейчас, будут востребованы потом. Главное, чтобы они были, а разрекламировать их я уж как-нибудь сумею. Я имел в виду, что для конкретного внедрения в любом случае нужно будет время, так как заранее не знаешь, с каким классом задач придется иметь дело. Поэтому если уже работаешь на крупном предприятии, тогда проще, но это не принципиально, по крайней мере я могу сейчас акцентироваться на удовольствии от программирования. ЕВА 2000Ну т.е. для вашего работадателя прибыль предприятия - пустой звук. Главное, работников удовлетворить. Всех? Вы все воспринимаете превратно. Зачем из одной крайности бросаться в другую? Дело работодателя заниматься своей прибылью, а не контролем программистов. Жестко контролировать нужно только нетворческих работников, для которых их работа в тягость, но под присмотром они вынуждены ее выполнять хорошо. Обычно практикуется контрактная система, в которой оговариваются права и обязанности программиста. Скажем на три месяца, шесть месяцев, год и т.д. Дали человеку испытательный срок – справился, контракт продлили, нет забери свою зарплату и иди гуляй. Все, другого контроля не надо. И представителя никакого не надо, ибо судят по результатам. Я бы еще предложил свое «ноу хау». Отчитаться за свою промежуточную работу программист может в виде промежуточных отчетов и кода, по аналогии моих статей здесь и на codeproject.com . Вы смотрите эти отчеты сами или даете на отзыв экспертам, а затем принимаете решения, ждать следующего отчета или «попросить программиста выйти вон». Думаю, это очень полезная практика «контроля» программиста с пользой и для него и для вас. Впрочем, если вас привлекает «советский» административный стиль, то это ваше право :) . ЕВА 2000Это дополнительный, не нужный работадателю, функционал "независимость от «двигателя»". За чей счет банкет? Смотрите чуть выше про промежуточную отчетность и контрактную систему с программистом. Это вполне все решает. ЕВА 2000И все таки не понял, какие-такие "потребности предприятия", диктуют вам не использовать бесплатный, очень хорошо отрегулированный, качественно собранный, хорошо масштабируемый, стандартный танковый движок? В который уже вбухано очень много человеко-лет. Если вы так сформулируете свое техзадание или условие контракта, то так и будет. Но поскольку у меня есть сейчас свободное время, то разумно использовать его, чтобы разобраться как работает «бесплатный, очень хорошо отрегулированный, качественно собранный, хорошо масштабируемый, стандартный танковый движок». Ибо я не очень доверяю общему мнению, я должен убедиться, что из всех безплатных БД именно «Х» - самый подходящий для целей вашего или нашего предприятия движок. Если у вас уже есть технический отчет по сравнительному анализу всех безплатных БД с точки зрения потребностей вашего предприятия это могло сэкономить много времени. А так, на первом этапе, чтобы разобраться, как работает калькулятор желательно, хотя и не обязательно, поперемножать числа вручную, или повычислять что-нибудь на них. Более практичный пример, я нашел для своих целей алгоритм внешней сортировки «естественным слиянием», слегка модернизировал его (чтобы убрать лишние буфера) и начал вручную сортировать случайные числа чтобы «прочувствовать» этот алгоритм и сформулировать его в формальном виде (в интернете он описан не строго). Попробовал, все получилось, а этот алгоритм мне очень понравился, и я решил его использовать при написании эквивалента VFP-шной команды INDEX ON. Эта моя общая идея, чтобы эффективно использовать любой инструмент весьма не вредно разобраться, как он устроен, может быть даже путем попытки конструирования аналога. Много времени тратить на это не собираюсь, ровно столько, сколько нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 16:16:45 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовEmery, Ведь есть миллиард нерешенных задач. Зачем ты тратишь свое время на бессмысленые вещи? Какой нафиг фокс, дбф????? Сделай гант, который оптимизирует. Будешь миллионером. Илог продает за 30 штук евро в год (такая политика лицензирования). У них хреново сделано. Да кучу всего, куда не .. Я занимаюсь тем, что реально востребовано, пусть и не стандартно. То, что вы предлагаете, не реально. Есть туева хуча программистов специализирующихся в этой области, но я к ним не отношусь. В принципе я мог бы заниматься любой творческой работой, но под дополнительные гарантии. А поскольку на это никто не пойдет, то лучше я буду делать то, что может иметь реальный успех без внешней поддержки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 16:23:40 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
"Внедрять свои нестандартные решения нужно так, так как будто его будет сопроваждать психически-неуравновешанный маньяк, который знает где вы живёте" - рерайт одной известной цитаты. Мне это напоминает историю одной фирмы, где сайт был написан на языке своеобразном что то между perl/php/python, какие были плюсы - разработчик в итоге диктовал свою волю по зарплате. Минусы - как только у фирмы начались проблемы то она отпустила разработчика в самом конце, а когда поднялась на ноги разработчик ушел от них а этот язык никто практически незнал в данном месте, в итоге весь большой проект начали переписывать заного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 17:56:17 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Не хотел нагнетать, но не удержусь. Если вы уже всё необходимое сделали, почему бы вас не уволить? Или ваш дядя (или тётя) владелец этого бизнеса? Тогда конечно, я явно «не в теме». Могу вас уверить родственников – совладельцев у меня нет. А у меня к вам аналогичный вопрос. А за какие заслуги вас взяли на работу? Родственники или блат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 18:53:26 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000 У вас что и бух учёт самописный? Почти. До внедрения не дошло, так как бухгалтеров у нас очень много, они вполне справляются и вручную и особо не жаждут изучать компьютеры и программы. Там, где бухгалтера были помоложе, там проблем с внедрением было меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 19:02:14 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
MasterZiv> «затачиваются» на все случаи жизни. Хотя в обзорах можно прочесть, что > те же «ACID -транзакции» хорошо сделаны в Oracle и значительно хуже в MS > SQL Server 2005. Ты это где отрыл ерунду такую ? Нормально они сделаны и там, и там. http://oraclemind.blogspot.com/2007/08/blog-post.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 19:09:41 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
tru55Я немало поработал разработчиком на несофтовых предприятиях, поэтому знаю, что потребности пользователей склонны к расширению. Т.е. могут появляться новые запросы, а соответственно может потребоваться модификация структуры БД. Поэтому речи про какую-то фиксированную (или "конкретную", или определенную при проектировании) структуру мне непонятны. Хорошо, давайте конкретно. Возьмем учет зарплаты. Если уж все заработало, то менять нужно только изменения в законодательстве и то если законодатели так извратились, что предсказать их новшества не удалось, т.е. не удалось законодательные изменения свести к изменению параметров программы. Таким у нас в Украине был алгоритм расчета индексации, плюс некоторые извращения в расчете больничных листов. Но, тем не менее, модификация программы не заняла много времени. Далее расширения программы возможны за счет подключения сервера к электронной проходной, чтобы автоматически велся учет рабочего времени. Но я чувствую, что это нужно больше мне, чем моим пользователям. Аналогично, по учету ресурсов. Я наращиваю функционал, и подключаю новые бухгалтерские подразделения. Бывает, что меня просят сделать то, чего я не предусмотрел. Но это не занимает много времени, максимум пару дней и то, без особого напряга. Так что все «новые запросы» проходят через меня и не вызывают особых проблем. Как правило, это линейное расширение функционала. Общую структуру базы данных это не задевает. И т.д. и т.п. Потому я и говорю об относительно фиксированной структуре БД. tru551. Непонятно, что значит "сколько нужно". Если требуется какя-то сортировка в выборке, обязательно ли для нее нужен индекс (именно об этом шла речь выше)? Особенно если отчет выполняется раз в месяц Но ведь свою базу проектирую я сам, потому я просто «чувствую», что лишнее, а что нет. Насчет «сортировки в выборке» возможны различные решения. Для формирования месячных отчетов в «учете ресурсов» у меня есть ряд подчиненных таблиц, с промежуточными данными («проводками») сгруппированных так чтобы для данного месяца выбирались все данные из подчиненного ему справочника. Обычно их относительно немного, максимум на 45 страниц печатного текста (в «зарплате» есть отчеты на 200-300 страниц, но там другая организация отчетов). Все эти данные легко помещаются в оперативной памяти, где уже и происходит сортировка в соответствии с настройками отчетов, заданными пользователем в моем универсальном генераторе отчетов. Кроме сортировки есть еще группировка, свертка, и т.д. все по нескольким уровням. И все действия осуществляются в памяти по «плану» пользователя. Не утверждаю, что это идеальное решение, но до оптимизации у меня руки не доходят. tru552. Если выборка из группы таблиц не предназначена для решения, тогда мне вообще непонятно о чем речь. Ибо по моему опыту, выборки из одной таблицы бывают редко (если не сказать - крайне редко) Согласен, я такие отчеты и за отчеты не считаю. Обычно данные у меня расположены в подчиненных таблицах (до 6-ти уровней вложенности) плюс ссылки на соседние справочники. Именно на такую иерархию у меня настроен мой генератор отчетов. Ему доступны все метаданные, все таблицы с их уровнями подчиненностями и все поля таблиц. На любое поле пользователь можно накладывать различные условия, они могут быть сгруппированы в различные группы условий. Можно сохранять различные шаблоны отчетов, чтобы каждый месяц не определять их заново. В общем, неплохо, хотя несколько громоздко. Хочу сделать аналогичную систему на MFC, но более простую. tru55Программировать конечно можно все, вопрос в целесообразности. Когда-то существовала шутка, что каждый программист сам себе пишет текстовый редактор. Описанное не из этой области? Особенно учитывая то, что для небольших систем у Oracle есть БЕСПЛАТНАЯ СУБД Oracle 10 XE (у других производителей аналогично). Да нет, речь больше идет о том, что все навороты, о которых так любят упоминать здесь, нужны далеко не всегда. Иногда, некоторые вещи можно решить более простыми средствами. Почему-то, тот востребованный класс задач, с которым мне приходится иметь дело, не требует тяжеловесных решений. Потому я и не тороплюсь их использовать без крайней необходимости. tru552. специфика безусловно важна, но это вовсе не значит, что каждый раз надо начинать программироване с нуля, не пользуясь уже наработанным (в том числе и наработанным другими) Есть разный уровень решений, системный и прикладной, которые тоже имеет два – три подуровня. Имеющиеся решения одних уровней и подуровней меня целиком и полностью устраиваю, для других уровней и подуровней с точностью до наоборот. Я уже писал? с каким классом задач имею дело. Так вот существующие конечные решения для этих классов задач меня не устраивают, а промежуточные вполне. Обычно в наших дискуссиях речь идет о промежуточных решениях, к которым у меня нет вопросов. Только таких решений обычно множество и весь разговор крутится вокруг одного и того же – почему это решение, а не то? Да, по большому счету, ультрафиолетово, какое промежуточное решение брать за основу, а раз так то берутся чисто эстетические, личные предпочтения. Задача решена? Решена! Какие еще вопросы? Если решить не удается за обозримое время – берется другое решение, это же обычное дело. Если нет собственных идей, всегда можно попросить народ поделиться своими. Программировать всегда не вредно. Подумаешь, потратил месяц на эксперименты! Зато нового опыта набрался. tru553. если речь идет о совсем узком решении в очень узкой области, стоит ли писать статьи и устраивать дискуссии в Инете. Ведь если оно настолько узко, значит нигде кроме оговоренного предприятия оно не пригодится Решение может быть и «узко», но задачи решает типичные. Неужели так важно каким методом вы решаете то или иное уравнение, если все они дают один и тот же результат за примерно одинаковое время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 20:31:08 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryMasterZiv> «затачиваются» на все случаи жизни. Хотя в обзорах можно прочесть, что > те же «ACID -транзакции» хорошо сделаны в Oracle и значительно хуже в MS > SQL Server 2005. Ты это где отрыл ерунду такую ? Нормально они сделаны и там, и там. http://oraclemind.blogspot.com/2007/08/blog-post.html Офигенно авторитетный источник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 20:46:49 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emerytchingizа еще был парадокс, а к нему был парадокс енжин на си. Хорошо, буду иметь в виду. еще можно иметь ввиду, что был кодебайз - сишная библиотека для работы с дбф файлами и дибивиста (которая раза три меняла название) и все дружно с миром почитили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2009, 23:39:44 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
miksoftДанный код эмулирует лишь один из вариантов выполнения исходного SQL-запроса. Причем не самый оптимальный в случае, когда количество записей в таблицах table_1 и table_2 сопоставимо и велико. Пока это голословное утверждение. Если вы так говорите, то приведите вариант более оптимального решения по аналогии с моим. Количество записей в table_2 не принципиально, поскольку обращение к ним происходит по индексу. Конечно, время запроса зависит от количества записей в table_1, но таково условие запроса, поскольку должны быть проверены ВСЕ его записи на предмет их не вхождения в table_2. Вообще-то конечно можно говорить о более эффективном запросе, но тогда нужно реорганизовывать нашу БД . Например, в table_1 добавить логический признак присутствия или отсутствия его идентификатора в table_2, который можно вычислять при вставке очередной записи в table_1. Пусть это будет поле IsId2 в table_1 . Тогда наш код немного упростится. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Вы хотите сказать, что непосредственный запрос Код: plaintext 1. Давайте, тогда большие тестовые таблицы table_1 и table_2 и мы замеряем эти варианты в VFP (или где хотите) и на С++. Правда на разных компьютерах это делать глупо, но что-нибудь придумать можно. miksoftА, во-вторых, где вся та работа с DBF и CDX (а не использование чужих библиотек), о которой вами написано столько текста? Работа с DBF продемонстрирована в «MFC-04. MMF чтение и создание DBF файлов вместо сериализации для виртуальных списков» , о чем уже не раз говорилось. Работа с CDX будет в следующей, пятой статье, которую я сейчас готовлю. Здесь она будет опубликована в разделе «С++». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 10:32:14 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Если уж человек твердо решил что будет изобретать велосипед, то его не отговорить. Так что, можно даже не пытаться и перестать травить :) Хотя... С другой стороны он найдет себе последователей из новичков, то начнется цирк в стиле РАЕН ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 10:36:12 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕВА 2000Да не плохой, сколько по вашему условных человеко-часов вы на это потратите? То, что я хочу получить в конце это два-три года. Насколько я понимаю, вы работаете всё же не в софтверной компании, а на нефтеналивной базе (условно). Знают ли ваши руководители, что вы потратите 2-3 годовые з/п начальника ИТ отдела на то, что можно получить абсолютно бесплатно, абсолютно законно и уже сейчас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 11:03:31 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕВА 2000Не хотел нагнетать, но не удержусь. Если вы уже всё необходимое сделали, почему бы вас не уволить? Или ваш дядя (или тётя) владелец этого бизнеса? Тогда конечно, я явно «не в теме». Могу вас уверить родственников – совладельцев у меня нет. А у меня к вам аналогичный вопрос. А за какие заслуги вас взяли на работу? Родственники или блат? Здесь всё просто. Блата у меня тоже нет. А на работе держат, за то что я решаю вполне определенные задачи работадателя, с необходимым уровнем качества (не завышеннем и не заниженным) и максимально дёшево. Как только все задачи решатся/отпадут, меня уволят, что я не раз уже наблюдал. В текущей компании, такой вопрос полностью закрывается за 1 день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 11:17:29 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery ЕВА 2000И все таки не понял, какие-такие "потребности предприятия", диктуют вам не использовать бесплатный, очень хорошо отрегулированный, качественно собранный, хорошо масштабируемый, стандартный танковый движок? В который уже вбухано очень много человеко-лет. Если вы так сформулируете свое техзадание или условие контракта, то так и будет. Но поскольку у меня есть сейчас свободное время, то разумно использовать его, чтобы разобраться как работает «бесплатный, очень хорошо отрегулированный, качественно собранный, хорошо масштабируемый, стандартный танковый движок». Ибо я не очень доверяю общему мнению, я должен убедиться, что из всех безплатных БД именно «Х» - самый подходящий для целей вашего или нашего предприятия движок. Если у вас уже есть технический отчет по сравнительному анализу всех безплатных БД с точки зрения потребностей вашего предприятия это могло сэкономить много времени. А так, на первом этапе, чтобы разобраться, как работает калькулятор желательно, хотя и не обязательно, поперемножать числа вручную, или повычислять что-нибудь на них. Более практичный пример, я нашел для своих целей алгоритм внешней сортировки «естественным слиянием», слегка модернизировал его (чтобы убрать лишние буфера) и начал вручную сортировать случайные числа чтобы «прочувствовать» этот алгоритм и сформулировать его в формальном виде (в интернете он описан не строго). Попробовал, все получилось, а этот алгоритм мне очень понравился, и я решил его использовать при написании эквивалента VFP-шной команды INDEX ON. Эта моя общая идея, чтобы эффективно использовать любой инструмент весьма не вредно разобраться, как он устроен, может быть даже путем попытки конструирования аналога. Много времени тратить на это не собираюсь, ровно столько, сколько нужно. Вы снова не ответили на мой вопрос. Перефразирую. Какие потребности предприятия (а не потребности Emery) не позволяют вам использовать один из стандартных движков? (Вам вообще любой подойдёт из более-менее известных.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 11:26:22 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000EmeryЕВА 2000Да не плохой, сколько по вашему условных человеко-часов вы на это потратите? То, что я хочу получить в конце это два-три года. Насколько я понимаю, вы работаете всё же не в софтверной компании, а на нефтеналивной базе (условно). Знают ли ваши руководители, что вы потратите 2-3 годовые з/п начальника ИТ отдела на то, что можно получить абсолютно бесплатно, абсолютно законно и уже сейчас? Уверяю вас, что если будет сокращение штатов, то меня уволят в последнюю очередь и не по блату, как может быть вас, а по объективным причинам. Так было, например, на моем последнем месте работы, весьма крутой фирме в свое время (когда я принимался туда на работу, то первый вопрос мне был: «По чьему блату ты устраиваешься?» И когда я отвечал, что ни по чьему (это была правда), мне никто не верил). К сожалению, эту фирму принудительно обанкротили. Ушел я в последней десятке человек (а сначала было несколько тысяч) и то по собственному желанию. Вы забываете, что мои базы еще кому-то администрировать надо. И зарплату мне платят исключительно как админу и никогда не платили как программисту и тем более не платили за мои программы. Так что я полностью соответствую своей должностной инструкции и даже более. Поэтому не тешьте себя иллюзиями, что нашли очередного «бездельника» не только на территории своей фирмы, а и далеко за ее пределами. Вам платят зарплату за это? И у вас нет других обязанностей, как в рабочее время лазить по интернету и давать оценку его пользователям? А знает ли ваш работодатель эту часть вашей «работы»? Для того чтобы так «работать» много ума не надо. Лучше бы вы уж продемонстрировали свои интеллектуально – аналитические способности, пусть даже и не в области вашей сферы деятельности, чем заниматься безсмысленным занудством. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 11:32:30 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕВА 2000EmeryЕВА 2000Да не плохой, сколько по вашему условных человеко-часов вы на это потратите? То, что я хочу получить в конце это два-три года. Насколько я понимаю, вы работаете всё же не в софтверной компании, а на нефтеналивной базе (условно). Знают ли ваши руководители, что вы потратите 2-3 годовые з/п начальника ИТ отдела на то, что можно получить абсолютно бесплатно, абсолютно законно и уже сейчас? Уверяю вас, что если будет сокращение штатов, то меня уволят в последнюю очередь и не по блату, как может быть вас, а по объективным причинам. Так было, например, .... Опять ля-ля, три рубля. Мой прямой вопрос подразумевает только 2 ответа. "Да" или "Нет". Будете отвечать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 11:43:32 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emerytru55Программировать конечно можно все, вопрос в целесообразности. Когда-то существовала шутка, что каждый программист сам себе пишет текстовый редактор. Описанное не из этой области? Особенно учитывая то, что для небольших систем у Oracle есть БЕСПЛАТНАЯ СУБД Oracle 10 XE (у других производителей аналогично). Да нет, речь больше идет о том, что все навороты, о которых так любят упоминать здесь, нужны далеко не всегда. Не нужны - не используйте. Нет проблем! Emery Иногда, некоторые вещи можно решить более простыми средствами. Написание своего движка баз данных - это более простые средства??? Мазохизмом попахивает. EmeryПочему-то, тот востребованный класс задач, с которым мне приходится иметь дело, не требует тяжеловесных решений. Потому я и не тороплюсь их использовать без крайней необходимости. У меня на рабочем компе сейчас работает бесплатная версия MS-SQL. Сегодня с утра я к ней не обращался. В памяти её процес занимает 14 Мбайт! Съеденное за 3 часа процессорное время 37 секунд! Если ЭТО тяжеловесное решение, то я точно балерина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 11:55:58 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Вы снова не ответили на мой вопрос. Перефразирую. Какие потребности предприятия (а не потребности Emery) не позволяют вам использовать один из стандартных движков? (Вам вообще любой подойдёт из более-менее известных.) Я уже не раз отвечал на подобные вопросы. Но, очевидно, нужно повторится. На своем предприятии я реально внедрил «учет заработной платы» (1С77 + ядро VFP) и «учет ресурсов» (только 1С77). Что здесь не стандартного? Купить «1С» пожелало само предприятие и именно на нем оно хотело видеть свой учет (отчасти с целью программисто-независимости). Я смог очень существенно повысить производительность «семерки» за счет тех идей, о которых идет речь в этой статье. Ибо вы знаете, 1С-овский движок БД никуда не годится. Могу уже и «зарплату» «освободить» от ядра VFP без потери производительности. И это притом, что у меня в базе хранится информация по з/п за много лет. Правда приходится работать с 1С весьма нестандартным способом, но на это мне никто никаких ограничений не ставил и не собирается ставить. Главное чтобы мой код был доступен (а с этим проблем нет). Зачем нам еще какие сервера БД, хоть платные, хоть безплатные. Все что хотело от меня мое предприятие я уже давно внедрил. А сейчас оно хочет просто стабильной работы моих программ и их поддержку в связи с изменениями в законодательстве, с чем тоже проблем нет. И им совершенно ультрафиолетово, чем я занимаюсь в свободное от администрирования своих БД время. Поскольку знают, что если меня не будет, то обязательно возникнут не нужные проблемы (не из-за моей зловредности, а отчасти из-за нежелания или неспособности коллег вникнуть в мою работу). Из-за этого я даже нормально в отпуске не могу побыть. Хоть раз в неделю, но обязательно вызовут в фирму. Откровенно скажу, меня такое не прикалывает, но даже те несколько официальных «программистов», которые работают в нашей фирме, предпочитают заниматься своими делами, а не моими. Причем такое безразличие проявляется даже на форумах 1С. Да и здесь, все думают, что я несу пустой бред, хотя, как я уже сказал, эти идеи позволили из «семерки» сделать «конфетку». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 12:05:53 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000 EmeryПочему-то, тот востребованный класс задач, с которым мне приходится иметь дело, не требует тяжеловесных решений. Потому я и не тороплюсь их использовать без крайней необходимости. У меня на рабочем компе сейчас работает бесплатная версия MS-SQL. Сегодня с утра я к ней не обращался. В памяти её процес занимает 14 Мбайт! Съеденное за 3 часа процессорное время 37 секунд! Если ЭТО тяжеловесное решение, то я точно балерина. + Запустил "тяжёлую" конфигурацию 1cv7. В ней отчет профит по месяцам по определенному клиенту за 2 года. 1cv7 отожрала 32Мбайт оперативки, MS-SQL ~100 МБайт оперативки (вся база ~10 ГБайт), процессор наиспользовала ещё на 27 сек! Это что вообще за значения такие высокие в наше время, когда новых планок оперативки меньше 512 МБайт уже не продают, да и те стоят копейки (500 р.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 12:11:50 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Опять ля-ля, три рубля. Мой прямой вопрос подразумевает только 2 ответа. "Да" или "Нет". Будете отвечать? Не буду :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 12:13:05 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕВА 2000Вы снова не ответили на мой вопрос. Перефразирую. Какие потребности предприятия (а не потребности Emery) не позволяют вам использовать один из стандартных движков? (Вам вообще любой подойдёт из более-менее известных.) Я уже не раз отвечал на подобные вопросы. Но, очевидно, нужно повторится. На своем предприятии я реально внедрил «учет заработной платы» (1С77 + ядро VFP) и «учет ресурсов» (только 1С77). Что здесь не стандартного? Купить «1С» пожелало само предприятие и именно на нем оно хотело видеть свой учет (отчасти с целью программисто-независимости). Я смог очень существенно повысить производительность «семерки» за счет тех идей, о которых идет речь в этой статье. Ибо вы знаете, 1С-овский движок БД никуда не годится. Могу уже и «зарплату» «освободить» от ядра VFP без потери производительности. И это притом, что у меня в базе хранится информация по з/п за много лет. Правда приходится работать с 1С весьма нестандартным способом, но на это мне никто никаких ограничений не ставил и не собирается ставить. Главное чтобы мой код был доступен (а с этим проблем нет). Зачем нам еще какие сервера БД, хоть платные, хоть безплатные. Все что хотело от меня мое предприятие я уже давно внедрил. А сейчас оно хочет просто стабильной работы моих программ и их поддержку в связи с изменениями в законодательстве, с чем тоже проблем нет. И им совершенно ультрафиолетово, чем я занимаюсь в свободное от администрирования своих БД время. Поскольку знают, что если меня не будет, то обязательно возникнут не нужные проблемы (не из-за моей зловредности, а отчасти из-за нежелания или неспособности коллег вникнуть в мою работу). Из-за этого я даже нормально в отпуске не могу побыть. Хоть раз в неделю, но обязательно вызовут в фирму. Откровенно скажу, меня такое не прикалывает, но даже те несколько официальных «программистов», которые работают в нашей фирме, предпочитают заниматься своими делами, а не моими. Причем такое безразличие проявляется даже на форумах 1С. Да и здесь, все думают, что я несу пустой бред, хотя, как я уже сказал, эти идеи позволили из «семерки» сделать «конфетку». Я делаю из семерки конфетку, вполне стандартными методами. 1С-овский движок БД на своём месте самоё юзабельное и продвинутое средство для разработки и использования. Без всяких там "+ ядро VFP" Нужно просто уметь готовить! И всё! Выбросите "+ ядро VFP", "весьма нестандартным способом". Задайте стандарты разработки не отступая от майнстрима, напишите документацию, хотя бы в общих чертах и отдыхайте спокойно себе в отпуске. Ваши помощники спокойно всё разрулят! Никаких "возникнут не нужные проблемы" не будет. (сильно подозреваю такой вариант вам не интересен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 12:25:40 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Я делаю из семерки конфетку, вполне стандартными методами. 1С-овский движок БД на своём месте самоё юзабельное и продвинутое средство для разработки и использования. Без всяких там "+ ядро VFP" Нужно просто уметь готовить! И всё! Выбросите "+ ядро VFP", "весьма нестандартным способом". Задайте стандарты разработки не отступая от майнстрима, напишите документацию, хотя бы в общих чертах и отдыхайте спокойно себе в отпуске. Ваши помощники спокойно всё разрулят! Никаких "возникнут не нужные проблемы" не будет. (сильно подозреваю такой вариант вам не интересен) Если у вас более 1000 человек на работе и вы считаете з/п на 1С77, то мне было бы интересно обсудить ваш вариант. А так, похоже, что вы сами мало что программируете, в основном «руководите». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 12:40:05 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕсли у вас более 1000 человек на работе и вы считаете з/п на 1С77, то мне было бы интересно обсудить ваш вариант. А так, похоже, что вы сами мало что программируете, в основном «руководите». Опять пальцем в небо. Именно программирую, именно на 1С77. Ухожу от этого, причём не за счет работадателя. Вы хотите нанять меня чтобы вас проконсультировать? Какие условия предлагаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 12:51:44 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000Опять пальцем в небо. Именно программирую, именно на 1С77. Ухожу от этого, причём не за счет работадателя. Вы хотите нанять меня чтобы вас проконсультировать? Какие условия предлагаете? Похоже, вам действительно нечего сказать. Мне ваши консультации не нужны, достаточно, если вы просто «похвастаетесь» своими «достижениями» в 1С77. Но если и это «ноу-хау», то оставьте при себе, когда я опубликую свой код по 1С, посмотрите и скажете, лучше у вас или хуже. Впрочем, я догадываюсь, что вы скажете про это с вашим занудным морализаторством. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 13:02:16 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryЕВА 2000Опять пальцем в небо. Именно программирую, именно на 1С77. Ухожу от этого, причём не за счет работадателя. Вы хотите нанять меня чтобы вас проконсультировать? Какие условия предлагаете? Похоже, вам действительно нечего сказать. Мне ваши консультации не нужны, достаточно, если вы просто «похвастаетесь» своими «достижениями» в 1С77. Но если и это «ноу-хау», то оставьте при себе, когда я опубликую свой код по 1С, посмотрите и скажете, лучше у вас или хуже. Меряться писками? Да ещё забесплатно? Фу-у-у! На это вы меня не разведёте. EmeryВпрочем, я догадываюсь, что вы скажете про это с вашим занудным морализаторством. Разумная целесообразность, честность. И ничего больше. Никаго "морализаторства". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 13:25:07 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
И..... все эти "сочинения" описывают прикручивание очередных костылей к 1сv77? Тема топика так и не раскрыта. Приведенный пример запроса на VFP S(tump)QL выглядят как минимум более непонятно, чем просто на SQL. Неужели организация на столько бедная, что не может купить MS SQL SERVER STD(800$) и дополнительно получить + в виде AS & RS или просто автор не в сосотянии обосновать целесообразность такой покупки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 13:49:15 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
BrainDamageИ..... все эти "сочинения" описывают прикручивание очередных костылей к 1сv77? Тема топика так и не раскрыта. Приведенный пример запроса на VFP S(tump)QL выглядят как минимум более непонятно, чем просто на SQL. Неужели организация на столько бедная, что не может купить MS SQL SERVER STD(800$) и дополнительно получить + в виде AS & RS или просто автор не в сосотянии обосновать целесообразность такой покупки? Автор в академических изысканиях. И в новейших открытиях, уже давно открытого. За счет работадателя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 13:56:40 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Ну судя по названию топика - автор претендует на великое закрыте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 14:01:50 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Ну или лет через 5-6 появится новый цикл статей о том, какая классная штука SQL и об ненужности и бесполезности всяких там MDX, DMX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 14:05:17 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
BrainDamageНу судя по названию топика - автор претендует на великое закрыте. Да, ради бога. Может Микрософт им заинтересуется. А если нет, то и нефтеналивной базе, тем более, это закрытие никчему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 14:08:07 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Из-за этого я даже нормально в отпуске не могу побыть . Хоть раз в неделю, но обязательно вызовут в фирму. Откровенно скажу, меня такое не прикалывает, но даже те несколько официальных «программистов» , которые работают в нашей фирме, предпочитают заниматься своими делами , а не моими . Причем такое безразличие проявляется даже на форумах 1С . Да и здесь, все думают, что я несу пустой бред , хотя, как я уже сказал, эти идеи позволили из «семерки» сделать «конфетку». В принципе тут уже все сказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 14:13:28 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
ЕВА 2000 Да, ради бога. Может Микрософт им заинтересуется. А если нет, то и нефтеналивной базе, тем более, это закрытие никчему! Это вряд ли. У MS к FoxPro очень садисстский интерес (ИМХО). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 14:17:19 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
BrainDamageЕВА 2000 Да, ради бога. Может Микрософт им заинтересуется. А если нет, то и нефтеналивной базе, тем более, это закрытие никчему! Это вряд ли. У MS к FoxPro очень садисстский интерес (ИМХО). Какой-нибудь свой супер MS-Lite-non-SQL придумают к С#, с крутыми быстрыми индексами, и методами выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 14:37:10 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmerymiksoftДанный код эмулирует лишь один из вариантов выполнения исходного SQL-запроса. Причем не самый оптимальный в случае, когда количество записей в таблицах table_1 и table_2 сопоставимо и велико.Пока это голословное утверждение. Если вы так говорите, то приведите вариант более оптимального решения по аналогии с моим. Количество записей в table_2 не принципиально, поскольку обращение к ним происходит по индексу.Именно, что принципиально. Вам известен алгоритм соединения слиянием? Ваш алгоритм имеет трудоемкость O(N*log(M)), где N и M - количество записей в первой и второй таблицах соответственно. Слегка модифицировав алгоритм соединения слиянием, можно получить алгоритм трудоемкостью O(N+M), что при M сопоставимом или большем,чем N, дает значительно меньший рост.EmerymiksoftА, во-вторых, где вся та работа с DBF и CDX (а не использование чужих библиотек), о которой вами написано столько текста? Работа с DBF продемонстрирована в «MFC-04. MMF чтение и создание DBF файлов вместо сериализации для виртуальных списков» , о чем уже не раз говорилось. Работа с CDX будет в следующей, пятой статье, которую я сейчас готовлю. Здесь она будет опубликована в разделе «С++».Нет, там теоретические изыскания. А вы покажите аналог обсуждаемого запроса именно в операциях с DBF и CDX. Процитирую вас же: EmeryДля подобных задач применять коммерческие движки баз данных достаточно глупо, а использование безплатных библиотек типа MySQL, MyLibSql и т.д. слишком громоздко для таких простых задач (особенно первой). Так что важный вывод, для написания относительно несложных шароварных программ с элементами баз данных лучше всего использовать небольшой по объему, общедоступный код (например, в моем варианте, который я со временем опубликую полностью), без явного применения SQL запросов, что должно сказаться положительно на качестве шароварных программ и их конкурентно способности.Вот и покажите "небольшой по объему код" без применения коммерческих движков и бесплатных библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 15:53:45 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonЯ так думаю, Emery разрабатывает весьма специализированные системы (скорее всего) однопользовательского доступа (1 клиент=1 база). Я нечто подобное тоже пописывал, но сейчас думаю сделал бы по другому. Я ориентируюсь на стандартный учет на предприятии: начислений / ресурсов / бухгалтерии. Такой учет не может быть монопольным, если речь не идет о сверхмалых фирмах. Многопользовательский режим реализуется как терминал – сервер. maytonПо поводу собственно идеи. Я полистал исходники Enery, почитал и понял, что речь идёт о "memory mapping DBF files" для сериализации состояния некоторых контролов, а также для иммитации работы встраиваемой СУБД. Насколько я понял, автор развивает эту идею и пропогандирует её для применения в промышленном масштабе. Если это так - тогда у меня есть несколько вопросов. Не совсем так. Имеется в виду написать клиента, который сможет, как свободно подключаться к некоторым коммерческим и безплатным серверным БД, так и вообще работать без двигателя. Типа как сделала 1С в версиях 7.7 и 8.х. mayton1) По сериализации контролов вроде-бы всё ясно. Здесь у меня нет возражений. Далее. Аспекты иммитации работы СУБД. Как известно современные СУБД используют режим "опережающей записи" транзакций в специальный кольцевой буфер, который находится на диске. (В MS-SQL - это просто монотонно растущий файл). В табличные файлы (сегмент данных) грязные строки (блоки строк) сбрасываются в фоновом "режиме" по таймеру или по достижению контрольных точек из оперативной памяти. Такой режим работы обеспечивает "мягкую" нагрузку на диск (только по записи) и обеспечивает 100% возможность воостановления ситемы после crashdown-s. Этот же режим даёт возможность максимально быстрого update для строк которые идут не последовательно, а в случайном порядке. (В качестве примера - те цифры которые приводил автор. 200 млн строк проапдейтить по сложному индексу. Априори известно что будут проапдейчены 33% из этого количества и расположены они в сегмента данных абсолютно случайно. Если применить технологию отображения памяти в файл (вы помните, что я насчитал 6.5 Гигабайт пространства в другом топике) то мы будем постоянно выходить на неоптимальные операции I/O. Здесь не поможет ни дисковый буфер с его жалкими 16-32Мб, ни технологии TCQ, т.к объём данных которые надо изменить чрезвычайно велик и расположен неупорядоченно). Возникает разумный вопрос, насколько глубоко автор реализовал подобные идеи дисковой оптимизации? Если да - то как? Если нет - то почему? Короче меня интересуют скорость OLTP и аналитических транзакций. Сюда-же можно добавить вопрос о восстановлении системы после сбоя класса "отключили питание". Если автор считает что мой пример с update слишком искусственный - то пускай обоснует. Вы явно торопите события. Я только в начале пути, чтобы сейчас решать подобные задачи. Пока мои цели проще. Просто переписать на C++ & MFC упрощенное ядро 1С77 и мои собственные конфигурации на нем с максимально возможной потенциальной масштабируемостью. Меня достаточно сильно привлекает режим интенсивного ввода – вывода значительного количества одновременно работающих клиентов. Постепенно я хочу выйти на такую ситуацию. И тогда будут задействованы все идеи, о которых вы упоминаете. Но сначала мне нужна «площадка» для старта в режиме интенсивных нагрузок. Как минимум для этого нужен хороший клиент серверных БД. Вот им мы сейчас и занимаемся. Упоминаемый вами режим работы достаточно интересен и с теоретической точки зрения, так что еще будет время исследовать его поподробнее. mayton2) Аспекты изоляции транзакций. Как? Можно-ли? Каким образом я могу получить доступ к такому DBF из multithreaded приложения? Как могу блокировать строку для обновления? Как раз vfp9t.dll , которую вы не хотите рассматривать и является мультитрэдовой. Прежде чем переходить на стороннюю разработку я хочу некоторое (небольшое) время попрактиковать данные методы «вручную», просто чтобы «прочувствовать» проблему. Если оставаться с «собственным движком», то от «простого» DBF с 4-х байтовой адресацией можно перейти к «расширенному» типа DBFX с 8-ми байтной адресацией. То же касается и ваших вопросов, самостоятельно это можно реализовывать по-разному (исходя из существующего опыта), а используя определенный сервер БД, то исходя из его возможностей. mayton3) Прочие технические ограничения. Цифры. Сколько можно создать таблиц? Какое макс. количество строк на таблицу поддерживается? Максимальное количество столбцов на таблицу? Какой макс. размер сегмента данных (физический объём базы)? Пока я буду оставаться с библиотекой VFP, то буду связан его ограничениями, которые известны (2 Гб на 1 DBF, 64 Кб на 1 запись – количество полей ограниченно этой величиной). Для собственного DBFX или какого-нибудь промышленного формата эти ограничения можно спокойно обойти. Но мне пока возможностей VFP достаточно. maytonВарианты с применением библиотек vfp9r.dll / vfp9renu.dll мы рассматривать не будем. Это неинтересно т.к код "от вендора" и говорить здесь особо не о чём т.к. нет новой идеи. Я имел в виду vfp9t.dll / vfp9renu.dll . Мне очень нравиться ядро VFP, поэтому я пока буду с ним. Насчет «новой идеи». vfp9t.dll является нестандартным COM-сервером и непосредственно использовать его вы запаритесь. В Google если и есть на это ссылки, то только на меня. Смотрите мои сообщения в теме: http://sql.ru/forum/actualthread.aspx?tid=601874#6466891][VS] Работа с dbf и далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 18:11:10 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
miksoftEmerymiksoftДанный код эмулирует лишь один из вариантов выполнения исходного SQL-запроса. Причем не самый оптимальный в случае, когда количество записей в таблицах table_1 и table_2 сопоставимо и велико.Пока это голословное утверждение. Если вы так говорите, то приведите вариант более оптимального решения по аналогии с моим. Количество записей в table_2 не принципиально, поскольку обращение к ним происходит по индексу.Именно, что принципиально. Вам известен алгоритм соединения слиянием? Ваш алгоритм имеет трудоемкость O(N*log(M)), где N и M - количество записей в первой и второй таблицах соответственно. Слегка модифицировав алгоритм соединения слиянием, можно получить алгоритм трудоемкостью O(N+M), что при M сопоставимом или большем,чем N, дает значительно меньший рост. В моем втором алгоритме вторая таблица не присутствует вообще! И не путайте данные, которые уже отсортированы (проиндексированы) и которые еще предстоит отсортировать. Кстати, лучше алгоритма слиянием алгоритм естественным слиянием для частично (или полностью) упорядоченных записей. Для случайных записей – ультрафиолетово. miksoftНет, там теоретические изыскания. А вы покажите аналог обсуждаемого запроса именно в операциях с DBF и CDX. В этой теме речь идет исключительно о концепции. Если будете следить за моей серией статей, то рано или поздно дождетесь реализации этой концепции в коде. Данный вопрос слишком объемный, чтобы раскрыть его с пол-пинка, miksoftВот и покажите "небольшой по объему код" без применения коммерческих движков и бесплатных библиотек. Со временем покажу, для того и затеял эту канитель с публикацией своих статей. Только для большинства это «напрасный» труд. Если вы тоже так считаете, тогда зачем ждать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 18:40:23 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmerymiksoftДанный код эмулирует лишь один из вариантов выполнения исходного SQL-запроса. Причем не самый оптимальный в случае, когда количество записей в таблицах table_1 и table_2 сопоставимо и велико. Пока это голословное утверждение. Если вы так говорите, то приведите вариант более оптимального решения по аналогии с моим. Вам его привели, по длине кода этот запорс оптимальнее (короче) Вашего. А ведь это очень простой запрос. Emery Вы хотите сказать, что непосредственный запрос Код: plaintext 1. Скорость исполнения запроса не всегда есть критерий. Emery Давайте, тогда большие тестовые таблицы table_1 и table_2 и мы замеряем эти варианты в VFP (или где хотите) и на С++. Правда на разных компьютерах это делать глупо, но что-нибудь придумать можно. При 100 однвременно работающих с БД пользователях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2009, 21:32:30 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
c127При 100 однвременно работающих с БД пользователях? А что, с базой данных может работать более одного пользователя???!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 02:36:32 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryПрежде чем переходить на стороннюю разработку я хочу некоторое (небольшое) время попрактиковать данные методы «вручную», просто чтобы «прочувствовать» проблему. Если оставаться с «собственным движком», то от «простого» DBF с 4-х байтовой адресацией можно перейти к «расширенному» типа DBFX с 8-ми байтной адресацией. То же касается и ваших вопросов, самостоятельно это можно реализовывать по-разному (исходя из существующего опыта), а используя определенный сервер БД, то исходя из его возможностей. Emery, давайте подводить неутешительные итоги. У меня к вам сейчас будет 1 вопрос. Вы собираетесь разрабатывать свою библиотеку (engine, ядро и т.п.) для обобщения ВСЕГО опыта, который вы получили, при разработке/сопровождении множества custom задач поддержки бизнеса и производства? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 10:51:09 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonEmery, давайте подводить неутешительные итоги. У меня к вам сейчас будет 1 вопрос. Вы собираетесь разрабатывать свою библиотеку (engine, ядро и т.п.) для обобщения ВСЕГО опыта, который вы получили, при разработке/сопровождении множества custom задач поддержки бизнеса и производства? Нет, не собираюсь. Есть в науке такой метод познания: «от простого к сложному» . Кроме того, что я программист, я еще исследователь программ . Мне важен не самописный клон чужой программы, а желание разобраться в концепции ее работы. Для этого совсем не обязательно моделировать ее 100% функционал. Достаточно смоделировать несколько ключевых процентов . Такому подходу, проникновению в суть вещей, я хочу научить других . Так что все гораздо проще, чем вам всем кажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 12:51:54 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryНет, не собираюсь. Есть в науке такой метод познания: «от простого к сложному» . Кроме того, что я программист, я еще исследователь программ . Мне важен не самописный клон чужой программы, а желание разобраться в концепции ее работы. Для этого совсем не обязательно моделировать ее 100% функционал. Достаточно смоделировать несколько ключевых процентов . Такому подходу, проникновению в суть вещей, я хочу научить других . Так что все гораздо проще, чем вам всем кажется. По моему, вы с изрядной долей фанатизма пытаетесь проникнуть в суть С++-кодинга. При этом вас сильно интересует сам процесс а не результат. Потому-как мне кажется того-же результата можно было-бы достичь более оптимальным путём с точки зрения человек-часов и прочих трудозатрат. Не кажется-ли вам, что ваш метод разработки ПО экономически невыгоден. И не кажется-ли вам, что вы хотите научить других ... ээ... ну как-бы это сказать.. неправильной идеологии программирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 13:05:47 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
maytonПо моему, вы с изрядной долей фанатизма пытаетесь проникнуть в суть С++-кодинга. При этом вас сильно интересует сам процесс а не результат. Потому-как мне кажется того-же результата можно было-бы достичь более оптимальным путём с точки зрения человек-часов и прочих трудозатрат. Не кажется-ли вам, что ваш метод разработки ПО экономически невыгоден. И не кажется-ли вам, что вы хотите научить других ... ээ... ну как-бы это сказать.. неправильной идеологии программирования? Ну, если вам не нравится моя «идеологии программирования», то почему вы думаете, что «неокрепшим умам» она обязательно понравится? Интернет большой и каждый ищет в нем то, в чем видит свою потребность. Что ж вы за всех расписываетесь. Напишите свой цикл статей или книгу с «правильным программированием» и пусть интернетчик выбирает из наших двух опусов, тот, который ему больше нравиться. Мне, например жуть, как не нравится, что наш ребенок обожает пустые бесконечные сериалы ни о чем, если не сказать жестче. Но я не могу на него повлиять и увлечь, скажем, научно-популярными фильмами из Интернета или хотя бы просто научить читать книги. Нет, он твердо предпочитает смотреть «информационный мусор» и совершенно не хочет читать никаких книг, ни хороших, ни плохих. Вот вам и «неокрепший ум»! В школе и ВУЗах тоже ведь учат тому, что в 90% практически не востребовано в жизни. Почему же тогда так «расстраиваться» по поводу нескольких лишних часов потраченных мною на «не нужные» цели? Зачем превращать программирование в ремесло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 13:58:29 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery, программирование всегда было ремеслом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 15:24:23 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовEmery, программирование всегда было ремесломкрасить заборы - тоже ремесло, но и художники есть, однако ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 16:39:54 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовпрограммирование всегда было ремеслом Не всегда, совсем как управление автомобилем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 19:54:07 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Изопропил, все что можно автоматизировать - ремесло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 20:09:56 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmerymiksoftДанный код эмулирует лишь один из вариантов выполнения исходного SQL-запроса. Причем не самый оптимальный в случае, когда количество записей в таблицах table_1 и table_2 сопоставимо и велико. Пока это голословное утверждение. Если вы так говорите, то приведите вариант более оптимального решения по аналогии с моим. Количество записей в table_2 не принципиально, поскольку обращение к ним происходит по индексу. Конечно, время запроса зависит от количества записей в table_1, но таково условие запроса, поскольку должны быть проверены ВСЕ его записи на предмет их не вхождения в table_2. Вообще-то конечно можно говорить о более эффективном запросе, но тогда нужно реорганизовывать нашу БД . Например, в table_1 добавить логический признак присутствия или отсутствия его идентификатора в table_2, который можно вычислять при вставке очередной записи в table_1. Пусть это будет поле IsId2 в table_1 . Тогда наш код немного упростится. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Вы хотите сказать, что непосредственный запрос Код: plaintext 1. Давайте, тогда большие тестовые таблицы table_1 и table_2 и мы замеряем эти варианты в VFP (или где хотите) и на С++. Правда на разных компьютерах это делать глупо, но что-нибудь придумать можно. Ну а, что? Мне вот стало это интересно. Давайте проведем эксперимент, только чуть усложним. Запрос будет выполнятся не один раз, а скажем в 20-30 параллельных сессиях раз так по 50 и замерим суммарный результат. Согласны? Я приведу результаты по Вашему выбору для MSSQL Express 2005 или 2008, т.е. можете потом сами проверить, только и Вы пожалуйста обеспечьте фальсифицируемость ваших результатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2009, 21:49:11 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
TheBatya, написал полную хуйню на фоксе парниша, могбы и не позорится )) Модератор: приподзабанен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2009, 00:05:02 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
TheBatyaНу а, что? Мне вот стало это интересно. Давайте проведем эксперимент, только чуть усложним. Запрос будет выполнятся не один раз, а скажем в 20-30 параллельных сессиях раз так по 50 и замерим суммарный результат. Согласны? Я приведу результаты по Вашему выбору для MSSQL Express 2005 или 2008, т.е. можете потом сами проверить, только и Вы пожалуйста обеспечьте фальсифицируемость ваших результатов. Мне не совсем понятна логика эксперимента. Зачем 30*50 = 1500 раз делать одно и тоже? Проще сделать запрос один раз и скопировать его результат 1500 раз, в чем тоже не слишком много смысла :) . Допустим моя программа делает подобную оптимизацию, тогда что мы докажем в своих экспериментах? Речь то шла не об этом, а о том, что нельзя написать запрос без операторов SQL, сопоставимый с ними по скорости выполнения. А эксперимент я предлагал другой, просто взять пару гектарных таблиц table_1 и table_2 на миллионы записей, таких, что они имеют общий идентификатор Id, множество пересечения которых от 10% до 90%. Предварительное условие, table_2 индексирована по Id, либо table_1 содержит поле IsId2 вхождаемости table_1.Id во множество table_2.Id. Результат должен быть в table_3. Эта задача была бы более интересной, но, откровенно говоря, мне сейчас больше хочется заниматься непосредственно программированием того, что я задумал, чем отвлекаться на такие «пустяки» :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2009, 08:44:57 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Emery Мне не совсем понятна логика эксперимента. Зачем 30*50 = 1500 раз делать одно и тоже? Проще сделать запрос один раз и скопировать его результат 1500 раз, в чем тоже не слишком много смысла :) . Допустим моя программа делает подобную оптимизацию, тогда что мы докажем в своих экспериментах? Речь то шла не об этом, а о том, что нельзя написать запрос без операторов SQL, сопоставимый с ними по скорости выполнения. А эксперимент я предлагал другой, просто взять пару гектарных таблиц table_1 и table_2 на миллионы записей, таких, что они имеют общий идентификатор Id, множество пересечения которых от 10% до 90%. Предварительное условие, table_2 индексирована по Id, либо table_1 содержит поле IsId2 вхождаемости table_1.Id во множество table_2.Id. Результат должен быть в table_3. Эта задача была бы более интересной, но, откровенно говоря, мне сейчас больше хочется заниматься непосредственно программированием того, что я задумал, чем отвлекаться на такие «пустяки» :) . Ну хорошо, не будем 50 раз, будем один, но в 100 параллельных сессиях. Тут то логика, надеюсь, ясна? Мы как бы подразумеваем )), что пользователей программы может быть больше одного. И все они могут ломануться за одним отчетом. Будем запускать именно Ваш скрипт, если уж он вам так интересен, (хотя на мой взгляд задача то тривиальная и интерес-то должны вызывать выборки похитрее). Emery но, откровенно говоря, мне сейчас больше хочется заниматься непосредственно программированием того, что я задумал, чем отвлекаться на такие «пустяки» :) . Ну лень, так лень. Зачем было вообще тогда начинать разговор о скорости. Программируйте тогда свой одноразовый велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2009, 09:57:13 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmerymiksoftEmerymiksoftДанный код эмулирует лишь один из вариантов выполнения исходного SQL-запроса. Причем не самый оптимальный в случае, когда количество записей в таблицах table_1 и table_2 сопоставимо и велико.Пока это голословное утверждение. Если вы так говорите, то приведите вариант более оптимального решения по аналогии с моим. Количество записей в table_2 не принципиально, поскольку обращение к ним происходит по индексу.Именно, что принципиально. Вам известен алгоритм соединения слиянием? Ваш алгоритм имеет трудоемкость O(N*log(M)), где N и M - количество записей в первой и второй таблицах соответственно. Слегка модифицировав алгоритм соединения слиянием, можно получить алгоритм трудоемкостью O(N+M), что при M сопоставимом или большем,чем N, дает значительно меньший рост. В моем втором алгоритме вторая таблица не присутствует вообще! И не путайте данные, которые уже отсортированы (проиндексированы) и которые еще предстоит отсортировать. Кстати, лучше алгоритма слиянием алгоритм естественным слиянием для частично (или полностью) упорядоченных записей. Для случайных записей – ультрафиолетово.Ваш второй алгоритм (кстати в его описании есть ошибка, приводящая к неверному результату, но заостряться на этом не будем) не является прямым аналогом исходного запроса, хотя бы потому, что требует модификации базы. И я ничего не путаю, оценку трудоемкости алгоритмов я делал исходя из оптимистичного случая, когда все необходимые индексы существуют, т.е. все что нужно - уже отсортировано. EmerymiksoftНет, там теоретические изыскания. А вы покажите аналог обсуждаемого запроса именно в операциях с DBF и CDX. В этой теме речь идет исключительно о концепции. Если будете следить за моей серией статей, то рано или поздно дождетесь реализации этой концепции в коде. Данный вопрос слишком объемный, чтобы раскрыть его с пол-пинка, miksoftВот и покажите "небольшой по объему код" без применения коммерческих движков и бесплатных библиотек. Со временем покажу, для того и затеял эту канитель с публикацией своих статей. Только для большинства это «напрасный» труд. Если вы тоже так считаете, тогда зачем ждать? :) Ну хотя бы из любопытства, чтобы увидеть как далеко может завести велосипедостроительство :) Только почему-то я уверен, что этот алгоритм будет верен и эффективен только в узком диапазоне внешних условий, значительно более узком, чем тот, в котором будет работоспособен и эффективен исходный запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2009, 18:17:06 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
Roman S. Golubinc127При 100 однвременно работающих с БД пользователях? А что, с базой данных может работать более одного пользователя???!!!! Нет конечно же, я пошутил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2009, 21:09:40 |
|
||
|
Альтернатива SQL запросам
|
|||
|---|---|---|---|
|
#18+
EmeryНет, не собираюсь. Есть в науке такой метод познания: «от простого к сложному» . Кроме того, что я программист, я еще исследователь программ . Мне важен не самописный клон чужой программы, а желание разобраться в концепции ее работы. Для этого совсем не обязательно моделировать ее 100% функционал. Достаточно смоделировать несколько ключевых процентов . Такому подходу, проникновению в суть вещей, я хочу научить других . А книги читать не пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2009, 21:13:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1344302]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
174ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 632ms |

| 0 / 0 |
