<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833529</guid>
        <pubDate>Tue, 30 Jun 2020 14:44:25 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833529</link>
        <description><![CDATA[Black_Dragon: Вообщем провел тест, тестовый набор 7,5 тыс записей<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">namespace MapBench</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;TEST_CLASS(TestMap)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t test_find_count = 400000000;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t test_all_count = 1000000;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;size_t test_arr = 8;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CMacAddr arrmac[8] = { CMacAddr(0x0036A9F36550), CMacAddr(0x002A23B31D00), CMacAddr(0x0025D2D1E778), CMacAddr(0x5661562BD93C), CMacAddr(0x40758E924A3C), CMacAddr(0xC1F0F3FD8CA0), CMacAddr(0x0B629D565000), CMacAddr(0xAE8FDD0C5E4C) };</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TEST_CLASS_INITIALIZE(ClassInitialize)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SNMPManager::getManager()-&#62;startup();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (SQLOpen())</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int size_bd = SQLReadBase();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Assert::IsTrue(size_bd &#62; 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SQLClose();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else Assert::Fail(L&quot;Don&#39;t Open&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TEST_CLASS_CLEANUP(ClassCleanup)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SNMPManager::getManager()-&#62;cleanUp();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TEST_METHOD(FindMap)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t iter = 0; iter &#60; test_find_count; ++iter)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t ind = 0; ind &#60; test_arr; ++ind)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;auto it = mainBase.find(arrmac[ind]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Assert::IsTrue(it != mainBase.end());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TEST_METHOD(AllMap)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (size_t iter = 0; iter &#60; test_all_count; ++iter)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (auto &amp;it : mainBase)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Assert::IsTrue(true);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#define ETHER_ADDR_LEN 6</div><div class="code_line">typedef u_char macaddr[ETHER_ADDR_LEN];</div><div class="code_line">union unmacaddr</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;macaddr m_mac; // mac адрес</div><div class="code_line">&nbsp;&nbsp; &nbsp;UINT64 &nbsp;m_64mac = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT32 m_l;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;UINT32 m_h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;} m_32x2;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unmacaddr() {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit unmacaddr(UINT64 mac) : m_64mac(mac) {}</div><div class="code_line">};</div><div class="code_line">class CMacAddr</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;unmacaddr u;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Создание нулевого МАК-адреса</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMacAddr() {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMacAddr(const macaddr ptr) { for (size_t i = 0; i &#60; ETHER_ADDR_LEN; ++i) u.m_mac[i] = ptr[i]; }</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMacAddr(const CMacAddr &amp;obj) { u = obj.u; }</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit CMacAddr(UINT64 obj) : u(obj) {};</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Создание МАК-адреса из текстовой строки, true - успешно</div><div class="code_line">&nbsp;&nbsp; &nbsp;static bool ConvertFromCStr(const CStr &amp;txt, CMacAddr *ma);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//CMacAddr(const CStr &amp;txt);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CStr Str() const;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CWideStr WStr() const;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool IsZero() const { return (u.m_64mac == 0); }</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool IsBroadcast() const { return (u.m_64mac == 0xFFFFFFFFFFFF); }</div><div class="code_line">&nbsp;&nbsp; &nbsp;CMacAddr &amp;operator=(const UINT64 &amp;obj) { u.m_64mac = obj; return *this; }</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool operator&#60;(const CMacAddr &amp;obj) const { return (u.m_64mac &#60; obj.u.m_64mac); }</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool operator&#62;(const CMacAddr &amp;obj) const { return (u.m_64mac &#62; obj.u.m_64mac); }</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool operator==(const CMacAddr &amp;obj) const { return (u.m_64mac == obj.u.m_64mac); }</div><div class="code_line">&nbsp;&nbsp; &nbsp;bool operator!=(const CMacAddr &amp;obj) const { return (u.m_64mac != obj.u.m_64mac); }</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">namespace std</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;template &#60;&#62; struct hash&#60;CMacAddr&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;using argument_type = CMacAddr;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;using result_type = size_t;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result_type operator()(const argument_type &amp;key) const</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return static_cast&#60;result_type&#62;(key.u.m_32x2.m_l + key.u.m_32x2.m_h);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">};</div><div class="code_line">typedef std::unordered_map&#60;CMacAddr, PDevice&#62; mapMacDev;</div><div class="code_line">mapMacDev &nbsp; mainBase;</div></ol></div></div></div></div><br>
<br>
std::map<br>
<span class="b-attach" data-size="5555" data-hits="7123" data-attach-id="62269" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=62269' title='Скачать файл' target='_blank'>test_map.png</a> (, : 7123)
		</span><br>
std::unordered_map<br>
<span class="b-attach" data-size="5026" data-hits="6998" data-attach-id="62270" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=62270' title='Скачать файл' target='_blank'>test_u_map.png</a> (, : 6998)
		</span>]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833477</guid>
        <pubDate>Mon, 29 Jun 2020 18:08:51 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833477</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833411'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-29T07:50:31+00:00">29.06.20, 07:50</time></span><div class='quote '>А если часто используется поиск и полный перебор по всем данным?</div></div><br>
По идее проще всего написать и проверить. Зависеть может много от чего - от адекватности хеш-функции, от частоты коллизий, от фазы Луны, в конце-концов :D]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833471</guid>
        <pubDate>Mon, 29 Jun 2020 16:34:24 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833471</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833468'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-29T16:06:28+00:00">29.06.20, 16:06</time></span><div class='quote '>or (auto &amp;itmain : mainBase)</div></div><br>
Ну если &gt; c++11, то где-то так.]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833468</guid>
        <pubDate>Mon, 29 Jun 2020 16:06:28 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833468</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833464'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-06-29T15:06:55+00:00">29.06.20, 15:06</time></span><div class='quote '>&quot;полный перебор&quot; - это вызов поисковой процедуры в условиях неупорядоченных данных</div></div><br>
for (auto &amp;itmain : mainBase)]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833464</guid>
        <pubDate>Mon, 29 Jun 2020 15:06:55 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833464</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833411'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-29T07:50:31+00:00">29.06.20, 07:50</time></span><div class='quote '>А если часто используется поиск и полный перебор по всем данным?</div></div><br>
Немношко неправильный вопрос&#33;<br>
<br>
&quot;часто используется поиск&quot; - это вывоз поисковой процедуры<br>
&quot;полный перебор&quot; - это вызов поисковой процедуры в условиях неупорядоченных данных<br>
<br>
Если ты хотел спросить &quot;а если часто используется поиск&quot; (гораздо чаще операций вставки) - то ответ прост: используй упорядоченные мапы. Хотя.. я об этом уже писал чуть ранее. Ну а если желаешь &quot;полный перебор&quot; - понятное дело, неупорядоченные мапы.]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833411</guid>
        <pubDate>Mon, 29 Jun 2020 07:50:31 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833411</link>
        <description><![CDATA[Black_Dragon: Кстати, по мап-у.<br>А если часто используется поиск и полный перебор по всем данным?]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833396</guid>
        <pubDate>Sun, 28 Jun 2020 20:29:44 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833396</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833385'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2020-06-28T18:42:55+00:00">28.06.20, 18:42</time></span><div class='quote '>Constant on average, worst case linear in the size of the container.</div></div><br>
Надеясь на лучшее - готовься к ужасному (С)]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833385</guid>
        <pubDate>Sun, 28 Jun 2020 18:42:55 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833385</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833227'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T14:24:23+00:00">26.06.20, 14:24</time></span><div class='quote '> Строго экономим на поиске. А у std::unordered_map он равен O(N). </div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Constant on average, worst case linear in the size of the container.</div></div><br>
В принципе, если не умничать и не писать хеши самому, либо не ломать специально хеш-функцию специально подобранными данными (на реальных данных это 100% не произойдёт), то можно надеяться на average.]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833353</guid>
        <pubDate>Sun, 28 Jun 2020 06:01:32 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833353</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833343'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-27T23:32:58+00:00">27.06.20, 23:32</time></span><div class='quote '>нужен супермощный комп с дичайшим объемом ОЗУ</div></div><br>
