Frage

Ich bin ein eingebetteter Kerl, keine Datenbank Typ. Ich habe ein bestehendes System neu zu gestalten gefragt, die Engpässe an mehreren Stellen hat.

Die Embedded-Gerät basiert auf einem ARM 9 Prozessor mit 220 MHz läuft.

Es sollte eine Datenbank von 50k Einträge werden mit 1k von Daten (max 8 eingereicht), die jeweils (kann 250k erhöhen). Das ungefähre -. Ich kann versuchen, genauere Zahlen zu bekommen, wenn nötig

Sie sind zur Zeit als SqlLite 2 und Planung SqlLite 3 zu bewegen.

Ohne eine Flamme Krieg zu beginnen - ich bin ein absoluter d / b Neuling nur Ratsuchenden - ist, dass die „beste“ Entscheidung? Mir ist klar, dass dies ein „wie lange ein Stück Schnur ist?“ Frage, aber alle Hinweise woudl sehr begrüßt werden. Ich habe nichts dagegen nicht viel gelesen und Forschung, aber hoffte nur, dass du mich zu einem fliegenden Start zu bekommen. Danke.

P. S Wieder insgesamt Rewrite, vielleicht nicht einmal mit Embedded-Linux-Stick, sondern wechseln zu eCos, nicht zu viele Sorgen über eine Zeitumstellung zwischen d / b-Formate. Oh, und Zugriffe sollten selten sein, höchstens eine alle paar Sekunden.


edit: ok, es scheint, sie haben 30k Einträge von nur 5 oder 6 Feldern (kann 100k oder mehr erreichen), aber mindestens 3 von ihnen kann ein Suchschlüssel für einen Datensatz sein. Sie sind liebäugelt mit „überhaupt keine d / b ist, da die Daten sind so einfach“, aber es scheint mir, dass mit mehreren Schlüsseln, wir nicht fancy stuff wie ein quicksort verwenden könnte () Typ Suche (rekursiv, binäre Suche ). Irgendwelche Gedanken auf „no d / b“, nur Datenstrukturen?

Btw, ist ein Schlüssel 800k - nicht sicher, wie gut SqlLite Handles, (? Vielleicht mit "no d / b" ich, dass 800k etwas kleiner Hash haben)

War es hilfreich?

Lösung

Auch SQLite ist die Datenbank von nahezu allen mobilen Betriebssystemen gewählt. Android, iPhone OS und Symbian Schiff mit SQLite, die mich glauben macht, dass Arbeitskräfte ausgegeben wurde es für den Prozessor in dieser Telefone zu optimieren (fast immer ARM).

Andere Tipps

ich mit SQLite halten würde, es ist weit unterstützt und ziemlich reich an Funktionen.

  • Firebird (vormals Interbase) behauptet, gut eingebettet zu arbeiten.

  • HypersonicQL (HQL) ist klein und schnell und beansprucht auch geeignet für eingebettete Anwendung zu sein.

Ach, ich habe keine persönliche Erfahrung entweder Anspruch zu sichern.

SQLite ist wahrscheinlich eine ziemlich sichere Wette. Wenn jedoch die Leistung für Ihre Anwendung wirklich wichtig ist und Sie nicht eine relationale Datenbank benötigen, würde ich vorschlagen, dass Sie einen Blick auf Berkeley DB nehmen link text . Berkeley DB ist kein obwohl relationale Datenbank. Mit anderen Worten, wenn Sie Ihre Daten in verschiedenen Tabellen gruppiert sind, und Sie müssen ständig Ergebnismengen abfragen, die Daten erfordern Bezug von mehr als eine Tabelle, müssen Sie wahrscheinlich eine relationale Datenbank. Berkeley DB ist besser geeignet für so etwas wie Nachschlagetabellen (das heißt, die Daten werden in ein paar Tische organisiert, und Sie müssen keine Daten abzufragen von mehr als einer von ihnen, um das Ergebnis zu erzeugen, setzt Sie möchten). Berkeley DB ist sehr schnell, aber es wird mehr Arbeit auf Ihrer Seite benötigen, um das Beste aus ihm heraus.

Wenn Sie eine Alternative wollen, dann BerkeleyDB ist ein Blick wert. es benutzt von Sleepycat Software besessen werden, ist aber jetzt von Oracle zur Verfügung. es ist ein Barebone-Datenbank-Engine; direkt programmierbar ist (statt einer SQL) Frontend. es ist als Teil des Core-Engine in vielen großen Datenbanken und als Datenbank in vielen Embedded-Geräten verwendet - es verwendete besonders beliebt zu sein für Routing-Tabellen in Routern verwaltet. es neigt dazu, diese Tage mehr in Mode Setups zu erhalten übersehen, aber ich habe es anständig, solide und für die Zahlen zu sein gefunden Sie sprechen es blitzschnell sein kann.

werde ich sqlite3 auch vorschlagen. Es wird von vielen bekannten Anwendung verwendet wird.

SQLite ist ok, aber nicht planen, zu verwenden, wenn Sie einfügen planen, aktualisieren und löschen Daten, die mehr als 6 millon Zeilen umfassen (alle zur gleichen Zeit oder über Teil Teil). Die Sache ist die, dass das VACCUM Schlüsselwort getan werden muss everynow und dann, und es wird eine sehr schwere Engpass für die Leistung, auch wenn es automatisch.

8 Jahre zu spät, aber als Update: Ich habe ziemlich gute Erfahrung mit Raima Database Manager . Wenn Sie einen kleinen Stellfläche db suchen, können sie bis zu 40k bekommen. Einer der Gründe, warum ich RDM mag, ist die Plattformunabhängigkeit, ist es tragbar über 32-Bit- und 64-Bit-Maschinen und zwischen Big-Endian und Little-Endian-Architekturen sowie die Unterstützung für die meisten Betriebssysteme, dh Sie können es auf Eingebettete verwenden können Linux und eCos wie im ersten Beitrag erwähnt. Und es ist die Leistung wird immer besser, wie Sie bessere Hardware und Benutzer hinzufügen im Gegensatz zu SQLite

ich bin nicht vertraut mit embed-System, aber iphone Verwendung arm9 und SQLite als DB

Die 01-11-10 Embedded.com Newsletter ist eine schöne Aufgabe dieses Thema abdeckt. Der Newsletter kann Embedded.com zu finden: Embedded.com Tech Focus Newsletter (1-11-10):. Embedding Datenbanken

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top