Hacker News new | ask | show | jobs
by whalesalad 480 days ago
How do you connect to it and actually use it? Does it behave like a SQL database? Row-based? Column-based? Good for analytical workloads? Document store? Redis/memcached database? What are it's strengths or weaknesses?

Cool accomplishment in and of itself but hard for anyone here to really give you any criticism or feedback without understanding where it excels and how to work with it.

3 comments

> Main focus was on implementing & understanding working the of database

I think this clearly describes what was the goal.

Yep... but there are dozens of different types of databases out there. There is no way to look at this codebase and give any kind of feedback one way or the other without that understanding, particularly with zero usage examples. Which is what the OP is asking about.
> There is no way to look at this codebase and give any kind of feedback

Less than a minute and I know how to use it. It's not complicated. The source code is available and fairly easy. If you can't figure out how to use it in a trivial amount of time, you aren't going to be able to offer anything of value. When did HN go from being about interesting stuff to making bold, ignorant statements like "There is no way to look at this codebase and give any kind of feedback one way or the other without that understanding."

You should know better.

It does not seem to speak SQL:

    $ git clone git@github.com:Sahilb315/AtomixDB.git
    Cloning into 'AtomixDB'...
    $ cd AtomixDB/
    $ go run .
    Welcome to AtomixDB
    Available Commands:
      CREATE       - Create a new table
      INSERT       - Add a record to a table
      DELETE       - Delete a record from a table
      GET          - Retrieve a record from a table
      UPDATE       - Update a record in a table
      BEGIN        - Begin new transaction
      COMMIT       - Commit transaction
      ABORT        - Rollback transaction
      EXIT         - Exit the program
    
    > create
    Enter table name: foo
    Enter column names (comma-separated): bar,baz
    Enter column types (comma-separated as numbers): 1,2
    Enter indexes (format: col1+col2,col3, ... or leave empty):
    Table 'foo' created successfully.
    > get
    Enter table name: foo
    
    Select query type:
    1. Index lookup (primary/secondary key)
    2. Range query
    3. Column filter
    Enter choice (1, 2 or 3):

It looks like records are stored in rows: https://github.com/Sahilb315/AtomixDB/blob/64c95afa8e574595c...

I do find the source to be well organized and quite readable. Especially if you runs the commands in the cli and then trace how they are each implemented.

yes man it is currently a sql db, have to work on adding query language thanks for checking it out
it is kind of a sql db but currently does not have the query lang (sql lang) & data is stored in tables similar to other relational DBs. Still have a lot of stuff to add & fix Will add more detail to it