На мощном компе ты не оценишь быстродействие...  :lol: <br>
А сколько памяти было?<br>
При загрузке где узкое место? Диск был загружен или проц?<br>
На моем компе с обычного HDD 10Гб читались (в nul) 1 минуту.<br>
Имхо, оптимизируй добавлений данных...]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833343</guid>
        <pubDate>Sat, 27 Jun 2020 23:32:58 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833343</link>
        <description><![CDATA[FasterHarder: Все, проблема решена&#33; 1800+ строк кода, функций стало еще больше + они стали сложнее местами гораздо (где-то 450 строк взял из 1ой версии).<br>Все реализовал на чистейшей динамике. Все статические строковые массивы (марка и пр.) заменил на char * с выделением дин. памяти. Кол-во указателей какое-то дичайшее получилось.<br><br>Сделал тесты на 10 авто, 100, 1000, 10 000, 100 000, 1 000 000, 5 000 000, 25 000 000 (файлик текстовый весит 2.5+ Гигов). Во всех случаях поиск МГНОВЕННЫЙ. Как я понимаю, замеряем время до нахождения первого блока искомых данных (а потом они идут все последовательно, благодаря списку ссылок из узла дерева). От 5млн. комп начинает терять сознание, на 25млн. завис наглушняк (оперативку забрал всю теор.возможную) - ребут пришлось делать.<br><br>Самая тяжелая операция: загрузка данных в память. Для 1млн. длится несколько минут(даже вроде больше 10 длилось). При очистке памяти аналогично.<br>Производительность по сравнению с 1ой версии увеличена в +бесконечность (особенно при увеличении объема входных данных). <br><br>Если добавить балансировку главного дерева (вспомогательных бессмысленно, вроде), можно еще ускорить поиск, например (по коду, хотя на 1млн. авто поиск коду был ПОЧТИ мгновенным, правда не тестировал вырожденные случаи), но балансировать дерево даже на 1млн. авто - жесть.<br><br>Как я понимаю, ускорить импорт данных не представляется возможным. Фундаментально структуру входных файлов не изменить.<br>Вижу лишь единственный полуминус - данные как бы пришлось закачивать в двойном экземпляре в память (всего лишь в двойном&#33;&#33;). С другой стороны, ну, вот, например, марка машины &quot;Jaguar&quot;, занимаем 7байт информации. Если заменить на целое число, то будет 4байта (или 2 байта). Благодаря указателям (char*) на каждое строковое данное было использовано минимально требуемое число памяти, не сильно превышающее числовой код (раньше была константа = 100 символам для всех строк, кроме краткого описания, там было под 500). Тут все как бы оптимально&#33;<br><br>Кардинально программу уже менять стопудова не придется, т к:<br>и тай сойдет (с) - и реально сойдет&#33;<br><br>P.S. сложно проводить тесты на больших объемах данных, нужен супермощный комп с дичайшим объемом ОЗУ...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833265</guid>
        <pubDate>Sat, 27 Jun 2020 02:47:58 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833265</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>Black_Dragon</strong>, в твоем предыдущем сообщении - цитата не моя. Я и так знаю количество красных машин в мире&#33;]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833241</guid>
        <pubDate>Fri, 26 Jun 2020 15:47:22 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833241</link>
        <description><![CDATA[Black_Dragon: <strong class='tag-b'>JoeUser</strong><br>
Цель была в другом: типа используй готовые наработки.  :lol: <br>
<br>
У меня раньше быль файлик , шаблон простого списка с минимум функций (кода на два экрана), кочевал из проекта в проект.<br>
Потом в какой-то дискуссии натолкнулся на набор из std, плюнул на свой файлик....<br>
<br>
Но тут смотря какая цель, тебе просто нужен функционал и ты используешь готовое, или хочешь поковыряться под капотом этого функционала сам.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833207'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T10:36:09+00:00">26.06.20, 10:36</time></span><div class='quote '>главное дерево построено по айдишникам авто</div></div><br>
Да, и оно же является основным хранилищем всех данных.<br>
<br>
Если поиск идет больше 10с и там есть главный цикл, то используй OpenMP или изобретай ухищрения....<br>
<br>
Геометрическая обработка<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">--- Загрузка ---<br>
Количество прочтенных строк файла - 676537<br>
Количество загруженных полилиний - 12094<br>
Количество созданных линий - 124421<br>
Затраченное время: 00:00:01.4973356<br>
--- Создаем базу линий ---<br>
Затраченное время: 00:00:00.1499118<br>
--- Обработка ---<br>
Количество обработанных полигонов - 45832<br>
Затраченное время: 00:04:34.3432271<br>
Общее время: 00:04:35.9934664<br>
--- Конец ---<br>
</div></div><br>
Тоже, но с ухищрениями<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">--- Загрузка ---<br>
Количество прочтенных строк файла - 676537<br>
Количество загруженных полилиний - 12094<br>
Количество созданных линий - 124421<br>
Затраченное время: 00:00:01.5067219<br>
--- Создаем базу линий ---<br>
Затраченное время: 00:00:00.1795199<br>
--- Обработка ---<br>
Количество обработанных полигонов - 45832<br>
Затраченное время: 00:00:03.1831981<br>
Общее время: 00:00:04.8764213<br>
--- Конец ---<br>
</div></div><br>
OpenMP (6C/12T)<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">--- Загрузка ---<br>
Количество прочтенных строк файла - 676537<br>
Количество загруженных полилиний - 12094<br>
Количество созданных линий - 124421<br>
Затраченное время: 00:00:01.6982313<br>
--- Создаем базу линий ---<br>
Затраченное время: 00:00:00.1680519<br>
--- Обработка ---<br>
Количество потоков: 12<br>
Количество обработанных полигонов - 45832<br>
Затраченное время: 00:00:32.8862290<br>
Общее время: 00:00:34.7565014<br>
--- Конец ---<br>
</div></div><br>
Ухищрения + OpenMP<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">--- Загрузка ---<br>
Количество прочтенных строк файла - 676537<br>
Количество загруженных полилиний - 12094<br>
Количество созданных линий - 124421<br>
Затраченное время: 00:00:01.4844383<br>
--- Создаем базу линий ---<br>
Затраченное время: 00:00:00.1695467<br>
--- Обработка ---<br>
Количество потоков: 12<br>
Количество обработанных полигонов - 45832<br>
Затраченное время: 00:00:01.6181071<br>
Общее время: 00:00:03.2770786<br>
--- Конец ---<br>
</div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833227'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T14:24:23+00:00">26.06.20, 14:24</time></span><div class='quote '>вот, например, будет такой запрос: &quot;получить кол-во красных машин&quot;. ОПА&#33;<br>
на сильноветвящихся деревьях (к чему я тяготею) это будет сделано почти моментально, а тебе придется просмотреть ВСЕ УЗЛЫ главного дерева и проверить</div></div><br>
Я же писал, главное дерево с данными и деревья по основным поисковым запросам с ссылками на основе данные.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833227</guid>
        <pubDate>Fri, 26 Jun 2020 14:24:23 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833227</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833197'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:01:22+00:00">26.06.20, 09:01</time></span><div class='quote '>std::unordered_map</div></div><br>
Хотя я в этой теме <em class='tag-i'>persona non grata</em>, но выскажусь ... ты частично не прав&#33; Все зависит от &quot;режима&quot; использования&#33;  Если де-факто редкие модификации и частый поиск - следует наоборот использовать упорядоченную карту <em class='tag-i'>std::map</em> (т.к. ее порядок по поиску = O(lgN)). Строго экономим на поиске. А у <em class='tag-i'>std::unordered_map</em> он равен O(N). Но если модификация данных происходит значительно чаще поиска - ты на 117% прав&#33; Тогда важнее успеть &quot;занести&quot; данные. И <em class='tag-i'>std::unordered_map</em> будет идеален.]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833207</guid>
        <pubDate>Fri, 26 Jun 2020 10:36:09 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833207</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T10:24:45+00:00">26.06.20, 10:24</time></span><div class='quote '>Как это нет? Оно в дереве лежит, где поиск быстрее линейного перебора.</div></div><br>
ты бы уточнял, о каком дереве речь: главном или вспомогательном/ых.<br>
главное дерево построено по айдишникам авто, там все остальные поля в разнобой.<br>
<br>
если просматривать все узлы дерева, то уже по боку, список (частный случай вырожденного дерева) это или дерево - сложность одна - просмотреть все элементы.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T10:24:45+00:00">26.06.20, 10:24</time></span><div class='quote '>По уникальному коду ты будешь сразу же быстро получать всю инфу по авто.</div></div><br>
я нигде выше этого и НЕ отрицал) ну опять-таки, если под кодом понимается айдишник<br>
<br>
<br>
здесь без сильноветвящихся деревьев не обойтись, лишь благодаря им можно в &quot;миллионы&quot; раз поднять производительность, иначе всегда полный скан главного дерева.<br>
меня люто смущает, что нужно правильно закодировать эти сильноветвящиеся&#33; там до хрена нюансов при удалении, вставке. на этом этапе, скорее всего встряну на глушняк, хотя...<br>
ведь может быть ситуация, когда удаляется авто (последняя белая), то нужно вычеркивать белый цвет из справочника. можно оставить &quot;на будущее&quot; с NULL-ссылками.<br>
<br>
короче, ладно&#33; точно знаю, что сейчас уже знаю, как можно значительно улучшить все по сравнению с 1-ой версией. Кстати, она неплохая, когда данных мало, на десятках миллионов авто система умрет)) и по памяти и по скорости...ладно, а что сделать-то, а ничего...только переписывать&#33;<br>
<br>
ЗЫ: по-разному делать можно, но самый эффективный вариант (особенно по памяти требуемой) самый сложный в реализации. ладно&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T10:42:34+00:00">26.06.20, 10:42</time></span></span><br>
и последнее&#33;<br>
вот, например, будет такой запрос: &quot;получить кол-во красных машин&quot;. ОПА&#33;<br>
на сильноветвящихся деревьях (к чему я тяготею) это будет сделано почти моментально, а тебе придется просмотреть ВСЕ УЗЛЫ главного дерева и проверить у каждого цвет на равенство с красным. Отличие в скорости может быть в &quot;десятки миллионов&quot; раз...ну или в тысячи...в общем быстрее гораздо.]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833206</guid>
        <pubDate>Fri, 26 Jun 2020 10:24:45 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833206</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833205'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T10:05:11+00:00">26.06.20, 10:05</time></span><div class='quote '>Есть всегда сканировать все узлы главного дерева при поиске, то нет НИКАКОГО прееимущества поиска.</div></div><br>
Как это нет? Оно в дереве лежит, где поиск быстрее линейного перебора.<br>
И не забывай, тебе на экран надо выводить по каждому авто всю инфу, когда человек будет листать список... По уникальному коду ты будешь сразу же быстро получать всю инфу по авто.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833205</guid>
        <pubDate>Fri, 26 Jun 2020 10:05:11 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833205</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833204'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:49:16+00:00">26.06.20, 09:49</time></span><div class='quote '>миллиард авто минус 15 тысяч, что с ними будешь делать?</div></div><br>
в смысле?&#33; они лежат там себе, греются на солнышке, ждут своей обработки)<br>
<br>
короче&#33; я определился&#33; нужно делать через сильноветвящиеся деревья.<br>
справочники ТОЛЬКО для строковых данных. Все числа хранятся в узле главного дерева. Какой смысл выносить число в справочник, если код тоже целое число, лол<br>
справочников будет штук 5-6.<br>
там еще есть поле &quot;тип кузова&quot; - вообще будет перечисление - через целое число.<br>
<br>
Есть всегда сканировать все узлы главного дерева при поиске, то нет НИКАКОГО прееимущества поиска. Искать нужно начинать через спец.дерево (цветовое, марочное и пр.), а уже потом уточнять информацию через другие деревья. <br>
<br>
этот вариант кодировать сложнее&#33; если не получится, то перейду на скан всегда главного дерева, но это менее эффективно, разумеется&#33; Лишь в некоторых случаях будет производительнее. А вообще все это оч. сильно зависит от типа входных данных.<br>
<br>
На данный момент мне кажется, что я очень глубоко понимаю эту задачу и проблемы, которая она ставит. <br>
Когда будет 2-й вариант программы, откроются новые страшные подводные камни и придется все перекраивать)) хехе<br>
<br>
ты говоришь про масштабирование системы...хм...ну, допустим появляется НОВОЕ поле у авто (ну, например, степень изношенности, там типа бывает 35 видов ее), новый справочник со степенью изношенности добавили. все вспомогательные деревья перестраиваться не будут.<br>
да, когда полей ооооочень много, штук 200, тогда оч.долго будет доставать всю информацию по кусочкам из каждого справочника - проще просканировать главное дерево.<br>
<br>
я посчитал конкретно, сколько мне нужно справочников: 4 штуки всего.<br>
кстати поле &quot;краткое описание&quot; по факту является уникальным (ну там могут быть случайные совпадения вплоть до буквы) придется хранить в узлах главного дерева.<br>
<br>
ладно, я понял..<br>
надо еще подумать немного и хватит) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T10:14:07+00:00">26.06.20, 10:14</time></span></span><br>
можно предельно упростить (за счет памяти дикой)<br>
если включить все данные в узел главного дерева + все деревья построить для нужно поля. это по факту отказаться от связи по кодам&#33;<br>
тогда поиск - почти моментальный, просто сверхбыстрый<br>
сортировка - почти моментальная, тупо обход нужного вспомогательного дерева<br>
<br>
единственынй минус - хранить избыточные данные в колоссальном кол-ве&#33; хм...<br>
но быстродействие будет дичайшим&#33;&#33;&#33;&#33;]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833204</guid>
        <pubDate>Fri, 26 Jun 2020 09:49:16 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833204</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833203'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:32:07+00:00">26.06.20, 09:32</time></span><div class='quote '>Но, если машин красных, всего 15 тысяч, то во втором случае потребуется 15 * 8 = 90 тысяч. Что эффективнее первого варианта в 10 раз.</div></div><br>
миллиард авто минус 15 тысяч, что с ними будешь делать?<br>
Это твое убыстрение не по цвету в общем, а по конкретному цвету, т.е. по красному, значит остальные цвета в пролете.<br>
<br>
Если тебе надо будет добавить еще поле или еще какие-то деревья, код переделывать не нужно.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833203</guid>
        <pubDate>Fri, 26 Jun 2020 09:32:07 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833203</link>
        <description><![CDATA[FasterHarder: вообще, тут глобальный момент такой: что быстрее (сделать один раз пробег по всем узлам главного дерева (там мжет быть под лярд данных) и очень много раз по вспомогательным, учитывая, что узлов во вспомогательных не больше 200 (по факту будет гораздо меньше)...<br>
<br>
если примерное одинаково, тогда удобнее один раз по главному дереву, выдергивая по одной ссылке нужны данные&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T09:43:19+00:00">26.06.20, 09:43</time></span></span><br>
Вот, последний момент здесь остался&#33;<br>
Допустим, миллиард авто. (можно взять просто сто).<br>
Из них 150 миллионов красных)<br>
<br>
в одном случае чтобы получить все красные авто (+ все остальные поля, разумеется), нужно просканировать все узлы главного дерева). Ведь главное дерево упорядочено НЕ по цвету, а по своему АЙДИ. И это касается любого поиска, кроме поиска по айди&#33;<br>
<br>
в другом случае, чтобы получить все красные деревья - идем в цветовое дерево. МОменально определяем цвет и все ссылки на узлы главного дерева. Но этого недостаточно, нужно еще для каждой машины найти другие атрибуты. Всего 150 млн. красных. Значит для каждого другого цвета по 150 млн. раз ищем нужные атрибуты. Если деревьев еще 8 штук, то будет 150 * 8 = 1.2 млрд. узлов нужно просмотреть. Это чуть менее эффективно, чем в случае №1.<br>
<br>
Но, если машин красных, всего 15 тысяч, то во втором случае потребуется 15 * 8 = 90 тысяч. Что эффективнее первого варианта в 10 раз.<br>
<br>
Считаю, что 2й вариант производительнее в среднем&#33; Но его сложнее кодировать, чем 1й... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T09:44:20+00:00">26.06.20, 09:44</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833202'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:30:24+00:00">26.06.20, 09:30</time></span><div class='quote '>У тебя справочники это: Цвет, Марка и т.д., которые ты заменил цифровыми ИД.<br>
Основная запись и состоит из кучи ИД и некоторые оставшихся полей, например, вин, год, количество пассажиров, ФИО и т.д.</div></div><br>
я это описывал выше&#33;]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833202</guid>
        <pubDate>Fri, 26 Jun 2020 09:30:24 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833202</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833201'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:12:59+00:00">26.06.20, 09:12</time></span><div class='quote '>ведь у нас в главной таблице обычно хранятся внешние ключи на справочники. а в справочниках реальные данные.</div></div><br>
У тебя справочники это: Цвет, Марка и т.д., которые ты заменил цифровыми ИД.<br>
Основная запись и состоит из кучи ИД и некоторые оставшихся полей, например, вин, год, количество пассажиров, ФИО и т.д.<br>
<br>
Получил ты эту запись и из массивов-справочников вытащил текстовые данные полей. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T09:31:07+00:00">26.06.20, 09:31</time></span></span><br>
+<br>
Будет избыточность, но это это даст быстродействие. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T09:31:46+00:00">26.06.20, 09:31</time></span></span><br>
+<br>
Ну и по хожу жизни программы ты можешь просто генерировать любые деревья на ходу.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833201</guid>
        <pubDate>Fri, 26 Jun 2020 09:12:59 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833201</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833200'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:07:36+00:00">26.06.20, 09:07</time></span><div class='quote '>У тебя все данные хранятся в одной структуре, которая хранится в главном дереве по уникальном коду.</div></div><br>
я понимаю, о чем ты, но это не много не соот-ет духу БД.<br>
ведь у нас в главной таблице обычно хранятся внешние ключи на справочники. а в справочниках реальные данные.<br>
<br>
я планирую также.<br>
просто ты предлагаешь вспомогательные деревья сделать чисто числовыми, оставив данные в главном дереве, а я хочу вынести данные в справочники (как это делается при нормализации в таблиц БД)<br>
<br>
+зачем тебе хранить дубликаты данных в главном дереве.<br>
<br>
не-не, у меня все шикарно)<br>
ну не знаю, может есть какая-то грубая ошибка, но пока не вижу&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T09:21:00+00:00">26.06.20, 09:21</time></span></span><br>
вообще, как пишут в разных пособиях по SQL, мол, когда ищем информацию из связанных таблиц, итерпретатор (или кто там делает всю работу по поиску данных) начинает просматривать построчно все записи главное таблицы, а потом для каждой записи по коду ищет соот-вие в нужном справочнике, чтобы выдернуть реальное данное (а не код).<br>
<br>
мне же НЕ придется этого делать&#33;<br>
скажут, хочу все машины ЗЕЛЕНОГО цвета. Я не буду сканировать все узлы данного дерева (если что, их там миллионы может быть). Тупо уйду в дерево, отвечающее за цвет, там найду узел с &quot;зеленым цветом&quot; и через массив ссылок узнаю, все нужные мне машины. Это эффективнее в миллионы раз может быть, чем перебирать все узлы главного дерева...<br>
<br>
я пока так это понимаю]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833200</guid>
        <pubDate>Fri, 26 Jun 2020 09:07:36 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833200</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833198'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T09:02:18+00:00">26.06.20, 09:02</time></span><div class='quote '>т е придется просмотреть ВСЕ деревья, чтобы собрать воедино реальные данные</div></div><br>
Нет.<br>
У тебя все данные хранятся в одной структуре, которая хранится в главном дереве по уникальном коду. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-26T09:09:06+00:00">26.06.20, 09:09</time></span></span><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct Car {</div><div class="code_line">ULONG m_VIN;</div><div class="code_line">ULONG m_Firma;</div><div class="code_line">ULONG m_Model;</div><div class="code_line">ULONG m_Color;</div><div class="code_line">//....</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833198</guid>
        <pubDate>Fri, 26 Jun 2020 09:02:18 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833198</link>
        <description><![CDATA[FasterHarder: и, например, если потребуется тупо вывести информацию о конкретном авто (задается уник. айдишник авто), то:<br>1. ищем его в бинарном дереве поиска с данными(выраженными в числах) и запоминаем все внешние ключи (целые числа)<br>2. запускаем поиск по дереву нужной марки (код цвета мы взяли из этапа №1)<br>3. поиск по дереву нужного производителя <br>и т д.<br><br>10. вывод данных на экран<br><br>т е придется просмотреть ВСЕ деревья, чтобы собрать воедино реальные данные, а не их числовые айдишники. Учитывая то, что эти деревья небольшие, то все будет мгновенно.<br><br>это ладно, когда уникальных атрибутов не много. А если было бы какое-то поле типа данных float (дробное) с большим разбросом. В этом случае это дерево было бы по объему не меньше главного дерева. В этом случае это поле можно включить в главное дерево и не создавать для него справочника отдельного.<br><br>т е в справочники выносим частоповторяющуюся информацию, а редкую включаем в главное дерево. <br>понятно...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833197</guid>
        <pubDate>Fri, 26 Jun 2020 09:01:22 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833197</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833196'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T08:49:13+00:00">26.06.20, 08:49</time></span><div class='quote '>Единственная проблема, чисто техническая, правильно обрабатывать сильноветвящиеся деревья при удалении, вставке, апдейте.</div></div><br>
Юзай готовые решения.<br>
std::unordered_map  :D]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833196</guid>
        <pubDate>Fri, 26 Jun 2020 08:49:13 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833196</link>
        <description><![CDATA[FasterHarder: еще такой момент&#33;<br>
если в наличии у нас 50 млн. машин, то это НЕ означает, что у них уникальные атрибуты. Стран-производителей, ну 100, ну макс. 200 (ну не миллионы, однозначно :) ). Аналогично по цвету, по макс. скорости, по кол-ву пассажиров и т.д.<br>
<br>
В итоге, нужно все нормализовать (как правильно заметил <strong class='tag-b'>Black_Dragon</strong>), создать для каждого поля справочники со своими айдишниками и уникальными значениями.<br>
исходные данные заменить на соот-щие коды из этих справочников. В итоге исходные данные превратятся В ЦЕЛЫЕ ЧИСЛА - крайне эффективно хранить в памяти.<br>
<br>
Возьмем цвет для примера. В наличии 1200 машин зеленых и 1700 красных и 500 черных. По факту в справочнике цветов 3 записи с кодами (1 - зеленые, 2 - красный, 3 - черный). Получаем дерево из ТРЕХ узлов, но ключом выступает цвет при построении (а не код, т к если брать код, то все вырождается в список). И у каждого узла есть поле - массив указателей на все машины в главном дереве соот-щего цвета. Т е у корня (там зеленый цвет) будет массив указателей на 1200 узлов в главное дерево и т.д.<br>
<br>
Это дает предельно быстрый поиск. Сортировать НЕ нужно, просто сделать ЛКП обход, т к информация в деревьях уже упорядочена при построении.<br>
Можно сразу все грузить в память, т к это ничтожно мало занимает. <br>
<br>
Единственная проблема, чисто техническая, правильно обрабатывать сильноветвящиеся деревья при удалении, вставке, апдейте.<br>
<br>
Вот она, идеальная структура, <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">только сейчас стало понятно, что должно быть</span></strong>) Да уж...нужно ВСЕ перекраивать (ну кроме импорта / экспорта данных). Эх, ну и ладно)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833194</guid>
        <pubDate>Fri, 26 Jun 2020 08:37:44 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833194</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833192'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T08:18:47+00:00">26.06.20, 08:18</time></span><div class='quote '> сделать связь не через строки, а через целые числа (по айдишнику)</div></div><br>
Да. Упрощает код, так как везде ИД. Ну и быстрее будет работать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833192'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T08:18:47+00:00">26.06.20, 08:18</time></span><div class='quote '>ГЛАВНОЕ бинарное дерево поиска (ключ у него идентификатор авто)</div></div><br>
Да. И оно отвечает за сохранность данных.<br>
Во всех остальных деревьях хранятся ссылки на эти данные.<br>
<br>
Дальше я вижу так: деревья по главным полям.<br>
Но размер этих деревьев будет очень мал, сколько у нас фирм? сколько у нас моделей у фирмы? Даже если взять года, то 100 всего будет.<br>
Толку ноль...<br>
Достраивать деревья во время поиска. Первичный Фирма, а там уже по годам и будет проще потом двигаться по разным годам.<br>
<br>
Но если ключи сделать комбинацией полей... Фирма+Модель+Цвет (ID1*1000000 + ID2*1000 + ID3), Фирма+Цвет (ID1*1000 + ID2) и т.п.<br>
<br>
Вообщем, все упирается в поиск]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833192</guid>
        <pubDate>Fri, 26 Jun 2020 08:18:47 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833192</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833189'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T07:56:23+00:00">26.06.20, 07:56</time></span><div class='quote '>Ягуар, Опель, ВАЗ и т.д. Красный, Зеленый и т.д. и многие другие поля, это справочники, они кодируются 1, 2, 3 и т.д.</div></div><br>
как минимум это не поля, а значения полей конкретных объектов структуры, но пока на мой взгляд это не важно вообще. Называть можно как угодно.<br>
а, я понял, ты хочешь создать для марок ОДТЕЛЬНУЮ таблицу с целочисленным первичным ключом и сделать связь не через строки, а через целые числа (по айдишнику). И так для каждого поля. Понятно, вот почему был призыв к нормализации. В итоге получаем солнцеобразную структуру БД: в центре данные и лучики исходят к 8 справочникам. Что характерно справочники между собой НЕ имеют ни одной связи. Такое оч.редко бывает в норм. БД)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833189'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T07:56:23+00:00">26.06.20, 07:56</time></span><div class='quote '>Структура да. </div></div><br>
так, ясно. У меня реализовано не так, ну частично так. На миллиарды процентов Макконел прав, когда говорит, что оптимальное решение проблемы приходит только тогда, когда сделана минимум одна попытка решить эту проблему неэффективно. Как правило это приводит к ПОЛНОМУ переписыванию проекта (иногда больше 1го раза, хехе). <br>
<br>
И тут есть такой важный момент с точки зрения памяти и эффективности.<br>
Вот мы прочитали данные (ну, пусть из файла или с клавиатуры или еще как-нибудь - не важно вообще) и построили ГЛАВНОЕ бинарное дерево поиска (ключ у него идентификатор авто). Это как бы главное дерево для хранения данных.<br>
<br>
Можно СРАЗУ построить все бинарки вспомогательные для всех полей сущности &quot;Авто&quot;, их там штук 8. Т е обязательно строим главное дерево и можно построить 8 дополнительных (для каждого поля, по которому будет идти поиск, сортировка и пр.)<br>
Минус первый - нужно много памяти. Хотя, если в узлах будут храниться целые числа, то sizeof(long) * 8 * &lt;количество машин&gt; + на указатели что-то там по мелочевке.<br>
Во-вторых, если есть поля, по которым редко происходит обработка, ну, например, малое число запросов по полю &quot;страна-производитель&quot;, то в таких случаях эту бинарку можно строить по мере необходимости? имеет смысл? (с др.стороны я уже писал раньше, что обращение к любому полю авто равновероятно)<br>
в-третьих, когда меняются данные (удаление, вставка, апдейт), то сразу перестраиваем ГЛАВНОЕ дерево + нужно отследить все ссылки из всех бинарок на эти изменения. Чем больше вспомогательных деревьев, тем больше работы по этим указателям.<br>
<br>
У меня в исходном проекте происходит некое дублирование всех данных об авто в памяти + деревья строятся по мере необходимости, т е в памяти висит ТОЛЬКО главное дерево с данными, а когда, например, нужно получить список авто отсортированных по марке, то я строию эту бинарку и вывожу ее на экран, после этого дропаю из памяти. это проблема...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833189</guid>
        <pubDate>Fri, 26 Jun 2020 07:56:23 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833189</link>
        <description><![CDATA[Black_Dragon: <strong class='tag-b'>FasterHarder</strong><br>
Ягуар, Опель, ВАЗ и т.д. Красный, Зеленый и т.д. и многие другие поля, это справочники, они кодируются 1, 2, 3 и т.д.<br>
<br>
Структура да.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833185</guid>
        <pubDate>Fri, 26 Jun 2020 07:10:14 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833185</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833166'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-26T02:55:17+00:00">26.06.20, 02:55</time></span><div class='quote '>ФИО</div></div><br>
ягуар Сергей Иванович<br>
опель Виктор Сергеевич<br>
ты об этом ведать...<br>
<br>
прочитал два раз твой ответ - ничего не понял, вот ничего не понял<br>
прочитал еще раз - ничего не понял<br>
какие справочники (под справочником в теории БД обычно понимают таблицы, содержащие редкоизменяемую инфу, еще ее называют статической инфой), какие еще массивы (мне деревья нужны) и т.д.<br>
<br>
я приложил картинку, и спросил &quot;да или нет?&quot;. так и не понял, так &quot;да или нет&quot;]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833166</guid>
        <pubDate>Fri, 26 Jun 2020 02:55:17 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833166</link>
        <description><![CDATA[Black_Dragon: <strong class='tag-b'>FasterHarder</strong><br>
Кроме ФИО, все остальные поля - это справочники, по ним тупо отдельный массив с индексами (число), которые и будут использоваться.<br>
По этому, структура для всех случаев будет идентична.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833141</guid>
        <pubDate>Thu, 25 Jun 2020 17:22:59 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833141</link>
        <description><![CDATA[swf: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833131'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T13:59:01+00:00">25.06.20, 13:59</time></span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>список в прологе стандартно организован в виде дерева(голова - хвост).</div></div><br>
Голова-хвост - это односвязный список. В принципе, можно трактовать его, как абсолютно вырожденное дерево, но зачем?</div></div><br>
Бинарное дерево<br>
<img class='tag-img' src='https://i.ibb.co/8sWJfvG/image.png' alt='user posted image'>]]></description>
        <author>swf</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833140</guid>
        <pubDate>Thu, 25 Jun 2020 17:09:03 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833140</link>
        <description><![CDATA[FasterHarder: а это вот такая архитектура должна быть на уровне структур данных??<br>
<br>
<span class="b-attach" data-size="79114" data-hits="683" data-attach-id="62217" data-attach-post-id="3833140">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3833140&amp;attach_id=62217' title='Скачать файл' target='_blank'>_________________________________.png</a> (, : 683)
		</span>]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833135</guid>
        <pubDate>Thu, 25 Jun 2020 14:58:23 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833135</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833133'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T14:54:04+00:00">25.06.20, 14:54</time></span><div class='quote '>Без понятия как оценить производительность работы прожки. Сравнивать не с чем. Данных нет, да и толку от них, все равно даже миллион записей не вывести на экран.</div></div><br>
В чем проблема?<br>
База есть, делаем разные алгоритмы, а потом для каждого запускаем идентичные операции и мерим время.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833133</guid>
        <pubDate>Thu, 25 Jun 2020 14:54:04 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833133</link>
        <description><![CDATA[FasterHarder: А у меня тем временем все готово&#33; хехе<br>
<br>
По факту получилось:<br>
- 1300+ строк <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">высокопроизводительного</span></strong> кода)<br>
- 50+ функций, выполняющих строго одну операцию<br>
- около 10 структур данных (очень похожих по составляющим)<br>
----------------------------------------------------------<br>
все прекрасно работает, интерфейс предельно дружественный и интуитивно понятный (куча подсказок и пр.).<br>
глобальной обработки ошибок нет, так, местами есть кой какая защита<br>
утечек в памяти не наблюдается (а там есть чему утекать, хехе)<br>
система хорошо поддается расширению, вроде, хотя...может нет&#33;<br>
ход документирован, старался делать по Макконелу) (этого чувака люто уважаю и читаю его книги запоем&#33;)<br>
основная структура данных: двоичное дерево поиска с возможностью хранения дубликатных ключей БЕЗ балансировки<br>
<br>
Единственное место, где мне пришлось отойти от бинарок - обработка количества пассажиров, находящихся в машине. Оно варьируется от 1 до 6. Я так чего-то прикинул, ну максимально тупо строить бинарку, хранящую всего 6 различных ключей (с дубликатами, разумеется). Если дано 90 млн. машин, у которых кол-во пассажиров равно 3 и ОДНА машина с кол-вом = 4 и эта машина (с 4мя пассажирами) добавляется последней в дерево, то все вырождается в ЛОС, при этом 4ка висит на хвосте, т е чтобы найти все машины с 4мя пассажирами пришлось бы просканировать 90млн узлов дерева. Нет уж, увольте, требования требованиями, но малейшая логика должна быть&#33; Сделал массив списков, состоящий из 6 элементов и из каждого узла идет подписок на нужное число пассажиров. Дерево ли это? ну издалека похоже) Вообще, нет, ну, если допустить, что у узла может быть один потомок, то да)<br>
<br>
Очень плохо, что структуры в СИ не имеют индексацию своих полей (хотя где-то видел пример через добавление указателей и чего то там мутили с объединениями, в общем я там ничего не понял и оч.рад этому) + единственная возможность в коде обращаться к ним - прописывать их название целиком.<br>
В итоге мне нужно было строить СВОЮ отдельную бинарку для каждого поля сущности &quot;авто&quot;, а их штук 8. При этом многие из них похожи донельзя(отличие только в названии поля). При этом ведь нужно добавить узел, сделать обход (2 способами) и удалить из памяти, минимум 4ре функции. А т к 8 полей, то РЕЗКО получаем избыточную хрень 8 * 4 = 32 функции, которые крайне похожи по обработке, но там разные поля структуры прописываются. Я хрен знает, как это шаблонизировать в си, вроде как-то делают, но я не выкупаю, да и так неплохо вышло)<br>
<br>
Без понятия как оценить производительность работы прожки. Сравнивать не с чем. Данных нет, да и толку от них, все равно даже миллион записей не вывести на экран. Уверен, что можно все организовать эффективные в разы, используя ПРАВИЛЬНЫЕ древовидные структуры (да как бы еще знать их, века не хватит на их фундаментальное изучение), но и так все работает неплохо)<br>
<br>
Если менять структуры данных. то придется выбросить весь код в корзину и переписывать с нуля (многие скажут, да-да, это будет лучшее в твоем случае, хе-хе, вот и выбрасывайте свои исходники, а мне мой нра)<br>
<br>
В общем я доволен результатом&#33; Нет, даже ОЧЕНЬ ДОВОЛЕН&#33;&#33;&#33; Пойду съем мороженку)<br>
<br>
И самое главный императив: <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>и тай сойдет</strong></span> (с)  :D]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833131</guid>
        <pubDate>Thu, 25 Jun 2020 13:59:01 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833131</link>
        <description><![CDATA[AVA12: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>список в прологе стандартно организован в виде дерева(голова - хвост).</div></div><br>
Голова-хвост - это односвязный список. В принципе, можно трактовать его, как абсолютно вырожденное дерево, но зачем?]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833129</guid>
        <pubDate>Thu, 25 Jun 2020 12:43:57 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833129</link>
        <description><![CDATA[swf: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833127'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T08:52:52+00:00">25.06.20, 08:52</time></span><div class='quote '>Вбиваем в поиск: феррари, красный, двухдверный (трех), с откидным верхом (или с люком), пассажир назвал водителя Миша.</div></div><br>
ОФТОП<br>
<span class='tag-size' data-value='8' style='font-size:8pt;'>Типичная прологовская задача на организацию Базы знаний. И мудрить с деревьями не надо, список в прологе стандартно организован в виде дерева(голова - хвост).<br>
Создаём предикат (отношение) owner(имя_владельца, автомобиль), а автомобиль - сложная структура car(марка, цвет, госномер, ...).<br>
Записываем в Базу знаний факты по каждому владельцу и его автомобилю. У владельца может быть несколько автомобилей, для бесхозных автомобилей можно ввести какое-нибудь noname. </span>]]></description>
        <author>swf</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833128</guid>
        <pubDate>Thu, 25 Jun 2020 11:59:07 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833128</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833127'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T08:52:52+00:00">25.06.20, 08:52</time></span><div class='quote '>Вбиваем в поиск: феррари, красный, двухдверный (трех), с откидным верхом (или с люком), пассажир назвал водителя Миша.</div></div><br>
Так это обычный атрибутный поиск, логическое деление. Деревьями тут даже не пахнет.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833127</guid>
        <pubDate>Thu, 25 Jun 2020 08:52:52 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833127</link>
        <description><![CDATA[Black_Dragon: Автомобиль тут формальность. Разноплановый набор данных, не более.<br>Например, ВИН или Госномер полностью уникальный ИД, не особо интересен. Кроме случая Госномера для поиска частичного соответствия.<br>Другие парамметры менее уникальные.<br><br>Вот ситуация.<br>Идет девушка, к ней подъезжает машина, водитель из машины дарит цветы и быстро уезжает.<br>Она хочет его найти.<br><br>Вбиваем в поиск: феррари, красный, двухдверный (трех), с откидным верхом (или с люком), пассажир назвал водителя Миша.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833126</guid>
        <pubDate>Thu, 25 Jun 2020 08:32:46 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833126</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833125'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T08:00:05+00:00">25.06.20, 08:00</time></span><div class='quote '>Дело не в БД, а применить деревья на чем-нибудь, сравнить их.</div></div><br>
Ну тогда модельная задача с учётом автотранспорта - крайне неудачный выбор. Скорее нужно выбрать какую-нибудь другую - транспортную задачу, например, или генетическую...]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833125</guid>
        <pubDate>Thu, 25 Jun 2020 08:00:05 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833125</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833120'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T06:07:21+00:00">25.06.20, 06:07</time></span><div class='quote '>Гм... рождается очередная резидентная БД? тогда мои соболезнования.</div></div><br>
Дело не в БД, а применить деревья на чем-нибудь, сравнить их.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833120</guid>
        <pubDate>Thu, 25 Jun 2020 06:07:21 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833120</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833119'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-25T05:55:10+00:00">25.06.20, 05:55</time></span><div class='quote '>Я понял так.<br>
В памяти есть большой объеме информации, как туда она попала не интересует, рандомный генератор делает...<br>
Надо эмулировать работу с этой информацией как с БД: поиск, добавление и т.д.<br>
Использовать деревья, определить эффективные (из какого-то набора) методом тестирования.</div></div><br>
Гм... рождается очередная резидентная БД? тогда мои соболезнования.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833119</guid>
        <pubDate>Thu, 25 Jun 2020 05:55:10 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833119</link>
        <description><![CDATA[Black_Dragon: Проблема в том, что все очень умные, и задачу 3 класса пытаются решать интегралами и другими вузовскими приемами...  :lol: <br>Задача академическая.<br><br>Я понял так.<br>В памяти есть большой объеме информации, как туда она попала не интересует, рандомный генератор делает...<br>Надо эмулировать работу с этой информацией как с БД: поиск, добавление и т.д.<br>Использовать деревья, определить эффективные (из какого-то набора) методом тестирования.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833117</guid>
        <pubDate>Thu, 25 Jun 2020 04:49:49 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833117</link>
        <description><![CDATA[Akina: Всё прочитал, ничего не понял.<br>
<br>
Если исходить из полной постановки задачи, включая весьма странное требование &quot;а подать сюда дерево&quot;, то первый вывод, который вылезает - а не будет тут дерева как такового. <br>
<br>
Есть у нас автомобиль А в состоянии Ах. Мы что-то с ним делаем (любая операция корректировки), получаем автомобиль А в состоянии Ау, а родителем состояния Ау является состояние Ах. Делаем вторую операцию, получаем состояние Аz. Так вот - родителем состояния Az может быть только и исключительно состояние Ау, и ни при каких обстоятельствах родителем не будет Ах. Так что мы получаем не дерево, а его частный случай, прозываемый односвязным списком.<br>
<br>
Уже проще.<br>
<br>
Далее - условие задачи, озвученное в инит-посте, однозначно говорит о том, что этот односвязный список должен храниться в БД. Что опять же практически однозначно порождает структуру<br>
<br>
- Уникальный идентификатор автомобиля (разумнее использовать естественный уникальный признак, а именно VIN);<br>
- Уникальный автоинкрементный номер состояния (или штамп времени перехода в это состояние);<br>
- Прочие атрибуты, в том числе FK.<br>
<br>
Забавно, что постановка задачи такова, что исключает удаление записей, что в свою очередь делает ненужным наличие ссылки на запись-родитель, достаточно последовательной нумерации.<br>
<br>
Комбинация первых двух полей образует естественный ПК. Для ускорения описанных операций используются соответствующие индексы. А вот когда заходит речь о том, как именно оптимизировать конкретную отдельную операцию - необходимо сначала определиться с конкретной СУБД и конкретной структурой, а потом мыслить об оптимизации.<br>
<br>
Формально это, конечно, дерево, хотя реально - лес, где совокупность записей для отдельного автомобиля образует самостоятельное и независимое дерево.<br>
<br>
Не, можно пробовать любую истинно &quot;древесную&quot; структуру - но смысл-то? то, что эффективно работает с деревом, скорее всего не будет самым эффективным в случае односвязного списка. Я уж не говорю о том, что некоторые структуры не работают с лесом, им одно дерево подавай (хотя на уровне СУБД это пофиг, просто ещё одно условие в запросе).<br>
<br>
<hr><br>
А дальше практически по всей теме идёт мысль, что никакой БД нет и в помине, что все данные загружены в память приложения, и там оно с этими данными и работает. Поневоле <br>
хочется изречь нечто типа &quot;Батюшка, вы уж определитесь, ...&quot;.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833107</guid>
        <pubDate>Wed, 24 Jun 2020 20:59:38 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833107</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833105'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T19:33:54+00:00">24.06.20, 19:33</time></span><div class='quote '>В википедии сказано что как правило фиксированное:</div></div> И сам тут же цитируешь: &quot;variable number of child nodes&quot; - переменное число дочерних узлов. А то, что выделено означает &quot;в фикмрованных границах&quot;<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833105'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T19:33:54+00:00">24.06.20, 19:33</time></span><div class='quote '>Б+-деревья используются для хранения данных на жёстких дисках.</div></div> Ты уверен, что именно данных, а не структуры файлов? То бишь дерева каталогов. Просто вставка данных в середину файла ни в одной файловой системе не реализуется системой, и возможности B+-деревьев оказываются сильно избыточными.<br>
<br>
Насколько помню, в файловых системах ext, как и в UNIX (именно эту ФС использовала упомянутая в википедии Minix), используются иерархические списки блоков. Только размеры записей другие, что позволяет создавать очень большие файлы на просто огромных &quot;дисках&quot;.<br>
<br>
Про Minix я дописал после того, как проверил, что в вики написано.]]></description>
        <author>amk</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833106</guid>
        <pubDate>Wed, 24 Jun 2020 20:46:10 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833106</link>
        <description><![CDATA[AVA12: <strong class='tag-b'>Pavia</strong><br>
У меня складывается впечатление, что кто-то из нас бредит.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В википедии сказано что как правило фиксированное:<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>In B-trees, internal (non-leaf) nodes can have a variable number of child nodes within some pre-defined range.</div></div></div></div><br>
Как ты думаешь, как переводится процитированная тобой фраза? В моем мире это переводится как &quot;В B-деревьях внутренний узел (не лист) может содержать <em class='tag-i'>различное/переменное</em> количество дочерних узлов, в рамках некоторого определенного диапазона.&quot; А как она переводится в твоем мире?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Плюс у DOUGLAS COMER так же чётко сказано что ключей в узле 2d.</div></div><br>
Да ну?<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>In general, each node in a B-tree of order d contains at most 2d keys and 2d + 1 pointers, as shown in Figure 4.</div></div><br>
В моем мире это переводится как &quot;Вообще, каждый узел B-дерева порядка d содержит <span class='tag-u'><em class='tag-i'><strong class='tag-b'>максимум</strong></em></span> 2d ключей и 2d + 1 указателей, как показано на рис. 4.&quot; А в твоем?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>i) Each path from tire-root to any leaf has the same length h, also called the<br>
<strong class='tag-b'>height</strong> of T, i.e., h = number of nodes in path.</div></div><br>
И при чем тут <strong class='tag-b'>высота</strong> дерева? Мы же говорим, скорее, о его ширине.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ключи там есть К примеру такие ключи как i_size и i_mtime</div></div><br>
Во-первых, указанные поля inode ни к какому дереву не принадлежат, ни B-, ни C-, ни D-. Во-вторых, ты показал на картинке только <em class='tag-i'>часть</em> inode - карту размещения файловых блоков. Т. е. структуру, хранящую номера всех блоков (в мире [Win]do[w]s их называют кластерами) с полезной нагрузкой конкретного файла.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В ext не используется битовая карта(сегментированный массив блоков)</div></div><br>
При чем тут битовые карты? (В ext они, кстати, используются - для поиска свободных inode и блоков). Слово &quot;сегментированный&quot; (синоним - &quot;фрагментированный&quot;) означает &quot;разбитый на части, возможно, хранящиеся в разных местах&quot;.  Карта блоков в ext - это, по сути, массив, i-тый элемент которого (начиная с 0) является номером блока, который хранит байты [i*s .. (i+1)*s-1] конкретного файла (где s - это фиксированный размер блока). Поскольку разместить этот массив одним куском не всегда возможно (файлы растут, блоки добавляются), то приходится массив разбивать.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833105</guid>
        <pubDate>Wed, 24 Jun 2020 19:33:54 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833105</link>
        <description><![CDATA[Pavia: <strong class='tag-b'>AVA12</strong><br>
1) <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>У B(+)-деревьев количество дочерних узлов может варьироваться. У карты файловых блоков количество элементов в каждом узле (кроме последнего &quot;листа&quot;) фиксировано.</div></div>.<br>
В википедии сказано что как правило фиксированное:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>In B-trees, internal (non-leaf) nodes can have a variable number of child nodes within <strong class='tag-b'>some pre-defined range. </strong></div></div><br>
Плюс у DOUGLAS COMER так же чётко сказано что ключей в узле 2d.<br>
<a class='tag-url' href='https://dl.acm.org/doi/pdf/10.1145/356770.356776' target='_blank'>https://dl.acm.org/doi/pdf/10.1145/356770.356776</a><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>i) Each path from tire-root to any leaf has the same length h, also called the<br>
<strong class='tag-b'>height </strong>of T, i.e., h = number of nodes in path. </div></div><br>
<a class='tag-url' href='https://www.inf.fu-berlin.de/lehre/SS10/DBS-Intro/Reader/BayerBTree-72.pdf' target='_blank'>https://www.inf.fu-berlin.de/lehre/SS10/DBS...yerBTree-72.pdf</a><br>
<br>
3. <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Узлы B(+)-дерева содержат как ссылки на дочерние узлы/листья, так и значения ключей. Карта файловых блоков содержит только ссылки, никаких ключей в ней нет.</div></div><br>
Ещё скажите что файлов не существует. Ключи там есть  К примеру такие ключи как <strong class='tag-b'>i_size</strong> и <strong class='tag-b'>i_mtime</strong>  используются для синхронизации файлов. <br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>struct <strong class='tag-b'>ext2_inode </strong>{<br>
	__u16	i_mode;		/* Тип файла и права доступа (см.ниже) */<br>
	__u16	i_uid;		/* UserID */<br>
	__u32	<strong class='tag-b'>i_size</strong>;		/* Размер в байтах */<br>
	__u32	i_atime;	/* POSIX время последнего обращения к файлу */<br>
	__u32	<strong class='tag-b'>i_ctime</strong>;	/* POSIX время создания */<br>
	__u32	i_mtime;	/* POSIX время последней модификации */<br>
	__u32	i_dtime;	/* POSIX время удаления */<br>
	__u16	i_gid;		/* GroupID */<br>
	__u16	i_links_count;	/* Кол-во ссылок на дескриптор */<br>
 	__u32	i_blocks;	/* Кол-во секторов (не блоки&#33;) */<br>
	__u32	i_flags;	/* Флаг (см.ниже) */<br>
	union {<br>
		struct {<br>
			__u32  l_i_reserved1; /* Зарезервировано */<br>
		} linux1;<br>
		struct {<br>
			 __u32  h_i_translator; /* ??? */<br>
		} hurd1;<br>
		struct {<br>
			__u32  m_i_reserved1; /* Зарезервировано */<br>
		} masix1;<br>
	 } osd1;		<br>
	__u32	i_block[EXT2_N_BLOCKS];/* Указатели на блок */<br>
	__u32	i_generation;	/* Версия файла (для NFS) */<br>
	__u32	i_file_acl;	/* Доп. аттрибуты файла */<br>
	__u32	i_dir_acl;	/* Доп. аттрибуты директории */<br>
	__u32	i_faddr;	/* Адрес фрагмента */<br>
	union {<br>
		struct {<br>
			__u8	l_i_frag;	/* Номер фрагмента */<br>
			__u8	l_i_fsize;	/* Размер фрагмента */<br>
			__u16	i_pad1;         /* Зарезервировано */<br>
			__u16	l_i_uid_high;	/* 16 старших битов UserID */<br>
			__u16	l_i_gid_high;	/* 16 старших битов GroupID */<br>
			__u32	l_i_reserved2;  /* Зарезервировано */<br>
		} linux2; /* LINUX */<br>
		struct {<br>
			__u8	h_i_frag;	/* Номер фрагмента */<br>
			__u8	h_i_fsize;	/* Размер фрагмента */<br>
			__u16	h_i_mode_high;  /* 16 старших битов T&amp;P */<br>
			__u16	h_i_uid_high;   /* 16 старших битов UserID */<br>
			__u16	h_i_gid_high;   /* 16 старших битов GroupID */<br>
			__u32	h_i_author;     /* UserID или автор */<br>
		} hurd2; /* GNU HURD */<br>
		struct {<br>
			__u8	m_i_frag;	/* Номер фрагмента */<br>
			__u8	m_i_fsize;      /* Размер фрагмента */<br>
			__u16	m_pad1;         /* Зарезервировано */<br>
			__u32	m_i_reserved2[2]; /* Зарезервировано */<br>
		} masix2; /* MASIX */<br>
	} osd2;				/* Специфичные значения */<br>
};</div></div><br>
4. <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>B(+)-дерево - это дерево поиска. Карта файловых блоков - это, в общем-то, и не дерево, это сегментированный массив.</div></div><br>
В ext не используется битовая карта(сегментированный массив блоков)<br>
<br>
2)<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>2. B(+)-деревья позволяют вставку и удаления узла/листа, при этом затрагивается максимум log(n) узлов. Чтобы вставить или удалить узел в карту файловых блоков, нужно перетряхнуть все последующие узлы (в худшем случае - вообще все).</div></div><br>
Б+-деревья используются для хранения данных на жёстких дисках. Если Если использовать сегментированный массив и поверх положить Б+ дерево, то да. <br>
Это будет быстрее, поэтому NFTS и выигрывает у EXT в скорости. Но тут палка о двух концах либо вы сразу занимаетесь балансировкой дерева либо потом делаете дефргаментацию массива.]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833098</guid>
        <pubDate>Wed, 24 Jun 2020 13:25:35 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833098</link>
        <description><![CDATA[AVA12: <strong class='tag-b'>Pavia</strong>:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>На это картинке изображено B+ дерево.</div></div><br>
Не-а.<br>
<br>
1. У B(+)-деревьев количество дочерних узлов может варьироваться. У карты файловых блоков количество элементов в каждом узле (кроме последнего &quot;листа&quot;) фиксировано.<br>
2. B(+)-деревья позволяют вставку и удаления узла/листа, при этом затрагивается максимум log(n) узлов. Чтобы вставить или удалить узел в карту файловых блоков, нужно перетряхнуть все последующие узлы (в худшем случае - вообще все).<br>
3. Узлы B(+)-дерева содержат как ссылки на дочерние узлы/листья, так и значения ключей. Карта файловых блоков содержит только ссылки, никаких ключей в ней нет.<br>
4. B(+)-дерево - это дерево поиска. Карта файловых блоков - это, в общем-то, и не дерево, это сегментированный массив.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833094</guid>
        <pubDate>Wed, 24 Jun 2020 09:40:35 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833094</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833092'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>swf &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T08:40:51+00:00">24.06.20, 08:40</time></span><div class='quote '>Теперь нужно использовать специальные деревья и понизить выч. сложность до nlogn.</div></div><br>
OpenMP?]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833092</guid>
        <pubDate>Wed, 24 Jun 2020 08:40:51 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833092</link>
        <description><![CDATA[swf: ОФТОП&#33;<br>
Я забыла поверх своего сообщения написать одно слово - ОФТОП  :) <br>
Так что сорри, рейдерский захват темы не предполагался.<br>
to amk<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><br>
Задачу я непременно тут запощу в отдельной теме, только сейчас не могу, статья ещё не вышла.<br>
Может кто помнит, 5 лет назад я тут на сорцах мучалась с алгоритмом размещения абсолютного 1-центра неориентированного графа, даже тема старая есть.<br>
Вот эту задачу я сделала, алгоритм простой, прямыми вычислениями в двойном цикле за квадратичное время все эквивалентные центры находятся для одного ребра.<br>
Эту задачу и некоторые обобщения.<br>
<br>
Теперь нужно использовать специальные деревья и понизить выч. сложность до nlogn.<br>
Пока я этого не сделала, у Хакими алгоритм быстрее.<br>
Вначале, конечно, сама попробую сделать, всё равно летом никуда не поедешь.<br>
</div></div>]]></description>
        <author>swf</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833091</guid>
        <pubDate>Wed, 24 Jun 2020 07:39:12 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833091</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833090'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T07:32:33+00:00">24.06.20, 07:32</time></span><div class='quote '>создай отдельную тему и там разбирайся</div></div> <strong class='tag-b'>swf</strong>, на самом деле для новой задачи лучше не писать её в существующую тему, а создать новую. Если считаешь, что она каким-то образом пересекается с уже существующей, лучше в стартовом сообщении дать ссылку на эту старую тему. Можно в существующей теме дать ссылку на свою задачу.<br>
<br>
А что за задача-то?]]></description>
        <author>amk</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833090</guid>
        <pubDate>Wed, 24 Jun 2020 07:32:33 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833090</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>swf &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T07:23:00+00:00">24.06.20, 07:23</time></span><div class='quote '>на нём одном весь раздел держится</div></div><br>
шаришь)<br>
<br>
а ты забыла правило, что одна тема - одна проблема.<br>
создай отдельную тему и там разбирайся]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833089</guid>
        <pubDate>Wed, 24 Jun 2020 07:23:00 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833089</link>
        <description><![CDATA[swf: Как хорошо, что здесь все специалисты по деревьям&#33;<br>
Кроме меня  :jokingly:<br>
У меня как раз с деревьями проблема. <br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><br>
Хакими за счёт использования 2-3 деревьев понизил сложность своего алгоритма с O(n^3) до O(nlogn).<br>
Мне даже смотреть противно на эти 2-3 деревья.<br>
У меня честные двумерные массивы и двойной цикл крутится. <br>
Чтобы догнать Хакими, мне нужно всего-то с O(n^2) понизить до O(nlogn). Вот только не пойму как.<br>
Кнута что ли почитать... <br>
</div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-24T07:25:28+00:00">24.06.20, 07:25</time></span></span><br>
На топикстартёра не наезжайте, на нём одном весь раздел держится  :D]]></description>
        <author>swf</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833086</guid>
        <pubDate>Wed, 24 Jun 2020 07:13:09 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833086</link>
        <description><![CDATA[Black_Dragon: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">// Класс автомобиль</div><div class="code_line">class Car {</div><div class="code_line">string m_Name;</div><div class="code_line">string m_Firma;</div><div class="code_line">}</div><div class="code_line">typedef Car* PtrCar;</div><div class="code_line">&nbsp;</div><div class="code_line">// Базовый класс</div><div class="code_line">class Wrap {</div><div class="code_line">public:</div><div class="code_line">virtual void Add(string key, PtrCar val) = 0;</div><div class="code_line">virtual void Del(string key) = 0;</div><div class="code_line">virtual PtrCar Find(string key) = 0;</div><div class="code_line">virtual void DelAll() = 0;</div><div class="code_line">}</div><div class="code_line">// Класс по конкретному дереву</div><div class="code_line">class WrapBTree : public Wrap {</div><div class="code_line">protected:</div><div class="code_line">// Внутренняя реализация</div><div class="code_line">std::map&#60;string, PtrCar&#62; m_Tree;</div><div class="code_line">public:</div><div class="code_line">virtual void Add(string key, PtrCar val) { m_Tree[key] = val; };</div><div class="code_line">virtual void Del(string key);</div><div class="code_line">virtual PtrCar Find(string key)</div><div class="code_line">virtual void DelAll();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">Wrap *ptrName = new WrapBTree;</div><div class="code_line">Wrap *ptrFirma = new WrapBTree;</div><div class="code_line">PtrCar c = new Car;</div><div class="code_line">c-&#62;m_Name = &quot;Копейка&quot;</div><div class="code_line">c-&#62;m_Firma = &quot;ВАЗ&quot;</div><div class="code_line">ptrName-&#62;Add(c-&#62;m_Name, c);</div><div class="code_line">ptrFirma-&#62;Add(c-&#62;m_Firma, c);</div></ol></div></div></div></div><br>
<br>
Тестовый набор действий можно загнать в функцию, и только менять враперы под разные деревья и замерять нужные временные интервалы]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833084</guid>
        <pubDate>Wed, 24 Jun 2020 07:04:01 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833084</link>
        <description><![CDATA[FasterHarder: кстати, я тут уточнил насчет задания.<br>
оказывается нужно ведь построить именно модель современной СУБД, ну, такую махонькую)<br>
также есть призыв сделать нормализацию данных. хрен знает, зачем, ну ладно.<br>
<br>
В общем нужно соорудить архитектуру похожую на архитектуру современных СУРБД (sql server, oracle).<br>
не-не-не&#33; я не готов&#33; нет, конечно, конечно же нет&#33; Это нереально абсолютно&#33; Нереально. Ни за что на свете. <br>
<br>
Во-первых, нужно досконально понимать внутреннее устройство хранения данных в БД. Там всякие В+, самоперестраюивающиеся деревья. Там чего-то данные хранятся по 8Кб или по 32, вообще не важно мне все это. За разумное время с этим мне не разобраться (если вы можете за 10 минут, ну, ладно, я вот не могу).<br>
Во-вторых, нужно досконально знать все эти структуры данных. Тоже сложно. В+ какое-нибудь навороченное + нету как всегда НОРМАЛЬНОГО описания в инете. Спрашивать на форуме про В+-деревья - это сразу смерть понимания процесса. Этот этап можно поднять, но уйдет оч.много времени.<br>
<br>
нет, не готов, конечно, строить такую архитектуру. нереал, без вариантов, ответ ОТРИЦАТЕЛЬНЫЙ, ни за что&#33; нет нет нет...<br>
все сделаю на бинарках) это еще сделать надо&#33; на словах то все легко, а тут проектировать нужно еще все корректно, что тоже не просто...<br>
<br>
все оказалось достаточно серьезно в плане постановки. тут за пару часов и не закодировать. хм...<br>
ладно, упрощу донельзя, сделаю НЕОПТИМАЛЬНО на бинарках (понятно, что реализовано будет ужасно, алгоритмы будут несовершенные и пр.).<br>
и тай сойдет (с)  :lol: <br>
<br>
подчеркиваю еще раз: <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>и так сойдет</strong></span> (с)<br>
если я добьюсь тупо работоспособности - буду считать, что я молодец и справился с задачей&#33;<br>
ВСЕ&#33;&#33;&#33;]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833083</guid>
        <pubDate>Wed, 24 Jun 2020 06:52:43 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833083</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833082'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T06:43:46+00:00">24.06.20, 06:43</time></span><div class='quote '>класса обвертки?</div></div><br>
Да.]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833082</guid>
        <pubDate>Wed, 24 Jun 2020 06:43:46 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833082</link>
        <description><![CDATA[Black_Dragon: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833076'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T05:59:00+00:00">24.06.20, 05:59</time></span><div class='quote '>А есть пример?</div></div><br>
класса обвертки?]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833081</guid>
        <pubDate>Wed, 24 Jun 2020 06:28:40 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833081</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833076'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T05:59:00+00:00">24.06.20, 05:59</time></span><div class='quote '>Мне вот интересно как в Си++ такое делается.</div></div><br>
Я бы просто с помощью boost::multi_index_container сделал это.]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833078</guid>
        <pubDate>Wed, 24 Jun 2020 06:17:52 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833078</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>Pavia</strong>, не-не-не&#33; я не понимаю, зачем все это&#33; я не оценю этого ни на йоту&#33;<br>
мне нужен твой ответ стандартный: &quot;так книгу открыть не пробовали и почитать&quot;.<br>
<br>
не утруждай себя в будущем больше, я не оценю)<br>
вот чего ты вообще прицепился к этой задаче? заняться больше не чем)) ты желаешь мне помочь - не смеши мои тапочки) У тебя единственная цель: понтануться своими знаниями и унизить спрашивающего) ВСЕ&#33; другого не дано&#33;<br>
<br>
ЗЫ: господи, вот какие ты убогие сравнения приводишь, типа не читал и пр. Читать - не значить понимать&#33; Время жалко на тебя, чтобы написать, что 90% из тобою написанного не помогает мне абсолютно...<br>
<br>
N.B. поиск по описанию нужно исключать, т к нет четких правил этого поиска. Не нужно мне писать про LIKE и мета символы. Про полнотекстовый поиск, который реализован в промышленных СУРБД. Речь про то, что в задании нет четких инструкций поиска. Все будет упрощаться, все предельно будет упрощаться&#33; Буду упрощать настолько, пока не останется то, что мне будет понятно на 100%. Все упрощу, донельзя, до копейки...до грамма...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833076</guid>
        <pubDate>Wed, 24 Jun 2020 05:59:00 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833076</link>
        <description><![CDATA[Pavia: <strong class='tag-b'>FasterHarder</strong><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>&quot;Описание&quot; - просто текстовое поле.</div></div><br>
Вопрос в том фиксированного размера или это Blobs? И нужен по нему полнотекстовый поиск с обратным индексом. <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Неужели еще никто не понял, что данная задача обладает лютейшей сложностью, т к для выбора правильного дерева нужно знать все ныне существующие деревья, знать их лучшие худшие/случаи производительности и кучу др.характеристик. Этих деревьев изобретено свыше 1000, наверное. Там есть такая жесть. Иногда вижу какие-то закольцованные деревья, со связями к корню, к предку или на какой-то другой уровень и пр. Это все очень сложно. Это все очень сложно. Это все очень сложно. +сами по себе деревья имеют рекурсивную природу, а рекурсия один из сложнейших разделов информатики. На каком-то уровне рекурсию не сможет понимать ни один разработчик (самый великий даже) в мире (это со слов Макконела).</div></div><br>
Как Вам сказать? Просто молчат из вежливости. Сложности нету, если бы вы критерий сравнения озвучили, а Вы не озвучили и решили заняться анализом. Но профессор не читает книжек по анализу алгоритмов. А дедушка Кнут в своем 3-х томнике уже проанализировал кучу деревьев. Многие его тут читали, в отличии от вас поэтому уже знают что B+ деревья оптимальны по большинству параметров. Есть и деревья и по круче которые были разработаны позже и не вошли в эти книги.  <br>
<br>
У меня проблем не было. После решения 10 учебных задач на деревья и рекурсию и динамическое программирование. Самое сложное что делал это обход AST дерева для определения типа переменной.<br>
<a class='tag-url' href='https://gitlab.com/pavia00/pop/-/blob/master/src/Semantic/USemanticCheking.pas' target='_blank'>https://gitlab.com/pavia00/pop/-/blob/maste...nticCheking.pas</a><br>
  <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>1. Количество записей будет штучек 30. Ну, максимум 100. Отображение в консоли через псевдографику (красивый каркас таблицы) происходит ооооочень медленно. Даже 20 записей отображаются НЕ мгновенно. миллион, например, записей отобразиться через несколько часов (может суток) - смысла в этом ноль все равно, т к их не просмотреть будет. Делать перелистывание данных в консоли - не вариант, даже думать об этом не буду. Поэтому на ограничение про память забываем. Тут проблемы нет.</div></div><br>
У человека время реакции рук ног не превышает 100 мс. Так что такие задержки он переносит комфортно. Последний дебиа поставил так он теперь летает. Там 1000 мгновенно выводиться. <br>
Для виртуальных компонентов отображать миллионы записей мгновенно не проблема. <br>
<a class='tag-url' href='https://yadi.sk/d/CLV_V2lVPqyZDA' target='_blank'>https://yadi.sk/d/CLV_V2lVPqyZDA</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-24T06:01:14+00:00">24.06.20, 06:01</time></span></span><br>
<br>
<strong class='tag-b'>Black_Dragon</strong><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833070'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black_Dragon &#064; <time class="tag-quote__quoted-time" datetime="2020-06-24T05:30:17+00:00">24.06.20, 05:30</time></span><div class='quote '>Бурный у вас вечер.<br>
<br>
Как сделано у меня в реале.<br>
<br>
Есть класс Устройство с кучей полей... храниться в памяти.<br>
делаем std::map или std::unordered_map<br>
Где первичным ключем будет какое-то нужное поле (строка/число), а значением - ссылка на этот класс в оперативной памяти.<br>
Сколько полей для поиска, столько и мап-ов.<br>
Вообщем по аналогии: ключ/ссылка.<br>
<br>
Если надо сделать тестовое исследование, то делаешь на ООП обвертку с базовым классом и нужным набором функций и наследуешь для разных вариантов реализации.<br>
Создаешь массив (обычный) объектов нужного класса.<br>
И потом пихаешь в нужное дерево, через обвертку, значения полей и ссылку на объект.</div></div><br>
А есть пример? Мне вот интересно как в Си++ такое делается. И насколько Delphi в этом плане убог.]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833070</guid>
        <pubDate>Wed, 24 Jun 2020 05:30:17 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833070</link>
        <description><![CDATA[Black_Dragon: Бурный у вас вечер.<br>
<br>
Как сделано у меня в реале.<br>
<br>
Есть класс Устройство с кучей полей... храниться в памяти.<br>
делаем std::map или std::unordered_map<br>
Где первичным ключем будет какое-то нужное поле (строка/число), а значением - <span class='tag-u'>ссылка </span>на этот класс в оперативной памяти.<br>
Сколько полей для поиска, столько и мап-ов.<br>
Вообщем по аналогии: ключ/ссылка.<br>
<br>
Если надо сделать тестовое исследование, то делаешь на ООП обвертку с базовым классом и нужным набором функций и наследуешь для разных вариантов реализации.<br>
Создаешь массив (обычный) объектов нужного класса.<br>
И потом пихаешь в нужное дерево, через обвертку, значения полей и ссылку на объект.]]></description>
        <author>Black_Dragon</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833069</guid>
        <pubDate>Wed, 24 Jun 2020 05:08:09 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833069</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833051'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T19:44:55+00:00">23.06.20, 19:44</time></span><div class='quote '>Ты не рассмотрел проблему большого количества записей (подсказка: в память индекс целиком не влезет, и это только верхний пласт проблемы). Ты не обосновал оптимальность (и даже применимость) двоичных деревьев поиска. Ты не указал, как будешь решать проблему с совпадающими значениями ключей (подсказка: стран, производящих автомобили, гораздо меньше, чем миллиарды). Ты не объяснил, как (и с какой целью) ты будешь индексировать поле &quot;описание&quot;.<br>
<br>
Короче, садись, неуд. </div></div><br>
<br>
не не не&#33; Двоек у меня никогда не было за последнюю тысячу лет) да и сдавать я буду ее сам себе, хехе.<br>
<br>
1. Количество записей будет штучек 30. Ну, максимум 100. Отображение в консоли через псевдографику (красивый каркас таблицы) происходит ооооочень медленно. Даже 20 записей отображаются НЕ мгновенно. миллион, например, записей отобразиться через несколько часов (может суток) - смысла в этом ноль все равно, т к их не просмотреть будет. Делать перелистывание данных в консоли - не вариант, даже думать об этом не буду. Поэтому на ограничение про память забываем. Тут проблемы нет.<br>
<br>
2. Идентификатор принято сразу добавить во входной файл с данными. Иначе там будет не стыковка. Это тупо целое натуральное УНИКАЛЬНОЕ число из отрезка [1 ... общее кол-во машин]. Проблемы тут нет&#33; Добавляет по sizeof(int) памяти к каждой записи таблицы. Думаю, памяти хватит. Тут проблемы нет.<br>
<br>
3. <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833051'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T19:44:55+00:00">23.06.20, 19:44</time></span><div class='quote '>И что для построения индекса нужно просмотреть все записи?</div></div><br>
в процессе сортировки элементы последовательности просматриваются многократно. Мне же для построения упорядоченного дерева по нужному полю потребуется гораздо меньше. Правда при вставке будут многократные спуски по дереву для поиска нужной позиции, но это недолго (правда дерево несбалансированное...хм..)<br>
<br>
4. <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833051'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T19:44:55+00:00">23.06.20, 19:44</time></span><div class='quote '>Ты не объяснил, как (и с какой целью) ты будешь индексировать поле &quot;описание&quot;.</div></div><br>
 :) , из поста №1: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T08:05:52+00:00">23.06.20, 08:05</time></span><div class='quote '>Сортировка по любому из полей (кроме краткого описания)</div></div><br>
&quot;Описание&quot; - просто текстовое поле.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833051'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T19:44:55+00:00">23.06.20, 19:44</time></span><div class='quote '>Ты не обосновал оптимальность (и даже применимость) двоичных деревьев поиска.</div></div><br>
Неужели еще никто не понял, что данная задача обладает лютейшей сложностью, т к для выбора правильного дерева нужно знать все ныне существующие деревья, знать их лучшие худшие/случаи производительности и кучу др.характеристик. Этих деревьев изобретено свыше 1000, наверное. Там есть такая жесть. Иногда вижу какие-то закольцованные деревья, со связями к корню, к предку или на какой-то другой уровень и пр. Это все очень сложно. Это все очень сложно. Это все очень сложно. +сами по себе деревья имеют рекурсивную природу, а рекурсия один из сложнейших разделов информатики. На каком-то уровне рекурсию не сможет понимать ни один разработчик (самый великий даже) в мире (это со слов Макконела).<br>
<br>
Какое бы дерево не взять за основу нет возможности за разумное время доказать, что оно является оптимальным в данном случае.<br>
Бинарные деревья относительно простые. Но лишь относительно. На самом деле, ИМХО, это достаточно сложная структура данных. Простая структура, ну, например, массив одномерный (статический), да и то, там тоже полно тонкостей.<br>
<br>
Жалко, у меня нету в наличии перечня всех названий деревьев существующих в айти на 2020 год. Запостил бы сюда простыню (без спойлера, разумеется) на многие экраны (красный цветом, полужирным, 48 размером шрифта)...ладно...<br>
<br>
ЗЫ: мне больше ничего не нужно) ничего не нужно) хватит, пожалейте свое время) ничего мне не надо в рамках этой задачи, ну по крайней мере пока) т к любые ваши ответы (ну большинства) никогда не приближали меня к решению поставленной проблемы (речь не только про эту проблему, а про ЛЮБУЮ в целом)...это факт&#33; ничего не надо, все хватит&#33; Оставьте эту задачку в покое. Не мучайте ее, ей становится только хуже после ответов большинства, ахаха. Закрываем тему. Тему закрываем.<br>
<br>
всем спс, кто писал конструктив. Мне это чуть-чуть помогло)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833068</guid>
        <pubDate>Wed, 24 Jun 2020 05:02:26 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833068</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833059'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T22:28:07+00:00">23.06.20, 22:28</time></span><div class='quote '>Ты пояснил, что B+ это не бинарные деревья, и привел картинку - зачем? Человек, не знакомый с темой, может решить, что это пример B+ деревьев (что на самом деле не так).</div></div><br>
На это картинке изображено B+ дерево.<br>
<br>
<br>
<a class='tag-url' href='https://ru.wikipedia.org/wiki/B⁺-дерево' target='_blank'>https://ru.wikipedia.org/wiki/B⁺-дерево</a><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>B⁺-дерево — структура данных на основе B-дерева, сбалансированное {&#092;displaystyle n}n-арное дерево поиска с переменным, но зачастую большим количеством потомков в узле. B⁺-дерево состоит из корня, внутренних узлов и листьев, корень может быть либо листом, либо узлом с двумя и более потомками.</div></div>]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833059</guid>
        <pubDate>Tue, 23 Jun 2020 22:28:07 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833059</link>
        <description><![CDATA[AVA12: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ФС и БД не отличимы друг от дружки. Решают одни и тежи задачи.</div></div><br>
Нет, задачи у них во многом схожие, но не совпадающие.<br>
Ты пояснил, что B+ это не бинарные деревья, и привел картинку - зачем? Человек, не знакомый с темой, может решить, что это пример B+ деревьев (что на самом деле не так).<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Во-вторых где Вы там inode разглядели?</div></div><br>
Так ведь карта блоков - это <a class='tag-url' href='https://en.wikipedia.org/wiki/Inode_pointer_structure' target='_blank'>часть inode</a>, разве нет?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ТС вам написал, что для него это задача академическая, а не практическая.</div></div><br>
Гм. Если задача теоретическая, то зачем упоминать миллиарды записей?]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833053</guid>
        <pubDate>Tue, 23 Jun 2020 20:58:12 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833053</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833046'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T18:09:07+00:00">23.06.20, 18:09</time></span><div class='quote '>Верно. Но при чем тут inode? Это совсем из другой оперы.</div></div><br>
Опера та же самая. ФС и БД не отличимы друг от дружки. Решают одни и тежи задачи. <br>
Во-вторых где Вы там inode разглядели? Ext - хороша тем, что изначально не требует сложной реализации и может реализована в упрощенном виде. <br>
И самое главное она реализована чисто на дереве без использования прочих структур, что и просил ТС.  <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ты не рассмотрел проблему большого количества записей (подсказка: в память индекс целиком не влезет, и это только верхний пласт проблемы). </div></div><br>
ТС вам написал, что для него это задача академическая, а не практическая.  :popcorn: <br>
<br>
inode в этом плане одна из самых экономичных структур так как часть данные может хранятся непосредственно в ней.]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833051</guid>
        <pubDate>Tue, 23 Jun 2020 19:44:55 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833051</link>
        <description><![CDATA[AVA12: Пожалуйста, навскидку:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>1. индексируем исходные данные (добавляем первичный ключ).</div></div><br>
Индексирование данных - это не добавление первичного ключа. Это построение индекса (т. е. структуры поиска) по какому-то ключу.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>2. строим бинарное дерево поиска (без балансировки) по КЛЮЧАМ, второе поле узла дерево - информационная часть об авто. Все в одном месте хранится&#33;</div></div><br>
Что такое &quot;дерево поиска по КЛЮЧАМ&quot;? Имеется в виду дерево с составным ключом? Несколько деревьев по разным ключам? Что-то еще?<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>3. операция удаления происходит по ключу, поэтому выполняется за логарифмическое время (или какое-то там, не знаю, в общем быстро)</div></div><br>
&quot;или какое-то там, не знаю&quot; - преподу так же отвечать будешь?<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>5. сортировка&#33; Допустим, хотим отсортировать данные по названию авто. СТРОИМ вспомогательное дерево (также ДДП), но лексикографическое по названию. [...] После печати по названий - дерево вспомогательное уничтожаем</div></div><br>
То есть на каждый поисковый запрос строим новый индекс? Ты не забыл, что в базе <em class='tag-i'>миллиарды</em> записей? И что для построения индекса нужно просмотреть <em class='tag-i'>все</em> записи?<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>7. с редактированием. По ключу - поэтому нет проблем.</div></div><br>
Ну, если у нас только один индекс, по неизменному первичному ключу - тогда да, тут проблемы нет.<br>
<br>
Ты не рассмотрел проблему большого количества записей (подсказка: в память индекс целиком не влезет, и это только верхний пласт проблемы). Ты не обосновал оптимальность (и даже применимость) двоичных деревьев поиска. Ты не указал, как будешь решать проблему с совпадающими значениями ключей (подсказка: стран, производящих автомобили, гораздо меньше, чем миллиарды). Ты не объяснил, как (и с какой целью) ты будешь индексировать поле &quot;описание&quot;.<br>
<br>
Короче, садись, неуд.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833047</guid>
        <pubDate>Tue, 23 Jun 2020 18:19:50 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833047</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>AVA12</strong>, если есть желание, то плз чекни алгоритм из поста №29 (я там постарался упросить насколько возможно).<br>
там еще можно провести оптимизацию, не удалять из памяти отсортированное дерево, если не было удаления/вставки новых данных.]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833046</guid>
        <pubDate>Tue, 23 Jun 2020 18:09:07 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833046</link>
        <description><![CDATA[AVA12: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>B+ это не бинарные деревья.</div></div><br>
Верно. Но при чем тут inode? Это совсем из другой оперы.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833045</guid>
        <pubDate>Tue, 23 Jun 2020 17:43:23 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833045</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833044'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T17:32:27+00:00">23.06.20, 17:32</time></span><div class='quote '>не нужно никакое семейство бинарных деревьев&#33; Как минимум нерациональное использование дин.памяти.</div></div><br>
B+ это не бинарные деревья.<br>
<br>
<img class='tag-img' src='http://saukpgp.ru/sauk/Base_UMM/pgp/dis7/GL7/gl7-12.jpg' alt='user posted image'>]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833044</guid>
        <pubDate>Tue, 23 Jun 2020 17:32:27 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833044</link>
        <description><![CDATA[FasterHarder: вот, придумал хороший вариант&#33;<br>
не нужно никакое семейство бинарных деревьев&#33; Как минимум нерациональное использование дин.памяти.<br>
<br>
1. индексируем исходные данные (добавляем первичный ключ). Можно рандомом пройти. Общее число записей ведь известно.<br>
2. строим бинарное дерево поиска (без балансировки) по КЛЮЧАМ, второе поле узла дерево - информационная часть об авто. Все в одном месте хранится&#33;<br>
3. операция удаления происходит по ключу, поэтому выполняется за логарифмическое время (или какое-то там, не знаю, в общем быстро)<br>
4. операция вставки - аналогично. <br>
5. сортировка&#33; Допустим, хотим отсортировать данные по названию авто. СТРОИМ вспомогательное дерево (также ДДП), но лексикографическое по названию. Для этого достаточно один раз просмотреть исходное дерево, вынимая от туда узлы и добавлять в вспомогательное. Затем элементарно делаем обход по дереву названий и выводим либо ASC, либо DESC. Это касается всех полей. Да, будет 6 различных функций, делающих примерно одно и то же. Шаблонов в СИ нету. После печати по названий - дерево вспомогательное уничтожаем и получаем исходное состояние.<br>
6. при поиске делаем п№5, а затем запускаем бинарный поиск нужной информацию по конкретному полю.<br>
7. с редактированием. По ключу - поэтому нет проблем.<br>
<br>
<br>
Все, думаю, меня это устроит&#33; Реализовать еще нужно грамотно - тоже дело непростое ведь)<br>
В итоге сам со всем разобрался. Ну, как и обычно в принципе...)<br>
Насчет балансировки: ну, желательна, конечно...хм...надо подумать...<br>
<br>
P.S. вот так и думаешь, ну, канет форум в небытие, много ли я потеряю...сложный вопрос...Иногда на форуме выручают очень круто, но это лишь очень и очень иногда... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-23T17:34:50+00:00">23.06.20, 17:34</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833042'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T17:23:48+00:00">23.06.20, 17:23</time></span><div class='quote '>Если нужен полезный совет: FasterHarder, готовь бутылку хорошего коньяка (или что там препод любит)</div></div><br>
 :D , если бы все было так просто<br>
эта задача взята с бесконечных просторов инета... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-23T17:37:18+00:00">23.06.20, 17:37</time></span></span><br>
<strong class='tag-b'>Qraizer</strong>, спс за конструктивный материал (сложноватый местами для понимания)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833043</guid>
        <pubDate>Tue, 23 Jun 2020 17:26:21 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833043</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833035'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T16:37:56+00:00">23.06.20, 16:37</time></span><div class='quote '>1. язык СИ (который чистейший)</div></div>Не проблема. Я не призывал использовать Плюсы и stl, я лишь, см. начало поста, описал свои мысли. И тем не менее, упоминание языка и библиотеки дают хороший старт к поиску инфы для самореализации описанных в посте идей.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833035'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T16:37:56+00:00">23.06.20, 16:37</time></span><div class='quote '>2. структура &quot;дек&quot;. Это ведь вставка и в начало и в конец + такие же удаления. Но это ведь НЕ древовидная структура. А др.структуры использовать нельзя. ...</div></div>Не проблема. Можно хранить деревом. Только зачем? Поиск всё равно всегда выполняется по индексам, так что выгода от дерева в самом хранилище полезной информации никак не востребована, тогда как дерево имеет бо́льшие накладные на служебную инфу и производительность. Иными словами запрет на использование других структур данных ухудшает ТЗ.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833035'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T16:37:56+00:00">23.06.20, 16:37</time></span><div class='quote '>... Ну, как минимум обработка дерева начинается с корня (точка входа в дерево), а дек нарушает это требование.</div></div>Предположим, данные исходно лежат на диске в файлике. Вопрос: «можно вообще не хранить инфу, а индексы пусть ссылаются на смещения от начала файла» нарушает ТЗ? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-23T17:27:02+00:00">23.06.20, 17:27</time></span></span><br>
Повторю: индексы древовидны.]]></description>
        <author>Qraizer</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833042</guid>
        <pubDate>Tue, 23 Jun 2020 17:23:48 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833042</link>
        <description><![CDATA[AVA12: Я, кажется, догадываюсь, что мечтает получить препод. Задача разбивается на множество подзадач, для каждой из которых оптимальным будет свой тип структуры поиска. Причем одного указания типа мало, нужно еще и подумать (с калькулятором в руках) над деталями реализации, с учетом огромного количества хранящихся записей. При этом также очень полезно помнить про тонкости работы железа (например, кэш-памяти). В общем, может получиться очень интересная и содержательная беседа двух умных людей.<br>
<br>
Если нужен полезный совет: <strong class='tag-b'>FasterHarder</strong>, готовь бутылку хорошего коньяка (или что там препод любит).]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833040</guid>
        <pubDate>Tue, 23 Jun 2020 17:11:26 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833040</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>так дело в том, что требуется на деревьях все реализовать, БД - типа набор связанных таблиц и все такое.<br>
или имеется в виду, что нужно БД построить на основании деревьев? хм...ну, может быть, кстати, так и нужно) С другой стороны де-факто любое дерево с данными можно рассматривать, как БД по умолчанию...но это все равно все как бы не совсем по теме...</div></div><br>
Нет БД это и есть деревья все современные БД используют B+ деревья <br>
<a class='tag-url' href='http://citforum.ru/programming/theory/sorting/sorting2.shtml#5_1_2' target='_blank'>http://citforum.ru/programming/theory/sort...ng2.shtml#5_1_2</a><br>
<a class='tag-url' href='http://citforum.ru/database/osbd/glava_39.shtml#_4_1_2_1' target='_blank'>http://citforum.ru/database/osbd/glava_39.shtml#_4_1_2_1</a><br>
<br>
У крутых СУБД можно ещё другие структуры использовать.]]></description>
        <author>Pavia</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833039</guid>
        <pubDate>Tue, 23 Jun 2020 16:41:55 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833039</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419028&view=findpost&p=3833036'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-06-23T16:38:12+00:00">23.06.20, 16:38</time></span><div class='quote '>Не обманывайте себе</div></div><br>
 :) <br>
+1 <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-06-23T16:46:50+00:00">23.06.20, 16:46</time></span></span><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><strong class='tag-b'>FasterHarder</strong>, когда ты проспишься - тебе будет стыдно. Не пей больше смелую воду.</div></div>]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833038</guid>
        <pubDate>Tue, 23 Jun 2020 16:41:07 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833038</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>Pavia</strong> не льсти себе, &quot;дружок&quot;). У меня исчерпывающие постановки, иначе будет тотальный мрак с ответами...<br>
последних лет 5, наверное, твоя польза в моих глазах равна 0.0&#33; да, возможно, кому-то ты помогаешь как боженька, возможно...<br>
я за себя говорю)]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833037</guid>
        <pubDate>Tue, 23 Jun 2020 16:40:00 +0000</pubDate>
        <title>Выбор типа дерева (структура данных) для хранения данных в БД</title>
        <link>https://forum.sources.ru/index.php?showtopic=419028&amp;view=findpost&amp;p=3833037</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>Qraizer</strong>, я оценил твои попытки решения  - но, уверяю, это пока не твое :) Когда речь идет о выборках данных - решают две вещи: само проектирование данных и набор запросов ним. Обвязка в виде ЯП - это гораздо вторичнее.]]></description>
        <author>JoeUser</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	